JPH0877173A - 文字列修正システムとその方法 - Google Patents
文字列修正システムとその方法Info
- Publication number
- JPH0877173A JPH0877173A JP6208307A JP20830794A JPH0877173A JP H0877173 A JPH0877173 A JP H0877173A JP 6208307 A JP6208307 A JP 6208307A JP 20830794 A JP20830794 A JP 20830794A JP H0877173 A JPH0877173 A JP H0877173A
- Authority
- JP
- Japan
- Prior art keywords
- character string
- dictionary
- entry
- character
- input character
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/232—Orthographic correction, e.g. spell checking or vowelisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Machine Translation (AREA)
- Document Processing Apparatus (AREA)
Abstract
(57)【要約】
【目的】 入力文字列が多数の連続する誤字のような深
刻なエラーを含む場合に、これを修正して入力文字列を
正しく認識する文字列修正システムとその方法を提供す
る。 【構成】 検索手段2は、入力される文字を1文字ずつ
辞書格納手段1に格納されたTRIEテーブルの入力文
字のエントリと比較して、入力文字列に対応する辞書の
エントリを検索する。入力文字列中の文字がTRIEテ
ーブルのエントリと一致しなくなると、スキップ手段3
が入力文字列内の次の有効な疑似シラブルボーダーを求
めて、それに対応するTRIEテーブルの候補を求め
る。検索手段2は、求められた疑似シラブルボーダー以
降の文字列をこれらのTRIEテーブルの候補を用いて
検索し、入力文字列に対応する辞書のエントリを求め
て、認識語として出力する。
刻なエラーを含む場合に、これを修正して入力文字列を
正しく認識する文字列修正システムとその方法を提供す
る。 【構成】 検索手段2は、入力される文字を1文字ずつ
辞書格納手段1に格納されたTRIEテーブルの入力文
字のエントリと比較して、入力文字列に対応する辞書の
エントリを検索する。入力文字列中の文字がTRIEテ
ーブルのエントリと一致しなくなると、スキップ手段3
が入力文字列内の次の有効な疑似シラブルボーダーを求
めて、それに対応するTRIEテーブルの候補を求め
る。検索手段2は、求められた疑似シラブルボーダー以
降の文字列をこれらのTRIEテーブルの候補を用いて
検索し、入力文字列に対応する辞書のエントリを求め
て、認識語として出力する。
Description
【0001】
【産業上の利用分野】本発明は文書処理方式に係り、さ
らに詳しくは、入力文書の文字列(記号等を含むキャラ
クタ・ストリング)が誤りを含んでいるときに代わりの
正しい文字列を求める文字列修正システムとその方法に
関する。
らに詳しくは、入力文書の文字列(記号等を含むキャラ
クタ・ストリング)が誤りを含んでいるときに代わりの
正しい文字列を求める文字列修正システムとその方法に
関する。
【0002】
【従来の技術】入力文を単語単位に分割することを目的
とする形態素解析は、文書処理(あるいは自然言語処
理)における最も基本的なステップであり、近年の研究
課題となっている。従来の形態素解析においては、主と
して辞書検索に焦点が当てられている。例えば欧文処理
では、プロセッサは入力文の作成者がスペースや句読点
で区切った部分をそのまま単語として受け入れ、単に辞
書内で対応する単語を探している。このとき、近似法等
を用いてスペルエラーを修正することもある。
とする形態素解析は、文書処理(あるいは自然言語処
理)における最も基本的なステップであり、近年の研究
課題となっている。従来の形態素解析においては、主と
して辞書検索に焦点が当てられている。例えば欧文処理
では、プロセッサは入力文の作成者がスペースや句読点
で区切った部分をそのまま単語として受け入れ、単に辞
書内で対応する単語を探している。このとき、近似法等
を用いてスペルエラーを修正することもある。
【0003】しかしながら、一般の文字がそうであるよ
うにスペースや句読点もまた、挿入位置が誤っていた
り、入れ忘れがあったりする。また、中国語や日本語等
の言語ではスペースにより単語が区切られることはな
く、さらにドイツ語やオランダ語等の言語は辞書内の単
語をつなぎ合わせて新規の単語を創り出す大きな自由度
を持っている。このため、スペースや句読点が常に正し
い単語の境界を示しているという保証はない。
うにスペースや句読点もまた、挿入位置が誤っていた
り、入れ忘れがあったりする。また、中国語や日本語等
の言語ではスペースにより単語が区切られることはな
く、さらにドイツ語やオランダ語等の言語は辞書内の単
語をつなぎ合わせて新規の単語を創り出す大きな自由度
を持っている。このため、スペースや句読点が常に正し
い単語の境界を示しているという保証はない。
【0004】もう1つの形態素解析法は、入力文を1文
字ずつ読み取り、辞書内の単語と1文字ずつ比較する方
法である。この方法によれば、最初から単語の境界を意
識することなく記号等を含む入力文字列を処理すること
ができる。ある位置までに読み取った文字列が辞書内の
単語に相当し、残りの入力文字を追加すると辞書内の単
語と一致しないとき、その位置が1つの単語の終わりで
あると判断される。
字ずつ読み取り、辞書内の単語と1文字ずつ比較する方
法である。この方法によれば、最初から単語の境界を意
識することなく記号等を含む入力文字列を処理すること
ができる。ある位置までに読み取った文字列が辞書内の
単語に相当し、残りの入力文字を追加すると辞書内の単
語と一致しないとき、その位置が1つの単語の終わりで
あると判断される。
【0005】このようなメカニズムは幾通りか考えられ
るが、概念的に最も簡単なものは、辞書全体をメモリに
格納しておき、入力単語に一致しない単語を順次破棄す
るメカニズムである。
るが、概念的に最も簡単なものは、辞書全体をメモリに
格納しておき、入力単語に一致しない単語を順次破棄す
るメカニズムである。
【0006】しかし、最も広く用いられている方法は、
辞書内の単語をTRIEテーブル(検索テーブル)と呼
ばれる多数のテーブルに編成し直して、これらのテーブ
ルの間に参照関係を設定する方法である。この場合、あ
るテーブルは辞書内の全ての単語の最初の文字を有する
ことになる。例えば、このテーブルの文字「a」のエン
トリは、「a」で始まる全ての単語の2番目の文字を有
するもう1つのテーブルをポイントする。この方法は、
TRIE法として広く知られている(Donald E. Knuth.
The Art of Computer Programming. Volume 3: Storin
g and Searching. Addison-Wesley Series in Computer
Science and Information Processing.Addison-Wesley
Company, Reading(Mass.), 1973.) 。
辞書内の単語をTRIEテーブル(検索テーブル)と呼
ばれる多数のテーブルに編成し直して、これらのテーブ
ルの間に参照関係を設定する方法である。この場合、あ
るテーブルは辞書内の全ての単語の最初の文字を有する
ことになる。例えば、このテーブルの文字「a」のエン
トリは、「a」で始まる全ての単語の2番目の文字を有
するもう1つのテーブルをポイントする。この方法は、
TRIE法として広く知られている(Donald E. Knuth.
The Art of Computer Programming. Volume 3: Storin
g and Searching. Addison-Wesley Series in Computer
Science and Information Processing.Addison-Wesley
Company, Reading(Mass.), 1973.) 。
【0007】図16および図17は、従来のTRIE法
におけるTRIEテーブルの例とそれらの関係を示して
いる。これらのTRIEテーブルにおいて、第1列の入
力文字は、単語の中でそれらのTRIEテーブルが表す
特定の位置の文字を表す。図16および図17のTRI
Eテーブルは入力文字としてアルファベットのみを格納
しているが、必ずしもこれに限られることはなく、数字
や句読点、あるいはスペース等も入力文字として用いら
れる。図16のTRIEテーブル"root"は、入力文字と
して全ての単語の最初の文字、つまり全てのアルファベ
ットを格納している最も上位のTRIEテーブルであ
る。
におけるTRIEテーブルの例とそれらの関係を示して
いる。これらのTRIEテーブルにおいて、第1列の入
力文字は、単語の中でそれらのTRIEテーブルが表す
特定の位置の文字を表す。図16および図17のTRI
Eテーブルは入力文字としてアルファベットのみを格納
しているが、必ずしもこれに限られることはなく、数字
や句読点、あるいはスペース等も入力文字として用いら
れる。図16のTRIEテーブル"root"は、入力文字と
して全ての単語の最初の文字、つまり全てのアルファベ
ットを格納している最も上位のTRIEテーブルであ
る。
【0008】第2列の辞書の対応語は、この位置までに
読み取られた文字列が辞書のエントリに対応するか否か
を表す。図16および図17の例では、文字列が辞書の
エントリに対応するとき、そのエントリの品詞名を辞書
の対応語として格納している。例えば、"Art" 、"Pro
n"、"N" 、"Prop. N" 、"Prep"は、それぞれ冠詞、代名
詞、普通名詞、固有名詞、前置詞を表す。また、対応す
るエントリがないときは、空集合を表すシンボル "φ"
が格納される。
読み取られた文字列が辞書のエントリに対応するか否か
を表す。図16および図17の例では、文字列が辞書の
エントリに対応するとき、そのエントリの品詞名を辞書
の対応語として格納している。例えば、"Art" 、"Pro
n"、"N" 、"Prop. N" 、"Prep"は、それぞれ冠詞、代名
詞、普通名詞、固有名詞、前置詞を表す。また、対応す
るエントリがないときは、空集合を表すシンボル "φ"
が格納される。
【0009】図17(a)に示すTRIEテーブル"r-"
の入力文字"a" には、ラジウムの化学記号の"ra"(N )
とエジプトの神の名前である"ra"(Prop. N )の2つの
辞書のエントリが対応している。
の入力文字"a" には、ラジウムの化学記号の"ra"(N )
とエジプトの神の名前である"ra"(Prop. N )の2つの
辞書のエントリが対応している。
【0010】第3列のTRIEテーブルリンクは、第1
列の入力文字を処理して到達する位置に対応するTRI
Eテーブルの名称を表し、後続するTRIEテーブルと
の接続関係を与えている。例えば、図16のTRIEテ
ーブル"root"のTRIEテーブルリンク"r-"はTRIE
テーブル"r-"を指し、TRIEテーブル"r-"のTRIE
テーブルリンク"rd-" は図17(b)に示すTRIEテ
ーブル"rd-" を指し、TRIEテーブル"rd-" のTRI
Eテーブルリンク"rd.-"は図17(c)に示すTRIE
テーブル"rd.-"を指している。
列の入力文字を処理して到達する位置に対応するTRI
Eテーブルの名称を表し、後続するTRIEテーブルと
の接続関係を与えている。例えば、図16のTRIEテ
ーブル"root"のTRIEテーブルリンク"r-"はTRIE
テーブル"r-"を指し、TRIEテーブル"r-"のTRIE
テーブルリンク"rd-" は図17(b)に示すTRIEテ
ーブル"rd-" を指し、TRIEテーブル"rd-" のTRI
Eテーブルリンク"rd.-"は図17(c)に示すTRIE
テーブル"rd.-"を指している。
【0011】図18は、TRIE法の基本処理を示すフ
ローチャートである。以下、図18を参照しながら、文
字列"Rd. "を例にとり基本処理を説明する。処理が開始
されると、まずTRIEテーブル"root"が読み込まれ
(ステップS1)、入力文字列の最初の文字"R" が読み
込まれる(ステップS2)。次に、読み込まれた文字が
TRIEテーブル"root"の入力文字のエントリにあるか
どうか検索され(ステップS3)、文字"R" ("r" )は
TRIEテーブル"root"にあるので、対応するTRIE
テーブルリンクが指すTRIEテーブル"r-"が読み込ま
れる(ステップS7)。
ローチャートである。以下、図18を参照しながら、文
字列"Rd. "を例にとり基本処理を説明する。処理が開始
されると、まずTRIEテーブル"root"が読み込まれ
(ステップS1)、入力文字列の最初の文字"R" が読み
込まれる(ステップS2)。次に、読み込まれた文字が
TRIEテーブル"root"の入力文字のエントリにあるか
どうか検索され(ステップS3)、文字"R" ("r" )は
TRIEテーブル"root"にあるので、対応するTRIE
テーブルリンクが指すTRIEテーブル"r-"が読み込ま
れる(ステップS7)。
【0012】次に、残りの文字列の最初の文字"d" が読
み込まれ(ステップS2)、TRIEテーブル"r-"の中
で対応するTRIEテーブルリンクが指すTRIEテー
ブル"rd-" が読み込まれる(ステップS7)。さらに、
文字"." が読み込まれ(ステップS2)、TRIEテー
ブル"rd-" の中で対応するTRIEテーブルリンクが指
すTRIEテーブル"rd.-"が読み込まれる(ステップS
7)。
み込まれ(ステップS2)、TRIEテーブル"r-"の中
で対応するTRIEテーブルリンクが指すTRIEテー
ブル"rd-" が読み込まれる(ステップS7)。さらに、
文字"." が読み込まれ(ステップS2)、TRIEテー
ブル"rd-" の中で対応するTRIEテーブルリンクが指
すTRIEテーブル"rd.-"が読み込まれる(ステップS
7)。
【0013】ここでスペース" " が読み込まれるが(ス
テップS2)、TRIEテーブル"rd.-"は空なので対応
するエントリがなく、1つ前までに読み込まれた文字
列"Rd." が辞書のエントリにあるかどうか検索される
(ステップS4)。文字列"Rd."は"Road"の略語であり
辞書に登録されているので、単語として認識され(ステ
ップS8)、処理を終了する。
テップS2)、TRIEテーブル"rd.-"は空なので対応
するエントリがなく、1つ前までに読み込まれた文字
列"Rd." が辞書のエントリにあるかどうか検索される
(ステップS4)。文字列"Rd."は"Road"の略語であり
辞書に登録されているので、単語として認識され(ステ
ップS8)、処理を終了する。
【0014】TRIEテーブル"rd.-"がエントリを持た
ないのは、文字列"rd." で始まってさらに文字が続く単
語が辞書に登録されていないからである。ステップS4
で辞書のエントリにないときは、読み込まれた文字列の
最後の文字が1つずつ破棄され(ステップS5)、残っ
た文字列が辞書のエントリの1つと一致したとき(ステ
ップS6、YES)、単語として認識される(ステップ
S8)。
ないのは、文字列"rd." で始まってさらに文字が続く単
語が辞書に登録されていないからである。ステップS4
で辞書のエントリにないときは、読み込まれた文字列の
最後の文字が1つずつ破棄され(ステップS5)、残っ
た文字列が辞書のエントリの1つと一致したとき(ステ
ップS6、YES)、単語として認識される(ステップ
S8)。
【0015】例えば、"catch" とともに"catch 22"とい
う語がエントリとして辞書に登録されている場合、TR
IEテーブル"catch-"の入力文字のエントリには" "
(スペース)があるので、文字列"catch the dog" が入
力されたとき、文字"t" まで連続して読み込まれる(ス
テップS2)。ところが、"t" はTRIEテーブル"cat
ch -" のエントリにはなく(ステップS3、NO)、文
字列"catch "は辞書のエントリにない(ステップS4、
NO)。そこで、"catch "の最後の文字" " が破棄され
(ステップS5)、文字列"catch" が単語として認識さ
れる(ステップS8)。
う語がエントリとして辞書に登録されている場合、TR
IEテーブル"catch-"の入力文字のエントリには" "
(スペース)があるので、文字列"catch the dog" が入
力されたとき、文字"t" まで連続して読み込まれる(ス
テップS2)。ところが、"t" はTRIEテーブル"cat
ch -" のエントリにはなく(ステップS3、NO)、文
字列"catch "は辞書のエントリにない(ステップS4、
NO)。そこで、"catch "の最後の文字" " が破棄され
(ステップS5)、文字列"catch" が単語として認識さ
れる(ステップS8)。
【0016】このようなシステムでスペルエラーを扱う
メカニズムは、一般に1つの入力文字がTRIEテーブ
ルのエントリと一致しないことがトリガとなって起動さ
れる。この場合最も簡単な対処法は、その入力文字が誤
字であると仮定して、その位置にあてはまる他の文字を
TRIEテーブルの中で探すことである。他の可能性と
しては、その入力文字が現在吟味している文字列にとっ
て余分な文字であると仮定して、次の入力文字を代わり
に採用したり、単語の中の文字が1つ抜けていると仮定
したりすることなどが考えられる。
メカニズムは、一般に1つの入力文字がTRIEテーブ
ルのエントリと一致しないことがトリガとなって起動さ
れる。この場合最も簡単な対処法は、その入力文字が誤
字であると仮定して、その位置にあてはまる他の文字を
TRIEテーブルの中で探すことである。他の可能性と
しては、その入力文字が現在吟味している文字列にとっ
て余分な文字であると仮定して、次の入力文字を代わり
に採用したり、単語の中の文字が1つ抜けていると仮定
したりすることなどが考えられる。
【0017】したがって、スペルエラーの場合の対処法
は複数あるが、一般には処理を続けることにより間違っ
た代替候補が除かれていく。図19および図20は、従
来のTRIE法におけるスペルエラー修正処理を示すフ
ローチャートである。図19および図20において、ス
テップS11〜S116とステップS18、S19、S
22の処理は、図18の基本処理と同様である。ただ
し、ステップS13およびS14では、基本処理と異な
り、一般に複数のTRIEテーブルが処理対象となる。
これは、スペルエラーの後では多数のTRIEテーブル
をアクセスする可能性があるからである。
は複数あるが、一般には処理を続けることにより間違っ
た代替候補が除かれていく。図19および図20は、従
来のTRIE法におけるスペルエラー修正処理を示すフ
ローチャートである。図19および図20において、ス
テップS11〜S116とステップS18、S19、S
22の処理は、図18の基本処理と同様である。ただ
し、ステップS13およびS14では、基本処理と異な
り、一般に複数のTRIEテーブルが処理対象となる。
これは、スペルエラーの後では多数のTRIEテーブル
をアクセスする可能性があるからである。
【0018】図19のステップS14で文字列が辞書の
エントリにないことが分かると、図20のステップS1
7において、最後に読み込まれた入力文字がスペルエラ
ーかどうか判定される。スペルエラーと仮定されると、
そのときのTRIEテーブル内で1つ以上の代わりの文
字が選ばれ(ステップS20)、対応する1つ以上の後
続のTRIEテーブルが読み込まれる(ステップS2
1)。そして、ステップS12以降の処理が繰り返さ
れ、正しい辞書のエントリが検索される。
エントリにないことが分かると、図20のステップS1
7において、最後に読み込まれた入力文字がスペルエラ
ーかどうか判定される。スペルエラーと仮定されると、
そのときのTRIEテーブル内で1つ以上の代わりの文
字が選ばれ(ステップS20)、対応する1つ以上の後
続のTRIEテーブルが読み込まれる(ステップS2
1)。そして、ステップS12以降の処理が繰り返さ
れ、正しい辞書のエントリが検索される。
【0019】
【発明が解決しようとする課題】しかしながら上述のよ
うな従来のスペルエラー修正処理方法には、例えば誤字
が1つだけの場合などの比較的小さなエラーしか扱うこ
とができないという問題がある。システムが、2つある
いは3つ以上の連続した誤字を含むエラーなどのより大
きなエラーを計算に入れなければならない場合、可能な
代替文字の数が膨大となり、処理が許容できないほどに
遅くなる。
うな従来のスペルエラー修正処理方法には、例えば誤字
が1つだけの場合などの比較的小さなエラーしか扱うこ
とができないという問題がある。システムが、2つある
いは3つ以上の連続した誤字を含むエラーなどのより大
きなエラーを計算に入れなければならない場合、可能な
代替文字の数が膨大となり、処理が許容できないほどに
遅くなる。
【0020】本発明は、記号等を含む入力文字列の中の
エラーが、多数の連続する誤字を含んでいたり計算外の
タイプであるような深刻なエラーである場合に、これを
修正して入力文字列を正しく認識することを目的とす
る。
エラーが、多数の連続する誤字を含んでいたり計算外の
タイプであるような深刻なエラーである場合に、これを
修正して入力文字列を正しく認識することを目的とす
る。
【0021】
【課題を解決するための手段】本発明は、エラーを含む
文字列を修正して、代わりの正しい文字列を求める文字
列修正システムとその方法である。図1は本発明の文字
列修正システムの原理図である。
文字列を修正して、代わりの正しい文字列を求める文字
列修正システムとその方法である。図1は本発明の文字
列修正システムの原理図である。
【0022】本発明の文字列修正システムは、入力文字
列と辞書のエントリを比較して形態素解析を行う情報処
理装置における文字列修正システムであって、辞書格納
手段1、検索手段2、およびスキップ手段3を備える。
列と辞書のエントリを比較して形態素解析を行う情報処
理装置における文字列修正システムであって、辞書格納
手段1、検索手段2、およびスキップ手段3を備える。
【0023】辞書格納手段1は、入力文字列中の文字と
比較される入力文字のエントリを持つ辞書を格納する。
検索手段2は、辞書格納手段1に格納された辞書を検索
して、入力文字列に対応する辞書のエントリを求め、検
索結果である認識語として出力する。
比較される入力文字のエントリを持つ辞書を格納する。
検索手段2は、辞書格納手段1に格納された辞書を検索
して、入力文字列に対応する辞書のエントリを求め、検
索結果である認識語として出力する。
【0024】スキップ手段3は、入力文字列中の文字が
入力文字のエントリと一致しないとき、その入力文字列
の一部と辞書の一部をスキップして一致する位置を求
め、検索手段2にその一致する位置からの検索を行わせ
る。
入力文字のエントリと一致しないとき、その入力文字列
の一部と辞書の一部をスキップして一致する位置を求
め、検索手段2にその一致する位置からの検索を行わせ
る。
【0025】図1の辞書格納手段1は、図2の実施例の
構成図におけるメイン・メモリ11に対応し、検索手段
2およびスキップ手段3はプロセッサ13に対応する。
また、辞書格納手段1に格納される辞書はコンパイルさ
れた辞書17に対応し、例えば検索テーブルの1種であ
るTRIEテーブルを含む。
構成図におけるメイン・メモリ11に対応し、検索手段
2およびスキップ手段3はプロセッサ13に対応する。
また、辞書格納手段1に格納される辞書はコンパイルさ
れた辞書17に対応し、例えば検索テーブルの1種であ
るTRIEテーブルを含む。
【0026】
【作用】辞書格納手段1が、例えばTRIEテーブルの
ような入力文字列と辞書のエントリを1文字ずつ比較で
きる形式の辞書を格納しているので、入力文字列が与え
られたときの検索手段2による検索処理が容易になる。
ような入力文字列と辞書のエントリを1文字ずつ比較で
きる形式の辞書を格納しているので、入力文字列が与え
られたときの検索手段2による検索処理が容易になる。
【0027】入力文字列がエラーを含まないときのよう
な通常の検索が続けられなくなると、スキップ手段3
が、入力文字列の一部と辞書の一部を適当にスキップし
て、通常の検索が再び可能になる入力文字列中の位置を
求める。
な通常の検索が続けられなくなると、スキップ手段3
が、入力文字列の一部と辞書の一部を適当にスキップし
て、通常の検索が再び可能になる入力文字列中の位置を
求める。
【0028】検索手段2は、スキップ手段3が求めた位
置から検索を再開して、入力文字列に対応する認識語を
得ることができる。入力文字列が連続する多数の誤字の
ような深刻なエラーを含む場合でも、そのエラー部分を
スキップして、スキップ先の位置に対応する辞書を用い
れば、簡単に入力文字列を修正することができる。
置から検索を再開して、入力文字列に対応する認識語を
得ることができる。入力文字列が連続する多数の誤字の
ような深刻なエラーを含む場合でも、そのエラー部分を
スキップして、スキップ先の位置に対応する辞書を用い
れば、簡単に入力文字列を修正することができる。
【0029】また、多数の誤字等の1つ1つについて代
替文字等の可能性を調べる必要がなく、エラーを含む入
力文字列の処理が高速になる。
替文字等の可能性を調べる必要がなく、エラーを含む入
力文字列の処理が高速になる。
【0030】
【実施例】以下、図面を参照しながら、本発明の実施例
を説明する。図2は、本発明の一実施例の文字列修正シ
ステムの構成図である。図2の文字列修正システムは、
メイン・メモリ11、テンポラリ・メモリ12、プロセ
ッサ13、入力部14、および出力部15を備える。
を説明する。図2は、本発明の一実施例の文字列修正シ
ステムの構成図である。図2の文字列修正システムは、
メイン・メモリ11、テンポラリ・メモリ12、プロセ
ッサ13、入力部14、および出力部15を備える。
【0031】本実施例においては、プロセッサ13はメ
イン・メモリ11に格納された辞書16のエントリをテ
ンポラリ・メモリ12を用いてコンパイルして、新規の
TRIEテーブルを生成し、コンパイルされた辞書17
としてメイン・メモリ11に格納しておく。また、プロ
セッサ13は入力部14に入力される文字列(入力文字
列)の中の文字を順に読み込み、コンパイルされた辞書
17を検索して、該当する対応語を出力部15に送る。
出力部15は送られてきた対応語を認識語として、例え
ば図示されていないディスプレイ装置やプリンタ、ある
いは文書処理システムにおける次段の処理装置等に出力
する。
イン・メモリ11に格納された辞書16のエントリをテ
ンポラリ・メモリ12を用いてコンパイルして、新規の
TRIEテーブルを生成し、コンパイルされた辞書17
としてメイン・メモリ11に格納しておく。また、プロ
セッサ13は入力部14に入力される文字列(入力文字
列)の中の文字を順に読み込み、コンパイルされた辞書
17を検索して、該当する対応語を出力部15に送る。
出力部15は送られてきた対応語を認識語として、例え
ば図示されていないディスプレイ装置やプリンタ、ある
いは文書処理システムにおける次段の処理装置等に出力
する。
【0032】図3から図5までは、本実施例における文
字列修正処理の一例であるスペルエラー修正処理を示す
フローチャートであり、図6から図12までは、本実施
例においてコンパイルされた辞書17に含まれるTRI
Eテーブルの例を示している。図6から図12におい
て、辞書の対応語の列の"V" 、"Adj" 、"Adv" は、それ
ぞれ動詞、形容詞、副詞を表し、他は図16、17と同
様である。また図17(c)と同様に、エントリを1つ
も持たないTRIEテーブルは、それ以上の文字が続く
ような対応語が辞書のエントリにないことを表す。
字列修正処理の一例であるスペルエラー修正処理を示す
フローチャートであり、図6から図12までは、本実施
例においてコンパイルされた辞書17に含まれるTRI
Eテーブルの例を示している。図6から図12におい
て、辞書の対応語の列の"V" 、"Adj" 、"Adv" は、それ
ぞれ動詞、形容詞、副詞を表し、他は図16、17と同
様である。また図17(c)と同様に、エントリを1つ
も持たないTRIEテーブルは、それ以上の文字が続く
ような対応語が辞書のエントリにないことを表す。
【0033】本実施例では、最初にスペルエラーを含む
文字列"reprentative of" が入力された場合を例にと
り、プロセッサ13によるスペルエラー修正処理につい
て説明する。"reprentative of" は正しい文字列"repre
sentative of" から2つの文字"se"が欠落しており、深
刻なエラーを含んでいると考えられる。
文字列"reprentative of" が入力された場合を例にと
り、プロセッサ13によるスペルエラー修正処理につい
て説明する。"reprentative of" は正しい文字列"repre
sentative of" から2つの文字"se"が欠落しており、深
刻なエラーを含んでいると考えられる。
【0034】図3において処理が開始されると、まずプ
ロセッサ13は図16のようなTRIEテーブル"root"
を読み込み(ステップS31)、入力文字列の最初の文
字を読み込む(ステップS32)。例えば"reprentativ
e of" の場合は、最初の文字"r" が読み込まれる。
ロセッサ13は図16のようなTRIEテーブル"root"
を読み込み(ステップS31)、入力文字列の最初の文
字を読み込む(ステップS32)。例えば"reprentativ
e of" の場合は、最初の文字"r" が読み込まれる。
【0035】次に、読み込んだ文字が読み込んだTRI
Eテーブルの入力文字のエントリにあるかどうかを検索
し(ステップS33)、TRIEテーブルのエントリに
あれば、そのエントリに対応するTRIEテーブルリン
クが指す後続のTRIEテーブルを読み込む(ステップ
S35)。ここで、文字"r" はTRIEテーブル"root"
のエントリにあるので、対応するTRIEテーブル"r-"
が読み込まれる(ステップS35)。
Eテーブルの入力文字のエントリにあるかどうかを検索
し(ステップS33)、TRIEテーブルのエントリに
あれば、そのエントリに対応するTRIEテーブルリン
クが指す後続のTRIEテーブルを読み込む(ステップ
S35)。ここで、文字"r" はTRIEテーブル"root"
のエントリにあるので、対応するTRIEテーブル"r-"
が読み込まれる(ステップS35)。
【0036】次に、プロセッサ13は残りの文字列の最
初の文字を読み込み(ステップS32)、ステップS3
5で読み込んだTRIEテーブルのエントリにあるかど
うか検索する(ステップS33)。ここでは、入力文字
列の2番目の文字である"e"が読み込まれ(ステップS
32)、TRIEテーブル"r-"の中で対応するTRIE
テーブルリンクが指すTRIEテーブル"re-" が読み込
まれる(ステップS35)。
初の文字を読み込み(ステップS32)、ステップS3
5で読み込んだTRIEテーブルのエントリにあるかど
うか検索する(ステップS33)。ここでは、入力文字
列の2番目の文字である"e"が読み込まれ(ステップS
32)、TRIEテーブル"r-"の中で対応するTRIE
テーブルリンクが指すTRIEテーブル"re-" が読み込
まれる(ステップS35)。
【0037】こうして、入力文字列が順番に処理されて
いき、図6(b)に示すTRIEテーブル"repre-"が読
み込まれ、次の入力文字"n" が読み込まれたとき、文
字"n"がTRIEテーブル"repre-"の入力文字のエント
リにないことが分かる(ステップS33、NO)。
いき、図6(b)に示すTRIEテーブル"repre-"が読
み込まれ、次の入力文字"n" が読み込まれたとき、文
字"n"がTRIEテーブル"repre-"の入力文字のエント
リにないことが分かる(ステップS33、NO)。
【0038】そこで、1つ前までに読み込んだ文字列が
辞書のエントリにあるかどうかを調べる(ステップS3
4)。ところが、図6(a)に示すTRIEテーブル"r
epr-" の入力文字"e" の行の辞書の対応語は空(空集
合)なので、文字列"repre" が辞書のエントリにないこ
とは明らかである(ステップS34、NO)。
辞書のエントリにあるかどうかを調べる(ステップS3
4)。ところが、図6(a)に示すTRIEテーブル"r
epr-" の入力文字"e" の行の辞書の対応語は空(空集
合)なので、文字列"repre" が辞書のエントリにないこ
とは明らかである(ステップS34、NO)。
【0039】そこで、スペルエラーが発生したかどうか
を判定する(図4、ステップS37)。このように処理
中に予期しない障害が発生したとき、これがスペルエラ
ーによるものであるか否かを判定することは、一般に非
常に複雑な問題であり、判定方法は幾通りも考えられ
る。本発明ではいずれの判定方法をも採用することがで
きるが、ここでは、前の認識語を出力した後の最初の判
定においてはスペルエラーが発生したと仮定する(ステ
ップS37、YES)。
を判定する(図4、ステップS37)。このように処理
中に予期しない障害が発生したとき、これがスペルエラ
ーによるものであるか否かを判定することは、一般に非
常に複雑な問題であり、判定方法は幾通りも考えられ
る。本発明ではいずれの判定方法をも採用することがで
きるが、ここでは、前の認識語を出力した後の最初の判
定においてはスペルエラーが発生したと仮定する(ステ
ップS37、YES)。
【0040】そこで次に、発生したスペルエラーは回復
可能かどうかを判定する(図5、ステップS42)。こ
こでも判定方法は幾通りか考えられるが、最初の判定な
ので回復可能なエラーであると仮定する(ステップS4
2、YES)。
可能かどうかを判定する(図5、ステップS42)。こ
こでも判定方法は幾通りか考えられるが、最初の判定な
ので回復可能なエラーであると仮定する(ステップS4
2、YES)。
【0041】スペルエラーが回復可能であるとすると、
次に図20のステップS20、S21と同様に、TRI
Eテーブルの入力文字のエントリから代わりの文字を選
び(ステップS47)、対応する後続のTRIEテーブ
ルを読み込んで(ステップS48)、ステップS32以
降の処理を繰り返す。
次に図20のステップS20、S21と同様に、TRI
Eテーブルの入力文字のエントリから代わりの文字を選
び(ステップS47)、対応する後続のTRIEテーブ
ルを読み込んで(ステップS48)、ステップS32以
降の処理を繰り返す。
【0042】ここでは、入力文字"n" の代わりにTRI
Eテーブル"repre-"の2つの入力文字"h" と"s" が選ば
れ(ステップS47)、図6(c)に示すTRIEテー
ブル"repreh-" と図6(d)に示すTRIEテーブル"r
epres-" が読み込まれる(ステップS48)。しかし、
次に読み込まれた文字"t" はこれらのTRIEテーブル
のエントリにはなく(ステップS33、NO)、文字
列"repreh"と"repres"は辞書のエントリにないので(ス
テップS34、NO)、再びスペルエラーと判定され
(ステップS37、YES)、ステップS42以降の処
理が行われる。
Eテーブル"repre-"の2つの入力文字"h" と"s" が選ば
れ(ステップS47)、図6(c)に示すTRIEテー
ブル"repreh-" と図6(d)に示すTRIEテーブル"r
epres-" が読み込まれる(ステップS48)。しかし、
次に読み込まれた文字"t" はこれらのTRIEテーブル
のエントリにはなく(ステップS33、NO)、文字
列"repreh"と"repres"は辞書のエントリにないので(ス
テップS34、NO)、再びスペルエラーと判定され
(ステップS37、YES)、ステップS42以降の処
理が行われる。
【0043】スペルエラーが回復可能と仮定した結果入
力文字列が認識できなかったので、このエラーは回復不
可能と決定し(ステップS42、NO)、ステップS4
3以降の疑似シラブルモードに移行する。
力文字列が認識できなかったので、このエラーは回復不
可能と決定し(ステップS42、NO)、ステップS4
3以降の疑似シラブルモードに移行する。
【0044】疑似シラブルモードにおいては、プロセッ
サ13はまず、読み込んだ文字列をスペルエラーが発生
する前の状態に戻す(ステップS43)。この処理によ
り、入力文字列のどこまでを処理したかを示す処理ポイ
ンタが、最初のエラーが発生する前の位置まで戻され
る。ここでは文字列"repre" の状態に戻され、"ntative
of"は未処理の文字列とみなされる。
サ13はまず、読み込んだ文字列をスペルエラーが発生
する前の状態に戻す(ステップS43)。この処理によ
り、入力文字列のどこまでを処理したかを示す処理ポイ
ンタが、最初のエラーが発生する前の位置まで戻され
る。ここでは文字列"repre" の状態に戻され、"ntative
of"は未処理の文字列とみなされる。
【0045】次に、未処理の文字列を1文字ずつ読み取
って、次の有効な疑似シラブルの境界(疑似シラブルボ
ーダー)までスキップする(ステップS44)。本発明
で用いられる疑似シラブルは、通常のシラブル(音節)
と異なり、システムの使用者がその境界を任意に定義す
ることができる。本実施例においては、一例として子音
とそれに続く母音の間の位置を機械的に疑似シラブルボ
ーダーと定義する。
って、次の有効な疑似シラブルの境界(疑似シラブルボ
ーダー)までスキップする(ステップS44)。本発明
で用いられる疑似シラブルは、通常のシラブル(音節)
と異なり、システムの使用者がその境界を任意に定義す
ることができる。本実施例においては、一例として子音
とそれに続く母音の間の位置を機械的に疑似シラブルボ
ーダーと定義する。
【0046】もちろん、これとは逆に母音とそれに続く
子音の間の位置を疑似シラブルボーダーと定義すること
も可能であり、またその他のいかなる定義を用いてもか
まわない。また、ステップS44で決める次の有効な疑
似シラブルボーダーは、必ずしも次の疑似シラブルボー
ダーに一致するわけではない。次の疑似シラブルボーダ
ーがエラーの発生した領域にある場合は有効な疑似シラ
ブルボーダーとはみなされず、その次の疑似シラブルボ
ーダーが採用される。
子音の間の位置を疑似シラブルボーダーと定義すること
も可能であり、またその他のいかなる定義を用いてもか
まわない。また、ステップS44で決める次の有効な疑
似シラブルボーダーは、必ずしも次の疑似シラブルボー
ダーに一致するわけではない。次の疑似シラブルボーダ
ーがエラーの発生した領域にある場合は有効な疑似シラ
ブルボーダーとはみなされず、その次の疑似シラブルボ
ーダーが採用される。
【0047】ここで、未処理の文字列"ntative of"の中
の次の疑似シラブルボーダーは"t"と"a" の間にあり、
エラーが発生した"n" の位置よりも後ろにあるので有効
な疑似シラブルボーダーとみなされ、処理ポインタがこ
の位置へ移動する(ステップS44)。
の次の疑似シラブルボーダーは"t"と"a" の間にあり、
エラーが発生した"n" の位置よりも後ろにあるので有効
な疑似シラブルボーダーとみなされ、処理ポインタがこ
の位置へ移動する(ステップS44)。
【0048】次に、最初にスペルエラーが発生したとき
に使用していたTRIEテーブルをフェッチし(ステッ
プS45)、そのTRIEテーブルから指される複数の
TRIEテーブルの中で、有効な疑似シラブルボーダー
を名称として持つTRIEテーブルを求める(ステップ
S46)。このとき求められるTRIEテーブルは、必
ずしも次のTRIEテーブルとは限らず、より下位のテ
ーブルであることが多い。したがって、この処理によ
り、スペルエラーが発生したときのTRIEテーブルか
ら有効な疑似シラブルボーダーを名称とするTRIEテ
ーブルまで、いくつかの介在するTRIEテーブルがと
ばされることになる。
に使用していたTRIEテーブルをフェッチし(ステッ
プS45)、そのTRIEテーブルから指される複数の
TRIEテーブルの中で、有効な疑似シラブルボーダー
を名称として持つTRIEテーブルを求める(ステップ
S46)。このとき求められるTRIEテーブルは、必
ずしも次のTRIEテーブルとは限らず、より下位のテ
ーブルであることが多い。したがって、この処理によ
り、スペルエラーが発生したときのTRIEテーブルか
ら有効な疑似シラブルボーダーを名称とするTRIEテ
ーブルまで、いくつかの介在するTRIEテーブルがと
ばされることになる。
【0049】本実施例においては、図6から図12に示
すように、辞書のコンパイル時にあらかじめ各TRIE
テーブルに次の疑似シラブルボーダーのリストが格納さ
れる。例えば図6(b)のTRIEテーブル"repre-"に
は、次の疑似シラブルボーダーとして"repreh-" 、"rep
res-" 、"repress-"が登録されている。
すように、辞書のコンパイル時にあらかじめ各TRIE
テーブルに次の疑似シラブルボーダーのリストが格納さ
れる。例えば図6(b)のTRIEテーブル"repre-"に
は、次の疑似シラブルボーダーとして"repreh-" 、"rep
res-" 、"repress-"が登録されている。
【0050】本発明のもう1つの実施例においては、こ
れらの疑似シラブルボーダーは、検索時の必要になった
ときにTRIEテーブルから求める。TRIEテーブル
から次の疑似シラブルボーダーを求める処理は辞書のコ
ンパイル時の処理と同様であり、後に詳しく説明する。
れらの疑似シラブルボーダーは、検索時の必要になった
ときにTRIEテーブルから求める。TRIEテーブル
から次の疑似シラブルボーダーを求める処理は辞書のコ
ンパイル時の処理と同様であり、後に詳しく説明する。
【0051】文字列"ntative of"の中の最初の2文字は
既にエラーを含むことが分かっており、これらの文字の
間の位置に相当する疑似シラブルボーダーはいずれも有
効ではない。TRIEテーブル"repre-"の疑似シラブル
ボーダーのうち、"repreh-"と"repres-" はこのエラー
を含む位置にあるので、これらの疑似シラブルボーダー
はスキップされる。
既にエラーを含むことが分かっており、これらの文字の
間の位置に相当する疑似シラブルボーダーはいずれも有
効ではない。TRIEテーブル"repre-"の疑似シラブル
ボーダーのうち、"repreh-"と"repres-" はこのエラー
を含む位置にあるので、これらの疑似シラブルボーダー
はスキップされる。
【0052】ここで、TRIEテーブル"repreh-" とT
RIEテーブル"repres-" の疑似シラブルボーダーリス
トにある"reprehens-"、"reprehend-"、および"represe
nt-"が、"repress-"とともに有効な疑似シラブルボーダ
ーとして選ばれる。そして、図7(a)、(b)、
(c)、(d)に示すTRIEテーブル"reprehens
-"、"reprehend-"、"repress-"、"represent-"が読み込
まれる(ステップS46)。
RIEテーブル"repres-" の疑似シラブルボーダーリス
トにある"reprehens-"、"reprehend-"、および"represe
nt-"が、"repress-"とともに有効な疑似シラブルボーダ
ーとして選ばれる。そして、図7(a)、(b)、
(c)、(d)に示すTRIEテーブル"reprehens
-"、"reprehend-"、"repress-"、"represent-"が読み込
まれる(ステップS46)。
【0053】このように、有効な疑似シラブルボーダー
は一般に複数存在し、このためプロセッサ13が処理す
るTRIEテーブルも複数となる。こうして、次の処理
対象の入力文字とTRIEテーブルとが決まると、プロ
セッサ13はステップS32以降の処理を繰り返す。
は一般に複数存在し、このためプロセッサ13が処理す
るTRIEテーブルも複数となる。こうして、次の処理
対象の入力文字とTRIEテーブルとが決まると、プロ
セッサ13はステップS32以降の処理を繰り返す。
【0054】まず残っている文字列"ative of"の最初の
文字"a" が読み込まれ(ステップS32)、これがTR
IEテーブル"reprehens-"、"reprehend-"、"repress
-"、および"represent-"のいずれかのエントリにあるか
どうか調べられる(ステップS33)。この結果、入力
文字"a" はTRIEテーブル"represent-"のみにあるこ
とが分かり(ステップS33、YES)、対応するTR
IEテーブルリンク"representa-" が指すTRIEテー
ブル"representa-" が読み込まれる(ステップS3
5)。
文字"a" が読み込まれ(ステップS32)、これがTR
IEテーブル"reprehens-"、"reprehend-"、"repress
-"、および"represent-"のいずれかのエントリにあるか
どうか調べられる(ステップS33)。この結果、入力
文字"a" はTRIEテーブル"represent-"のみにあるこ
とが分かり(ステップS33、YES)、対応するTR
IEテーブルリンク"representa-" が指すTRIEテー
ブル"representa-" が読み込まれる(ステップS3
5)。
【0055】ステップS46では、"repress-"を有効な
疑似シラブルボーダーとして選んだが、疑似シラブルボ
ーダー"repress-"もまた入力文字列のエラー領域(文字
列"ntative of"の中の最初の2文字)に接しているた
め、不適切と考えることもできる。
疑似シラブルボーダーとして選んだが、疑似シラブルボ
ーダー"repress-"もまた入力文字列のエラー領域(文字
列"ntative of"の中の最初の2文字)に接しているた
め、不適切と考えることもできる。
【0056】この場合は、代わりにTRIEテーブル"r
epress-"の疑似シラブルボーダーリストから、"repress
ibl-" 、"repression-" 、および"repressiv-"の3つが
有効な疑似シラブルボーダーとして選ばれ(ステップS
46)、対応するTRIEテーブルが検索される(ステ
ップS32、S33)。その結果、入力文字"a" はやは
りTRIEテーブル"represent-"のみにあることが分か
り(ステップS33、YES)、TRIEテーブル"rep
resenta-" が読み込まれる(ステップS35)。
epress-"の疑似シラブルボーダーリストから、"repress
ibl-" 、"repression-" 、および"repressiv-"の3つが
有効な疑似シラブルボーダーとして選ばれ(ステップS
46)、対応するTRIEテーブルが検索される(ステ
ップS32、S33)。その結果、入力文字"a" はやは
りTRIEテーブル"represent-"のみにあることが分か
り(ステップS33、YES)、TRIEテーブル"rep
resenta-" が読み込まれる(ステップS35)。
【0057】以後、通常の処理モード(図3、ステップ
S32、S33、S35)に復帰し、最終的に辞書のエ
ントリである"representative of" が認識語として出力
される(ステップS36)。
S32、S33、S35)に復帰し、最終的に辞書のエ
ントリである"representative of" が認識語として出力
される(ステップS36)。
【0058】このように本発明においては、入力文字列
の一部とTRIEテーブルの一部をともにスキップする
ことにより、自律的に入力文字列を修正して正しいTR
IEテーブルに到達することができる。
の一部とTRIEテーブルの一部をともにスキップする
ことにより、自律的に入力文字列を修正して正しいTR
IEテーブルに到達することができる。
【0059】図3から図5に示すフローでは、スペルエ
ラーが発生したとき、複数の候補に対応する複数のTR
IEテーブルを一斉に読み込んで並列に処理している
が、これらを1つ1つ順番に処理してもよい。その場合
は、1つのTRIEテーブルから文字列が認識できなけ
れば次のTRIEテーブルを処理し、文字列が認識され
れば処理を終了する。
ラーが発生したとき、複数の候補に対応する複数のTR
IEテーブルを一斉に読み込んで並列に処理している
が、これらを1つ1つ順番に処理してもよい。その場合
は、1つのTRIEテーブルから文字列が認識できなけ
れば次のTRIEテーブルを処理し、文字列が認識され
れば処理を終了する。
【0060】次に、"representative of" の誤記であ
る"repretantative of" が入力された場合のスペルエラ
ー修正処理について説明する。"repretantative of" は
2つのエラー文字"ta"を含んでおり、やはり深刻なスペ
ルエラーの一例である。この場合もTRIEテーブル"r
epre-"を読み込んだところまでは、問題なく処理が行わ
れる。
る"repretantative of" が入力された場合のスペルエラ
ー修正処理について説明する。"repretantative of" は
2つのエラー文字"ta"を含んでおり、やはり深刻なスペ
ルエラーの一例である。この場合もTRIEテーブル"r
epre-"を読み込んだところまでは、問題なく処理が行わ
れる。
【0061】次に、入力文字"t" が読み込まれたとき
(ステップS32)、これがTRIEテーブル"repre-"
の入力文字のエントリにないことが分かる(ステップS
33、NO)。そこで、"reprentative of" の場合と同
様にしてスペルエラーの回復が試みられるが、スペルエ
ラーの回復は不可能と決定され(ステップS42、N
O)、疑似シラブルモードに移行する。
(ステップS32)、これがTRIEテーブル"repre-"
の入力文字のエントリにないことが分かる(ステップS
33、NO)。そこで、"reprentative of" の場合と同
様にしてスペルエラーの回復が試みられるが、スペルエ
ラーの回復は不可能と決定され(ステップS42、N
O)、疑似シラブルモードに移行する。
【0062】この場合は、処理ポインタが"repre" と"t
antative" の間に戻された後(ステップS43)、"rep
retant" と"ative of"の間にセットされる(ステップS
44)。"repre" の次の疑似シラブルボーダーは"repre
t"と"antative"の間に位置するが、これはエラーの発生
した領域にあるため有効とはみなされず、その次の疑似
シラブルボーダーである"repretant" の後までスキップ
されるためである。
antative" の間に戻された後(ステップS43)、"rep
retant" と"ative of"の間にセットされる(ステップS
44)。"repre" の次の疑似シラブルボーダーは"repre
t"と"antative"の間に位置するが、これはエラーの発生
した領域にあるため有効とはみなされず、その次の疑似
シラブルボーダーである"repretant" の後までスキップ
されるためである。
【0063】また、"reprentative of" の場合と同様に
して、スペルエラーが発生したときのTRIEテーブ
ル"repre-"から有効な疑似シラブルボーダーを名称とす
るTRIEテーブル"reprehens-"、"reprehend-"、およ
び"represent-"が求められる(ステップS46)。そし
て、次の入力文字"a" が読み込まれ(ステップS3
2)、対応するTRIEテーブル"representa-" が読み
込まれて(ステップS35)、通常の処理モードに復帰
し、辞書のエントリである"representative of" が認識
語として出力される(ステップS36)。
して、スペルエラーが発生したときのTRIEテーブ
ル"repre-"から有効な疑似シラブルボーダーを名称とす
るTRIEテーブル"reprehens-"、"reprehend-"、およ
び"represent-"が求められる(ステップS46)。そし
て、次の入力文字"a" が読み込まれ(ステップS3
2)、対応するTRIEテーブル"representa-" が読み
込まれて(ステップS35)、通常の処理モードに復帰
し、辞書のエントリである"representative of" が認識
語として出力される(ステップS36)。
【0064】疑似シラブルモードの処理により入力文字
列が認識できないときは(ステップS34、NO)、ス
ペルエラーではないと判定し(ステップS37、N
O)、最後から順に1つずつ文字を破棄して(ステップ
S38、S39)、残りの文字列が辞書のエントリと一
致するかどうか調べる(ステップS40)。一致すれば
(ステップS40、YES)、そのときの文字列を認識
語として(ステップS41)、処理を終了し、残りの文
字がなくなれば(ステップS39、NO)、解析は失敗
に終わることになる。
列が認識できないときは(ステップS34、NO)、ス
ペルエラーではないと判定し(ステップS37、N
O)、最後から順に1つずつ文字を破棄して(ステップ
S38、S39)、残りの文字列が辞書のエントリと一
致するかどうか調べる(ステップS40)。一致すれば
(ステップS40、YES)、そのときの文字列を認識
語として(ステップS41)、処理を終了し、残りの文
字がなくなれば(ステップS39、NO)、解析は失敗
に終わることになる。
【0065】次に、図8から図12までのTRIEテー
ブルを参照しながら、文字列の修正に曖昧さがある場
合、すなわち、1つの入力文字列に対して複数の解釈が
ある場合について説明する。本発明の文字列修正システ
ムおよび文字列修正方法は、このような場合でも出力す
る認識語の候補を少数に限定することができる。
ブルを参照しながら、文字列の修正に曖昧さがある場
合、すなわち、1つの入力文字列に対して複数の解釈が
ある場合について説明する。本発明の文字列修正システ
ムおよび文字列修正方法は、このような場合でも出力す
る認識語の候補を少数に限定することができる。
【0066】例えば、入力文字列として"fasjoonable"
が入力された場合、図3から図5までのフローに従っ
て、図8(b)に示すTRIEテーブル"fas-"が読み込
まれ、残りの文字列が"joonable"となるまでは通常モー
ドで処理が行われる(ステップS35)。
が入力された場合、図3から図5までのフローに従っ
て、図8(b)に示すTRIEテーブル"fas-"が読み込
まれ、残りの文字列が"joonable"となるまでは通常モー
ドで処理が行われる(ステップS35)。
【0067】次に入力文字"j" が読み込まれたとき(ス
テップS32)、文字"j" がTRIEテーブル"fas-"の
入力文字のエントリにないことが分かる(ステップS3
3、NO)。また、図8(a)に示すTRIEテーブ
ル"fa-" の入力文字のエントリ"s" に対応する辞書の対
応語は空であるため、文字列"fas" は辞書のエントリに
はない(ステップS34、NO)。
テップS32)、文字"j" がTRIEテーブル"fas-"の
入力文字のエントリにないことが分かる(ステップS3
3、NO)。また、図8(a)に示すTRIEテーブ
ル"fa-" の入力文字のエントリ"s" に対応する辞書の対
応語は空であるため、文字列"fas" は辞書のエントリに
はない(ステップS34、NO)。
【0068】そこで、スペルエラーが発生したと仮定さ
れ(ステップS37、YES)、そのスペルエラーは回
復可能と仮定される(ステップS42、YES)。次
に、通常のスペルエラー処理として、TRIEテーブ
ル"fas-"の入力文字のエントリから"j" の代わりの3つ
の文字"c" 、"h" 、"t" が取り出され(ステップS4
7)、図8(c)、図10(d)、図11(a)に示す
それぞれ対応するTRIEテーブル"fasc-" 、"fash-"
、"fast-" が読み込まれる(ステップS48)。
れ(ステップS37、YES)、そのスペルエラーは回
復可能と仮定される(ステップS42、YES)。次
に、通常のスペルエラー処理として、TRIEテーブ
ル"fas-"の入力文字のエントリから"j" の代わりの3つ
の文字"c" 、"h" 、"t" が取り出され(ステップS4
7)、図8(c)、図10(d)、図11(a)に示す
それぞれ対応するTRIEテーブル"fasc-" 、"fash-"
、"fast-" が読み込まれる(ステップS48)。
【0069】しかし、次の入力文字"o" はこれらのいず
れの入力文字のエントリにもないので(ステップS3
3、NO)、スペルエラーを回復することはできず、疑
似シラブルモードに移行する(ステップS42、N
O)。
れの入力文字のエントリにもないので(ステップS3
3、NO)、スペルエラーを回復することはできず、疑
似シラブルモードに移行する(ステップS42、N
O)。
【0070】ここで、処理ポインタが"fas" と"joonabl
e"の間に戻された後(ステップS43)、次の有効な疑
似シラブルボーダーである"fasjoon" と"able"の間にセ
ットされる(ステップS44)。
e"の間に戻された後(ステップS43)、次の有効な疑
似シラブルボーダーである"fasjoon" と"able"の間にセ
ットされる(ステップS44)。
【0071】また、スペルエラー発生前のTRIEテー
ブル"fas-"がフェッチされ(ステップS45)、TRI
Eテーブル"fas-"に格納されている疑似シラブルボーダ
ー"fasc-" 、"fash-" 、"fast-" 、"fastn-"が調べられ
る。しかし、これらの疑似シラブルボーダーはいずれも
既にエラーの発生した領域にあり、信頼性に欠けるた
め、対応するTRIEテーブル"fasc-" 、"fash-" 、"f
ast-" 、"fastn-"の中で次の疑似シラブルボーダーが検
索される。TRIEテーブル"fastn-"は、図12(a)
に示されている。
ブル"fas-"がフェッチされ(ステップS45)、TRI
Eテーブル"fas-"に格納されている疑似シラブルボーダ
ー"fasc-" 、"fash-" 、"fast-" 、"fastn-"が調べられ
る。しかし、これらの疑似シラブルボーダーはいずれも
既にエラーの発生した領域にあり、信頼性に欠けるた
め、対応するTRIEテーブル"fasc-" 、"fash-" 、"f
ast-" 、"fastn-"の中で次の疑似シラブルボーダーが検
索される。TRIEテーブル"fastn-"は、図12(a)
に示されている。
【0072】そして、有効な疑似シラブルボーダーとし
て"fasces-" 、"fasciat-"、"fascic-" 、"fascicl
-"、"fascin-" 、"fascism-"、"fascist-"、"fashion
-"、"fasten-" 、"fastid-" 、"fasting-" 、"fastish
-" 、および"fastness-" が採用され、図9(a)、図
9(b)、図9(c)、図9(d)、図9(e)、図1
0(a)、図10(b)、図10(e)、図11
(b)、図11(c)、図11(d)、図11(e)、
および図12(b)にそれぞれ示すTRIEテーブル"f
asces-" 、"fasciat-"、"fascic-" 、"fascicl-"、"fas
cin-" 、"fascism-"、"fasci部st-"、"fashion-"、"fas
ten-" 、"fastid-" 、"fasting-" 、"fastish-" 、お
よび"fastness-" が求められる(ステップS46)。
て"fasces-" 、"fasciat-"、"fascic-" 、"fascicl
-"、"fascin-" 、"fascism-"、"fascist-"、"fashion
-"、"fasten-" 、"fastid-" 、"fasting-" 、"fastish
-" 、および"fastness-" が採用され、図9(a)、図
9(b)、図9(c)、図9(d)、図9(e)、図1
0(a)、図10(b)、図10(e)、図11
(b)、図11(c)、図11(d)、図11(e)、
および図12(b)にそれぞれ示すTRIEテーブル"f
asces-" 、"fasciat-"、"fascic-" 、"fascicl-"、"fas
cin-" 、"fascism-"、"fasci部st-"、"fashion-"、"fas
ten-" 、"fastid-" 、"fasting-" 、"fastish-" 、お
よび"fastness-" が求められる(ステップS46)。
【0073】次に、通常の処理モードに復帰して、次の
入力文字"a" が読み込まれ(ステップS32)、文字"
a" はTRIEテーブル"fascin-" 、"fashion-"および"
fasten-" のみにエントリとしてあることが分かる(ス
テップS33、YES)。そこで、図10(c)、図1
2(c)、および図12(d)に示すそれぞれ対応する
TRIEテーブル"fascina-"、"fashiona-" および"fas
tena-"が読み込まれて(ステップS35)、次の入力文
字"b" がこれらのTRIEテーブルのエントリにあるか
どうか調べられる(ステップS33)。
入力文字"a" が読み込まれ(ステップS32)、文字"
a" はTRIEテーブル"fascin-" 、"fashion-"および"
fasten-" のみにエントリとしてあることが分かる(ス
テップS33、YES)。そこで、図10(c)、図1
2(c)、および図12(d)に示すそれぞれ対応する
TRIEテーブル"fascina-"、"fashiona-" および"fas
tena-"が読み込まれて(ステップS35)、次の入力文
字"b" がこれらのTRIEテーブルのエントリにあるか
どうか調べられる(ステップS33)。
【0074】文字"b" はTRIEテーブル"fascina-"の
入力文字のエントリにはないので、このTRIEテーブ
ルは検索対象からはずされる。以後、残りの2つのTR
IEテーブル"fashiona-" と"fastena-"の入力文字のエ
ントリ"b" に対応するTRIEテーブル"fashionab-"
と"fastenab-" が検索され、最終的に"fashionable"
と"fastenable"が認識語として出力される(ステップS
36)。
入力文字のエントリにはないので、このTRIEテーブ
ルは検索対象からはずされる。以後、残りの2つのTR
IEテーブル"fashiona-" と"fastena-"の入力文字のエ
ントリ"b" に対応するTRIEテーブル"fashionab-"
と"fastenab-" が検索され、最終的に"fashionable"
と"fastenable"が認識語として出力される(ステップS
36)。
【0075】こうして、曖昧な入力文字列"fasjoonabl
e" に対応する辞書のエントリの候補が"fashionable"
と"fastenable"の2つに絞られる。"fasjoonable" もま
た、深刻なエラーの一例である。
e" に対応する辞書のエントリの候補が"fashionable"
と"fastenable"の2つに絞られる。"fasjoonable" もま
た、深刻なエラーの一例である。
【0076】図3のステップS33において、読み込ん
だ文字がTRIEテーブルのエントリと一致しないから
といって、必ずしもその文字が実際のスペルエラーに相
当するわけではない。例えば、"work"という語が誤っ
て"wirk"と綴られたとき、最初に不一致を起こす文字
は"i" ではなく"k" である。辞書には"work"とともに"w
ire"も登録されているため、"wir" まではTRIEテー
ブルのエントリと一致することになる。こうした問題を
扱う判定アルゴリズムを、ステップS37で用いること
も可能である。
だ文字がTRIEテーブルのエントリと一致しないから
といって、必ずしもその文字が実際のスペルエラーに相
当するわけではない。例えば、"work"という語が誤っ
て"wirk"と綴られたとき、最初に不一致を起こす文字
は"i" ではなく"k" である。辞書には"work"とともに"w
ire"も登録されているため、"wir" まではTRIEテー
ブルのエントリと一致することになる。こうした問題を
扱う判定アルゴリズムを、ステップS37で用いること
も可能である。
【0077】次に、図13から図15までを参照しなが
ら、プロセッサ13による辞書のコンパイル処理につい
て説明する。図13から図15のフローチャートが示す
コンパイル処理は、疑似シラブルボーダーの決定処理と
決定された疑似シラブルボーダーのTRIEテーブルへ
の格納処理を含んでいる。
ら、プロセッサ13による辞書のコンパイル処理につい
て説明する。図13から図15のフローチャートが示す
コンパイル処理は、疑似シラブルボーダーの決定処理と
決定された疑似シラブルボーダーのTRIEテーブルへ
の格納処理を含んでいる。
【0078】ここでは、辞書16のエントリの1つであ
る動詞"cater" をコンパイルして、コンパイルされた辞
書17にTRIEテーブルを付加する場合を例にとる。
このとき、名詞"cat" は既にコンパイルされた辞書17
に格納されているものとする。
る動詞"cater" をコンパイルして、コンパイルされた辞
書17にTRIEテーブルを付加する場合を例にとる。
このとき、名詞"cat" は既にコンパイルされた辞書17
に格納されているものとする。
【0079】図13において処理が開始されると、まず
プロセッサ13はメイン・メモリ11に格納されている
TRIEテーブル"root"を読み込み(ステップS5
1)、入力文字列の最初の文字を読み込む(ステップS
52)。ここでは、"cater" の最初の文字"c" が読み込
まれる。
プロセッサ13はメイン・メモリ11に格納されている
TRIEテーブル"root"を読み込み(ステップS5
1)、入力文字列の最初の文字を読み込む(ステップS
52)。ここでは、"cater" の最初の文字"c" が読み込
まれる。
【0080】次に、読み込んだ文字が現在のTRIEテ
ーブルの入力文字のエントリにあるかどうかを検索し
(ステップS53)、TRIEテーブルのエントリにあ
れば、対応するTRIEテーブルリンクを求める(ステ
ップS56)。文字"c" はTRIEテーブル"root"の入
力文字のエントリにあるので(ステップS53、YE
S)、対応するTRIEテーブルリンク"c-"が求められ
る(ステップS56)。
ーブルの入力文字のエントリにあるかどうかを検索し
(ステップS53)、TRIEテーブルのエントリにあ
れば、対応するTRIEテーブルリンクを求める(ステ
ップS56)。文字"c" はTRIEテーブル"root"の入
力文字のエントリにあるので(ステップS53、YE
S)、対応するTRIEテーブルリンク"c-"が求められ
る(ステップS56)。
【0081】次に、入力文字が残っているかどうかを調
べる(ステップS57)。入力文字が残っていれば、現
在のTRIEテーブルをテンポラリ・メモリ12に格納
し(ステップS59)、ステップS56で求めたTRI
Eテーブルリンクが指す次のTRIEテーブルを読み込
む(ステップS60)。ここで、TRIEテーブル"roo
t"がテンポラリ・メモリ12に格納され(ステップS5
9)、次のTRIEテーブル"c-"が読み込まれて(ステ
ップS60)、新しく現在のTRIEテーブルになる。
べる(ステップS57)。入力文字が残っていれば、現
在のTRIEテーブルをテンポラリ・メモリ12に格納
し(ステップS59)、ステップS56で求めたTRI
Eテーブルリンクが指す次のTRIEテーブルを読み込
む(ステップS60)。ここで、TRIEテーブル"roo
t"がテンポラリ・メモリ12に格納され(ステップS5
9)、次のTRIEテーブル"c-"が読み込まれて(ステ
ップS60)、新しく現在のTRIEテーブルになる。
【0082】次に、入力文字列の中の現在位置が疑似シ
ラブルボーダーに相当するかどうかを調べる(ステップ
S61)。前述したように疑似シラブルボーダーは任意
に定義することができるが、本実施例では、ある位置に
隣接する左の文字が最初の文字ではなく子音であって、
隣接する右の文字が母音であるとき、および隣接する左
の文字が最後の文字で隣接する右の文字がないときに、
その位置を疑似シラブルボーダーとする。したがって、
疑似シラブルボーダーかどうかを決定するには、隣接す
る右の文字である次の入力文字をチェックする必要があ
る。
ラブルボーダーに相当するかどうかを調べる(ステップ
S61)。前述したように疑似シラブルボーダーは任意
に定義することができるが、本実施例では、ある位置に
隣接する左の文字が最初の文字ではなく子音であって、
隣接する右の文字が母音であるとき、および隣接する左
の文字が最後の文字で隣接する右の文字がないときに、
その位置を疑似シラブルボーダーとする。したがって、
疑似シラブルボーダーかどうかを決定するには、隣接す
る右の文字である次の入力文字をチェックする必要があ
る。
【0083】疑似シラブルボーダーに相当しなければ、
入力文字が残っているかどうかを調べ(ステップS6
4)、残っていればステップS52以降の処理を繰り返
す。ここでは、隣接する左の文字である"c" は入力文字
列の最初の文字なので、疑似シラブルボーダーに相当せ
ず(ステップS61、NO)、残りの文字列の最初の文
字"a" が読み込まれる(ステップS52)。
入力文字が残っているかどうかを調べ(ステップS6
4)、残っていればステップS52以降の処理を繰り返
す。ここでは、隣接する左の文字である"c" は入力文字
列の最初の文字なので、疑似シラブルボーダーに相当せ
ず(ステップS61、NO)、残りの文字列の最初の文
字"a" が読み込まれる(ステップS52)。
【0084】文字"a" は現在のTRIEテーブル"c-"の
エントリにあるので(ステップS53、YES)、対応
するTRIEテーブルリンク"ca-" が求められる(ステ
ップS56)。そして、入力文字がまだ残っているので
(ステップS57、YES)、TRIEテーブル"c-"が
テンポラリ・メモリ12に格納され(ステップS5
9)、次のTRIEテーブル"ca-" が読み込まれる(ス
テップS60)。
エントリにあるので(ステップS53、YES)、対応
するTRIEテーブルリンク"ca-" が求められる(ステ
ップS56)。そして、入力文字がまだ残っているので
(ステップS57、YES)、TRIEテーブル"c-"が
テンポラリ・メモリ12に格納され(ステップS5
9)、次のTRIEテーブル"ca-" が読み込まれる(ス
テップS60)。
【0085】ここで、現在位置は母音"a" と子音"t" の
間であり、疑似シラブルボーダーに相当しないので(ス
テップS61、NO)、次の文字"t" が読み込まれる
(ステップS52)。
間であり、疑似シラブルボーダーに相当しないので(ス
テップS61、NO)、次の文字"t" が読み込まれる
(ステップS52)。
【0086】文字"t" は現在のTRIEテーブル"ca-"
のエントリにあるので(ステップS53、YES)、対
応するTRIEテーブルリンク"cat-"が求められる(ス
テップS56)。そして、入力文字がまだ残っているの
で(ステップS57、YES)、TRIEテーブル"ca
-" がテンポラリ・メモリ12に格納され(ステップS
59)、次のTRIEテーブル"cat-"が読み込まれる
(ステップS60)。
のエントリにあるので(ステップS53、YES)、対
応するTRIEテーブルリンク"cat-"が求められる(ス
テップS56)。そして、入力文字がまだ残っているの
で(ステップS57、YES)、TRIEテーブル"ca
-" がテンポラリ・メモリ12に格納され(ステップS
59)、次のTRIEテーブル"cat-"が読み込まれる
(ステップS60)。
【0087】このとき、現在位置が疑似シラブルボーダ
ーに相当するため(ステップS61、YES)、プロセ
ッサ13は、テンポラリ・メモリ12に格納されている
全てのTRIEテーブルの疑似シラブルボーダーリスト
に、現在のTRIEテーブルの名称を付加する(ステッ
プS62)。そして、テンポラリ・メモリ12の全ての
TRIEテーブルを、更新された疑似シラブルボーダー
リストとともにメイン・メモリ11に書き戻し、テンポ
ラリ・メモリ12を空にして(ステップS63)、ステ
ップS64以降の処理を行う。
ーに相当するため(ステップS61、YES)、プロセ
ッサ13は、テンポラリ・メモリ12に格納されている
全てのTRIEテーブルの疑似シラブルボーダーリスト
に、現在のTRIEテーブルの名称を付加する(ステッ
プS62)。そして、テンポラリ・メモリ12の全ての
TRIEテーブルを、更新された疑似シラブルボーダー
リストとともにメイン・メモリ11に書き戻し、テンポ
ラリ・メモリ12を空にして(ステップS63)、ステ
ップS64以降の処理を行う。
【0088】この段階では、テンポラリ・メモリ12に
3つのTRIEテーブル"root"、"c-"、"ca-" が格納さ
れている。しかし、最後に読み込んだ文字"t" は、既に
コンパイルされている単語"cat" の最後の文字にも相当
し、現在位置は単語"cat" における疑似シラブルボーダ
ーでもある。したがって、現在のTRIEテーブルの名
称"cat-"は、上記3つのTRIEテーブルのいずれの疑
似シラブルボーダーリストにも既に登録されているの
で、改めて付加する必要はない。そこで、これらの3つ
のTRIEテーブルはそのままメイン・メモリ11に戻
される(ステップS63)。
3つのTRIEテーブル"root"、"c-"、"ca-" が格納さ
れている。しかし、最後に読み込んだ文字"t" は、既に
コンパイルされている単語"cat" の最後の文字にも相当
し、現在位置は単語"cat" における疑似シラブルボーダ
ーでもある。したがって、現在のTRIEテーブルの名
称"cat-"は、上記3つのTRIEテーブルのいずれの疑
似シラブルボーダーリストにも既に登録されているの
で、改めて付加する必要はない。そこで、これらの3つ
のTRIEテーブルはそのままメイン・メモリ11に戻
される(ステップS63)。
【0089】次に、次の入力文字"e" が読み込まれるが
(ステップS52)、"cat" より長い語はまだコンパイ
ルされていないので、文字"e" は現在のTRIEテーブ
ル"cat-"のエントリにないことが分かる(ステップS5
3、NO)。
(ステップS52)、"cat" より長い語はまだコンパイ
ルされていないので、文字"e" は現在のTRIEテーブ
ル"cat-"のエントリにないことが分かる(ステップS5
3、NO)。
【0090】そこでプロセッサ13は、現在のTRIE
テーブルの名称に読み込んだ文字を付加した名称を持つ
TRIEテーブルを、メイン・メモリ11に新しく生成
する(ステップS54)。そして、生成したTRIEテ
ーブルを指すTRIEテーブルリンクを持つ行を、現在
のTRIEテーブルに付加して(ステップS55)、ス
テップS56以降の処理を行う。
テーブルの名称に読み込んだ文字を付加した名称を持つ
TRIEテーブルを、メイン・メモリ11に新しく生成
する(ステップS54)。そして、生成したTRIEテ
ーブルを指すTRIEテーブルリンクを持つ行を、現在
のTRIEテーブルに付加して(ステップS55)、ス
テップS56以降の処理を行う。
【0091】ここで、新規のTRIEテーブル"cate-"
が生成され(ステップS54)、入力文字を"e" 、辞書
の対応語を "φ" 、TRIEテーブルリンクを"cate-"
とする行が、現在のTRIEテーブル"cat-"に付加され
る(ステップS55)。
が生成され(ステップS54)、入力文字を"e" 、辞書
の対応語を "φ" 、TRIEテーブルリンクを"cate-"
とする行が、現在のTRIEテーブル"cat-"に付加され
る(ステップS55)。
【0092】次に、付加された行のエントリを用いて、
現在のTRIEテーブル"cat-"の入力文字のエントリ"
e" に対応するTRIEテーブルリンク"cate-" が求め
られる(ステップS56)。そして、入力文字がまだ残
っているので(ステップS57、YES)、TRIEテ
ーブル"cat-"がテンポラリ・メモリ12に格納され(ス
テップS59)、次のTRIEテーブル"cate-" が読み
込まれる(ステップS60)。
現在のTRIEテーブル"cat-"の入力文字のエントリ"
e" に対応するTRIEテーブルリンク"cate-" が求め
られる(ステップS56)。そして、入力文字がまだ残
っているので(ステップS57、YES)、TRIEテ
ーブル"cat-"がテンポラリ・メモリ12に格納され(ス
テップS59)、次のTRIEテーブル"cate-" が読み
込まれる(ステップS60)。
【0093】ここでは、現在位置が疑似シラブルボーダ
ーではないので(ステップS61、NO)、次の文字"
r" が読み込まれる(ステップS52)。ところが、現
在のTRIEテーブル"cate-" は生成されたばかりでエ
ントリを持たないので、文字"r" はこのTRIEテーブ
ル"cate-" にはない(ステップS53、NO)。
ーではないので(ステップS61、NO)、次の文字"
r" が読み込まれる(ステップS52)。ところが、現
在のTRIEテーブル"cate-" は生成されたばかりでエ
ントリを持たないので、文字"r" はこのTRIEテーブ
ル"cate-" にはない(ステップS53、NO)。
【0094】そこで、新規のTRIEテーブル"cater-"
が生成され(ステップS54)、入力文字を"r" 、辞書
の対応語を "φ" 、TRIEテーブルリンクを"cater-"
とする行が、現在のTRIEテーブル"cate-" に付加さ
れる(ステップS55)。そして、付加された行のエン
トリを用いて、TRIEテーブルリンク"cater-"が求め
られる(ステップS56)。
が生成され(ステップS54)、入力文字を"r" 、辞書
の対応語を "φ" 、TRIEテーブルリンクを"cater-"
とする行が、現在のTRIEテーブル"cate-" に付加さ
れる(ステップS55)。そして、付加された行のエン
トリを用いて、TRIEテーブルリンク"cater-"が求め
られる(ステップS56)。
【0095】このとき、入力文字はもう残っていないの
で(ステップS57、NO)、プロセッサ13は、ステ
ップS55で付加した行の辞書の対応語のエントリに適
当な識別子を設定して(ステップS58)、ステップS
59以降の処理を行う。本実施例では、この識別子とし
て例えば対応する辞書のエントリの品詞名が用いられる
が、他の必要とされるいかなる情報を用いてもよい。
で(ステップS57、NO)、プロセッサ13は、ステ
ップS55で付加した行の辞書の対応語のエントリに適
当な識別子を設定して(ステップS58)、ステップS
59以降の処理を行う。本実施例では、この識別子とし
て例えば対応する辞書のエントリの品詞名が用いられる
が、他の必要とされるいかなる情報を用いてもよい。
【0096】ここで、例えば単語"cater" の品詞名を表
す"V" が、現在のTRIEテーブル"cate-" の入力文
字"r" の行に辞書の対応語として書き込まれ、ステップ
S54で設定された "φ" は消去される(ステップS5
8)。そして、更新されたTRIEテーブル"cate-" が
テンポラリ・メモリ12に格納され(ステップS5
9)、次のTRIEテーブル"cater-"が読み込まれる
(ステップS60)。
す"V" が、現在のTRIEテーブル"cate-" の入力文
字"r" の行に辞書の対応語として書き込まれ、ステップ
S54で設定された "φ" は消去される(ステップS5
8)。そして、更新されたTRIEテーブル"cate-" が
テンポラリ・メモリ12に格納され(ステップS5
9)、次のTRIEテーブル"cater-"が読み込まれる
(ステップS60)。
【0097】このときの現在位置に隣接する左の文字"
r" は入力文字列の最後の文字なので、現在位置は再び
疑似シラブルボーダーと判定される(ステップS61、
YES)。今度はテンポラリ・メモリ12に格納されて
いる2つのTRIEテーブル"cat-"および"cate-" のい
ずれにも、現在のTRIEテーブルの名称"cater-"が疑
似シラブルボーダーとして登録されていない。そこ
で、"cater-"がこれらのTRIEテーブルの疑似シラブ
ルボーダーリストに付加される(ステップS60)。
r" は入力文字列の最後の文字なので、現在位置は再び
疑似シラブルボーダーと判定される(ステップS61、
YES)。今度はテンポラリ・メモリ12に格納されて
いる2つのTRIEテーブル"cat-"および"cate-" のい
ずれにも、現在のTRIEテーブルの名称"cater-"が疑
似シラブルボーダーとして登録されていない。そこ
で、"cater-"がこれらのTRIEテーブルの疑似シラブ
ルボーダーリストに付加される(ステップS60)。
【0098】そして、TRIEテーブル"cat-"および"c
ate-" はメイン・メモリ11に書き戻され、テンポラリ
・メモリ12は再び空になる(ステップS63)。ここ
で、入力文字はもう残っていないので(ステップS6
4、NO)、処理を終了する。こうして、1つの辞書の
エントリ"cater" がTRIEテーブルに付加される。
ate-" はメイン・メモリ11に書き戻され、テンポラリ
・メモリ12は再び空になる(ステップS63)。ここ
で、入力文字はもう残っていないので(ステップS6
4、NO)、処理を終了する。こうして、1つの辞書の
エントリ"cater" がTRIEテーブルに付加される。
【0099】本実施例では、辞書のコンパイル時にあら
かじめ疑似シラブルボーダーを決定してTRIEテーブ
ルに登録しているが、もう1つの実施例では、スペルエ
ラー修正処理中に必要が生じた時のみ、同様の方法で必
要な疑似シラブルボーダーを求める。この場合は、全て
の辞書のエントリについてあらかじめ疑似シラブルボー
ダーを決定する必要がなく、処理が簡単化される。
かじめ疑似シラブルボーダーを決定してTRIEテーブ
ルに登録しているが、もう1つの実施例では、スペルエ
ラー修正処理中に必要が生じた時のみ、同様の方法で必
要な疑似シラブルボーダーを求める。この場合は、全て
の辞書のエントリについてあらかじめ疑似シラブルボー
ダーを決定する必要がなく、処理が簡単化される。
【0100】以上の実施例では入力文字列が英語の場合
について説明したが、本発明の適用対象は特定の言語に
限られるものではなく、日本語、中国語、ドイツ語、オ
ランダ語等を含むあらゆる言語の文字列、記号列に対し
て用いることができる。また、入力文字列が必ずしも単
一の言語に属している必要はなく、辞書に登録されてい
る複数の言語を含む文字列を処理することもできる。
について説明したが、本発明の適用対象は特定の言語に
限られるものではなく、日本語、中国語、ドイツ語、オ
ランダ語等を含むあらゆる言語の文字列、記号列に対し
て用いることができる。また、入力文字列が必ずしも単
一の言語に属している必要はなく、辞書に登録されてい
る複数の言語を含む文字列を処理することもできる。
【0101】さらに、文字列の入力はいかなる形態によ
るものでもよく、例えば音声により入力される文字列も
同様に本発明の文字列修正システムにより処理すること
ができる。
るものでもよく、例えば音声により入力される文字列も
同様に本発明の文字列修正システムにより処理すること
ができる。
【0102】
【発明の効果】本発明によれば、形態素解析等における
文字列のエラーの修正が簡単になり、処理時間が短縮さ
れる。特に、文字列が多数の誤記や多数の余分の文字の
ような深刻なエラーを含む場合にも、一貫した処理によ
り簡単かつ迅速に、これを修正することができる。
文字列のエラーの修正が簡単になり、処理時間が短縮さ
れる。特に、文字列が多数の誤記や多数の余分の文字の
ような深刻なエラーを含む場合にも、一貫した処理によ
り簡単かつ迅速に、これを修正することができる。
【図1】本発明の原理図である。
【図2】本発明の一実施例の構成図である。
【図3】実施例におけるスペルエラー修正処理のフロー
チャート(その1)である。
チャート(その1)である。
【図4】実施例におけるスペルエラー修正処理のフロー
チャート(その2)である。
チャート(その2)である。
【図5】実施例におけるスペルエラー修正処理のフロー
チャート(その3)である。
チャート(その3)である。
【図6】実施例におけるTRIEテーブルの構造を示す
図(その1)である。
図(その1)である。
【図7】実施例におけるTRIEテーブルの構造を示す
図(その2)である。
図(その2)である。
【図8】実施例におけるTRIEテーブルの構造を示す
図(その3)である。
図(その3)である。
【図9】実施例におけるTRIEテーブルの構造を示す
図(その4)である。
図(その4)である。
【図10】実施例におけるTRIEテーブルの構造を示
す図(その5)である。
す図(その5)である。
【図11】実施例におけるTRIEテーブルの構造を示
す図(その6)である。
す図(その6)である。
【図12】実施例におけるTRIEテーブルの構造を示
す図(その7)である。
す図(その7)である。
【図13】辞書のコンパイル処理のフローチャート(そ
の1)である。
の1)である。
【図14】辞書のコンパイル処理のフローチャート(そ
の2)である。
の2)である。
【図15】辞書のコンパイル処理のフローチャート(そ
の3)である。
の3)である。
【図16】従来のTRIEテーブルの構造を示す図(そ
の1)である。
の1)である。
【図17】従来のTRIEテーブルの構造を示す図(そ
の2)である。
の2)である。
【図18】TRIE法の基本処理のフローチャートであ
る。
る。
【図19】従来のスペルエラー修正処理のフローチャー
ト(その1)である。
ト(その1)である。
【図20】従来のスペルエラー修正処理のフローチャー
ト(その2)である。
ト(その2)である。
1 辞書格納手段 2 検索手段 3 スキップ手段 11 メイン・メモリ 12 テンポラリ・メモリ 13 プロセッサ 14 入力部 15 出力部 16 辞書 17 コンパイルされた辞書
Claims (11)
- 【請求項1】 入力文字列と辞書のエントリを比較して
形態素解析を行う情報処理装置において、 前記入力文字列中の文字と比較される入力文字のエント
リを持つ前記辞書を格納する辞書格納手段と、 前記辞書格納手段に格納された前記辞書を検索して、前
記入力文字列に対応する前記辞書のエントリを求め、検
索結果である認識語として出力する検索手段と、 前記入力文字列中の文字が前記入力文字のエントリと一
致しないとき、該入力文字列の一部と前記辞書の一部を
スキップして一致する位置を求め、前記検索手段に該一
致する位置からの検索を行わせるスキップ手段と、 を備えることを特徴とする文字列修正システム。 - 【請求項2】 前記辞書格納手段は、入力される文字を
1文字ずつ検索するための複数のTRIEテーブルを有
する前記辞書を格納し、 各TRIEテーブルは、前記辞書のエントリの最初の文
字から途中の文字までの文字列に対応して、次の文字の
候補を表す前記入力文字のエントリと、前記辞書のエン
トリとの対応関係を表す辞書の対応語のエントリと、次
のTRIEテーブルを指すTRIEテーブルリンクとを
有し、 前記検索手段は、前記複数のTRIEテーブルを検索し
て前記認識語を求め、 前記入力文字列中の文字が前記TRIEテーブルの前記
入力文字のエントリと一致しないとき、前記スキップ手
段は一致するTRIEテーブルまでスキップすることを
特徴とする請求項1記載の文字列修正システム。 - 【請求項3】 前記辞書格納手段は、前記辞書のエント
リ内の適当な位置を疑似シラブルボーダーとしてあらか
じめ格納し、 前記入力文字列中の文字が前記入力文字のエントリと一
致しないとき、前記スキップ手段は前記辞書を前記疑似
シラブルボーダーまでスキップし、 前記検索手段は、前記疑似シラブルボーダー以降の検索
を行うことを特徴とする請求項1記載の文字列修正シス
テム。 - 【請求項4】 前記入力文字列中の文字が前記入力文字
のエントリと一致しないとき、前記スキップ手段は前記
辞書のエントリ内の適当な位置を疑似シラブルボーダー
として求め、 前記検索手段は、前記疑似シラブルボーダー以降の検索
を行うことを特徴とする請求項1記載の文字列修正シス
テム。 - 【請求項5】 疑似シラブルボーダーは、連続する子音
と母音の間の位置に設定されることを特徴とする請求項
3または4記載の文字列修正システム。 - 【請求項6】 前記スキップ手段は、前記入力文字のエ
ントリと一致しない前記入力文字列中の文字を該入力文
字のエントリの1つと置き換えても、該入力文字列を認
識できないときに、該入力文字列の一部と前記辞書の一
部をスキップして一致する位置を求めることを特徴とす
る請求項1記載の文字列修正システム。 - 【請求項7】 入力文字列と辞書のエントリを比較して
形態素解析を行う方法において、 前記入力文字列中の文字と比較される入力文字のエント
リを持つ前記辞書を生成し、 生成された前記辞書を検索して、前記入力文字列中の文
字に一致する前記入力文字のエントリを求め、 前記入力文字列中の文字が前記入力文字のエントリと一
致しないとき、該入力文字列の一部と前記辞書の一部を
スキップして一致する位置を求め、 該一致する位置からの検索を行って、前記入力文字列に
対応する前記辞書のエントリを求めて、 該辞書のエントリを検索結果である認識語として出力す
ることを特徴とする文字列修正方法。 - 【請求項8】 前記辞書の生成時において、 該辞書の1つのエントリを1文字ずつ読み取り、 該1つのエントリの最初の文字から読み取った文字まで
の文字列に対応するTRIEテーブルを作成し、 該TRIEテーブルに、次の文字の候補を表す前記入力
文字のエントリと、前記辞書のエントリとの対応関係を
表す辞書の対応語のエントリと、次のTRIEテーブル
を指すTRIEテーブルリンクとを格納し、 前記辞書の検索時において、 前記入力文字列中の文字が前記TRIEテーブルの前記
入力文字のエントリと一致しないとき、一致するTRI
Eテーブルまでスキップすることを特徴とする請求項7
記載の文字列修正方法。 - 【請求項9】 前記辞書の生成時において、 前記辞書のエントリ内の適当な位置を疑似シラブルボー
ダーと定め、 前記読み取った文字が前記疑似シラブルボーダーに対応
するとき、前記TRIEテーブルより前に作成したTR
IEテーブルに該疑似シラブルボーダーを付加し、 前記辞書の検索時において、前記入力文字列中の文字が
前記TRIEテーブルの前記入力文字のエントリと一致
しないとき、 該入力文字列の最初の文字から前記疑似シラブルボーダ
ーまでの文字列に対応するTRIEテーブルへスキップ
し、 該入力文字列内の有効な疑似シラブルボーダーまでスキ
ップして、 該有効な疑似シラブルボーダー以降の検索を行うことを
特徴とする請求項8記載の文字列修正方法。 - 【請求項10】 前記辞書の検索時において、 前記入力文字列中の文字が前記辞書の入力文字のエント
リと一致しないとき、前記辞書のエントリ内の適当な位
置を疑似シラブルボーダーとして求め、 前記入力文字列中の文字が前記TRIEテーブルの前記
入力文字のエントリと一致しないとき、該入力文字列の
最初の文字から前記疑似シラブルボーダーまでの文字列
に対応するTRIEテーブルへスキップし、 該入力文字列内の有効な疑似シラブルボーダーまでスキ
ップして、 該有効な疑似シラブルボーダー以降の検索を行うことを
特徴とする請求項8記載の文字列修正方法。 - 【請求項11】 前記入力文字のエントリと一致しない
前記入力文字列中の文字を該入力文字のエントリの1つ
と置き換えても、該入力文字列を認識できないときに、
該入力文字列の一部と前記辞書の一部をスキップして一
致する位置を求めることを特徴とする請求項7記載の文
字列修正方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6208307A JPH0877173A (ja) | 1994-09-01 | 1994-09-01 | 文字列修正システムとその方法 |
US08/521,725 US5774834A (en) | 1994-09-01 | 1995-08-31 | System and method for correcting a string of characters by skipping to pseudo-syllable borders in a dictionary |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6208307A JPH0877173A (ja) | 1994-09-01 | 1994-09-01 | 文字列修正システムとその方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0877173A true JPH0877173A (ja) | 1996-03-22 |
Family
ID=16554093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6208307A Withdrawn JPH0877173A (ja) | 1994-09-01 | 1994-09-01 | 文字列修正システムとその方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5774834A (ja) |
JP (1) | JPH0877173A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101491581B1 (ko) * | 2008-04-07 | 2015-02-24 | 삼성전자주식회사 | 철자 오류 보정 시스템 및 방법 |
Families Citing this family (128)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6360197B1 (en) * | 1996-06-25 | 2002-03-19 | Microsoft Corporation | Method and apparatus for identifying erroneous characters in text |
JP3143079B2 (ja) | 1997-05-30 | 2001-03-07 | 松下電器産業株式会社 | 辞書索引作成装置と文書検索装置 |
AUPP702498A0 (en) * | 1998-11-09 | 1998-12-03 | Silverbrook Research Pty Ltd | Image creation method and apparatus (ART77) |
US6643784B1 (en) * | 1998-12-14 | 2003-11-04 | Entrust Technologies Limited | Password generation method and system |
US6671856B1 (en) * | 1999-09-01 | 2003-12-30 | International Business Machines Corporation | Method, system, and program for determining boundaries in a string using a dictionary |
US6742164B1 (en) * | 1999-09-01 | 2004-05-25 | International Business Machines Corporation | Method, system, and program for generating a deterministic table to determine boundaries between characters |
US6848080B1 (en) | 1999-11-05 | 2005-01-25 | Microsoft Corporation | Language input architecture for converting one text form to another text form with tolerance to spelling, typographical, and conversion errors |
US7403888B1 (en) | 1999-11-05 | 2008-07-22 | Microsoft Corporation | Language input user interface |
US8645137B2 (en) | 2000-03-16 | 2014-02-04 | Apple Inc. | Fast, language-independent method for user authentication by voice |
US7047493B1 (en) * | 2000-03-31 | 2006-05-16 | Brill Eric D | Spell checker with arbitrary length string-to-string transformations to improve noisy channel spelling correction |
EP1411442A4 (en) * | 2001-06-11 | 2010-03-03 | Hiroshi Ishikura | SYSTEM FOR SUPPORTING THE ENTERMENT OF TEXT BY AUTOMATIC PRODUCTION OF BLANK |
US7610189B2 (en) * | 2001-10-18 | 2009-10-27 | Nuance Communications, Inc. | Method and apparatus for efficient segmentation of compound words using probabilistic breakpoint traversal |
EP1635538A1 (de) * | 2004-09-14 | 2006-03-15 | Lorenz Borsche | Verfahren zum Suchen und Anzeigen von gespeicherten Daten |
US8677377B2 (en) | 2005-09-08 | 2014-03-18 | Apple Inc. | Method and apparatus for building an intelligent automated assistant |
US9318108B2 (en) | 2010-01-18 | 2016-04-19 | Apple Inc. | Intelligent automated assistant |
US8074172B2 (en) | 2007-01-05 | 2011-12-06 | Apple Inc. | Method, system, and graphical user interface for providing word recommendations |
WO2008109769A1 (en) * | 2007-03-06 | 2008-09-12 | Google Inc. | Machine learning for transliteration |
US8977255B2 (en) | 2007-04-03 | 2015-03-10 | Apple Inc. | Method and system for operating a multi-function portable electronic device using voice-activation |
US9330720B2 (en) | 2008-01-03 | 2016-05-03 | Apple Inc. | Methods and apparatus for altering audio output signals |
US8232973B2 (en) | 2008-01-09 | 2012-07-31 | Apple Inc. | Method, device, and graphical user interface providing word recommendations for text input |
US8996376B2 (en) | 2008-04-05 | 2015-03-31 | Apple Inc. | Intelligent text-to-speech conversion |
US10496753B2 (en) | 2010-01-18 | 2019-12-03 | Apple Inc. | Automatically adapting user interfaces for hands-free interaction |
US8521761B2 (en) * | 2008-07-18 | 2013-08-27 | Google Inc. | Transliteration for query expansion |
US20100030549A1 (en) | 2008-07-31 | 2010-02-04 | Lee Michael M | Mobile device having human language translation capability with positional feedback |
JP5320925B2 (ja) * | 2008-09-18 | 2013-10-23 | 富士通株式会社 | 情報検索方法、情報検索装置及び情報検索プログラム |
US9959870B2 (en) | 2008-12-11 | 2018-05-01 | Apple Inc. | Speech recognition involving a mobile device |
US20100235780A1 (en) * | 2009-03-16 | 2010-09-16 | Westerman Wayne C | System and Method for Identifying Words Based on a Sequence of Keyboard Events |
US10241644B2 (en) | 2011-06-03 | 2019-03-26 | Apple Inc. | Actionable reminder entries |
US9858925B2 (en) | 2009-06-05 | 2018-01-02 | Apple Inc. | Using context information to facilitate processing of commands in a virtual assistant |
US10241752B2 (en) | 2011-09-30 | 2019-03-26 | Apple Inc. | Interface for a virtual digital assistant |
US10706373B2 (en) | 2011-06-03 | 2020-07-07 | Apple Inc. | Performing actions associated with task items that represent tasks to perform |
US9431006B2 (en) | 2009-07-02 | 2016-08-30 | Apple Inc. | Methods and apparatuses for automatic speech recognition |
US10679605B2 (en) | 2010-01-18 | 2020-06-09 | Apple Inc. | Hands-free list-reading by intelligent automated assistant |
US10705794B2 (en) | 2010-01-18 | 2020-07-07 | Apple Inc. | Automatically adapting user interfaces for hands-free interaction |
US10276170B2 (en) | 2010-01-18 | 2019-04-30 | Apple Inc. | Intelligent automated assistant |
US10553209B2 (en) | 2010-01-18 | 2020-02-04 | Apple Inc. | Systems and methods for hands-free notification summaries |
DE202011111062U1 (de) | 2010-01-25 | 2019-02-19 | Newvaluexchange Ltd. | Vorrichtung und System für eine Digitalkonversationsmanagementplattform |
US8682667B2 (en) | 2010-02-25 | 2014-03-25 | Apple Inc. | User profiling for selecting user specific voice input processing information |
US10762293B2 (en) | 2010-12-22 | 2020-09-01 | Apple Inc. | Using parts-of-speech tagging and named entity recognition for spelling correction |
US9262612B2 (en) | 2011-03-21 | 2016-02-16 | Apple Inc. | Device access using voice authentication |
US10057736B2 (en) | 2011-06-03 | 2018-08-21 | Apple Inc. | Active transport based notifications |
US8994660B2 (en) | 2011-08-29 | 2015-03-31 | Apple Inc. | Text correction processing |
US10134385B2 (en) | 2012-03-02 | 2018-11-20 | Apple Inc. | Systems and methods for name pronunciation |
US9483461B2 (en) | 2012-03-06 | 2016-11-01 | Apple Inc. | Handling speech synthesis of content for multiple languages |
US8930813B2 (en) * | 2012-04-03 | 2015-01-06 | Orlando McMaster | Dynamic text entry/input system |
US9280610B2 (en) | 2012-05-14 | 2016-03-08 | Apple Inc. | Crowd sourcing information to fulfill user requests |
US9721563B2 (en) | 2012-06-08 | 2017-08-01 | Apple Inc. | Name recognition system |
US9495129B2 (en) | 2012-06-29 | 2016-11-15 | Apple Inc. | Device, method, and user interface for voice-activated navigation and browsing of a document |
US9576574B2 (en) | 2012-09-10 | 2017-02-21 | Apple Inc. | Context-sensitive handling of interruptions by intelligent digital assistant |
US9547647B2 (en) | 2012-09-19 | 2017-01-17 | Apple Inc. | Voice-based media searching |
EP4138075A1 (en) | 2013-02-07 | 2023-02-22 | Apple Inc. | Voice trigger for a digital assistant |
US9368114B2 (en) | 2013-03-14 | 2016-06-14 | Apple Inc. | Context-sensitive handling of interruptions |
WO2014144579A1 (en) | 2013-03-15 | 2014-09-18 | Apple Inc. | System and method for updating an adaptive speech recognition model |
AU2014233517B2 (en) | 2013-03-15 | 2017-05-25 | Apple Inc. | Training an at least partial voice command system |
US9582608B2 (en) | 2013-06-07 | 2017-02-28 | Apple Inc. | Unified ranking with entropy-weighted information for phrase-based semantic auto-completion |
WO2014197334A2 (en) | 2013-06-07 | 2014-12-11 | Apple Inc. | System and method for user-specified pronunciation of words for speech synthesis and recognition |
WO2014197336A1 (en) | 2013-06-07 | 2014-12-11 | Apple Inc. | System and method for detecting errors in interactions with a voice-based digital assistant |
WO2014197335A1 (en) | 2013-06-08 | 2014-12-11 | Apple Inc. | Interpreting and acting upon commands that involve sharing information with remote devices |
EP3937002A1 (en) | 2013-06-09 | 2022-01-12 | Apple Inc. | Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant |
US10176167B2 (en) | 2013-06-09 | 2019-01-08 | Apple Inc. | System and method for inferring user intent from speech inputs |
EP3008964B1 (en) | 2013-06-13 | 2019-09-25 | Apple Inc. | System and method for emergency calls initiated by voice command |
KR101749009B1 (ko) | 2013-08-06 | 2017-06-19 | 애플 인크. | 원격 디바이스로부터의 활동에 기초한 스마트 응답의 자동 활성화 |
GB201321927D0 (en) * | 2013-12-11 | 2014-01-22 | Touchtype Ltd | System and method for inputting text into electronic devices |
US9620105B2 (en) | 2014-05-15 | 2017-04-11 | Apple Inc. | Analyzing audio input for efficient speech and music recognition |
US10592095B2 (en) | 2014-05-23 | 2020-03-17 | Apple Inc. | Instantaneous speaking of content on touch devices |
US9502031B2 (en) | 2014-05-27 | 2016-11-22 | Apple Inc. | Method for supporting dynamic grammars in WFST-based ASR |
US9715875B2 (en) | 2014-05-30 | 2017-07-25 | Apple Inc. | Reducing the need for manual start/end-pointing and trigger phrases |
US10289433B2 (en) | 2014-05-30 | 2019-05-14 | Apple Inc. | Domain specific language for encoding assistant dialog |
US9734193B2 (en) | 2014-05-30 | 2017-08-15 | Apple Inc. | Determining domain salience ranking from ambiguous words in natural speech |
US10078631B2 (en) | 2014-05-30 | 2018-09-18 | Apple Inc. | Entropy-guided text prediction using combined word and character n-gram language models |
US9785630B2 (en) | 2014-05-30 | 2017-10-10 | Apple Inc. | Text prediction using combined word N-gram and unigram language models |
US9430463B2 (en) | 2014-05-30 | 2016-08-30 | Apple Inc. | Exemplar-based natural language processing |
CN106471570B (zh) | 2014-05-30 | 2019-10-01 | 苹果公司 | 多命令单一话语输入方法 |
US9842101B2 (en) | 2014-05-30 | 2017-12-12 | Apple Inc. | Predictive conversion of language input |
US10170123B2 (en) | 2014-05-30 | 2019-01-01 | Apple Inc. | Intelligent assistant for home automation |
US9760559B2 (en) | 2014-05-30 | 2017-09-12 | Apple Inc. | Predictive text input |
US9633004B2 (en) | 2014-05-30 | 2017-04-25 | Apple Inc. | Better resolution when referencing to concepts |
US9338493B2 (en) | 2014-06-30 | 2016-05-10 | Apple Inc. | Intelligent automated assistant for TV user interactions |
US10659851B2 (en) | 2014-06-30 | 2020-05-19 | Apple Inc. | Real-time digital assistant knowledge updates |
US10446141B2 (en) | 2014-08-28 | 2019-10-15 | Apple Inc. | Automatic speech recognition based on user feedback |
US9818400B2 (en) | 2014-09-11 | 2017-11-14 | Apple Inc. | Method and apparatus for discovering trending terms in speech requests |
US10789041B2 (en) | 2014-09-12 | 2020-09-29 | Apple Inc. | Dynamic thresholds for always listening speech trigger |
US10074360B2 (en) | 2014-09-30 | 2018-09-11 | Apple Inc. | Providing an indication of the suitability of speech recognition |
US9668121B2 (en) | 2014-09-30 | 2017-05-30 | Apple Inc. | Social reminders |
US9646609B2 (en) | 2014-09-30 | 2017-05-09 | Apple Inc. | Caching apparatus for serving phonetic pronunciations |
US10127911B2 (en) | 2014-09-30 | 2018-11-13 | Apple Inc. | Speaker identification and unsupervised speaker adaptation techniques |
US9886432B2 (en) | 2014-09-30 | 2018-02-06 | Apple Inc. | Parsimonious handling of word inflection via categorical stem + suffix N-gram language models |
US10552013B2 (en) | 2014-12-02 | 2020-02-04 | Apple Inc. | Data detection |
US9711141B2 (en) | 2014-12-09 | 2017-07-18 | Apple Inc. | Disambiguating heteronyms in speech synthesis |
US9865280B2 (en) | 2015-03-06 | 2018-01-09 | Apple Inc. | Structured dictation using intelligent automated assistants |
US9721566B2 (en) | 2015-03-08 | 2017-08-01 | Apple Inc. | Competing devices responding to voice triggers |
US9886953B2 (en) | 2015-03-08 | 2018-02-06 | Apple Inc. | Virtual assistant activation |
US10567477B2 (en) | 2015-03-08 | 2020-02-18 | Apple Inc. | Virtual assistant continuity |
US9899019B2 (en) | 2015-03-18 | 2018-02-20 | Apple Inc. | Systems and methods for structured stem and suffix language models |
US9842105B2 (en) | 2015-04-16 | 2017-12-12 | Apple Inc. | Parsimonious continuous-space phrase representations for natural language processing |
US10083688B2 (en) | 2015-05-27 | 2018-09-25 | Apple Inc. | Device voice control for selecting a displayed affordance |
US10127220B2 (en) | 2015-06-04 | 2018-11-13 | Apple Inc. | Language identification from short strings |
US10101822B2 (en) | 2015-06-05 | 2018-10-16 | Apple Inc. | Language input correction |
US10255907B2 (en) | 2015-06-07 | 2019-04-09 | Apple Inc. | Automatic accent detection using acoustic models |
US10186254B2 (en) | 2015-06-07 | 2019-01-22 | Apple Inc. | Context-based endpoint detection |
US11025565B2 (en) | 2015-06-07 | 2021-06-01 | Apple Inc. | Personalized prediction of responses for instant messaging |
US10747498B2 (en) | 2015-09-08 | 2020-08-18 | Apple Inc. | Zero latency digital assistant |
US10671428B2 (en) | 2015-09-08 | 2020-06-02 | Apple Inc. | Distributed personal assistant |
US9697820B2 (en) | 2015-09-24 | 2017-07-04 | Apple Inc. | Unit-selection text-to-speech synthesis using concatenation-sensitive neural networks |
US10366158B2 (en) | 2015-09-29 | 2019-07-30 | Apple Inc. | Efficient word encoding for recurrent neural network language models |
US11010550B2 (en) | 2015-09-29 | 2021-05-18 | Apple Inc. | Unified language modeling framework for word prediction, auto-completion and auto-correction |
US11587559B2 (en) | 2015-09-30 | 2023-02-21 | Apple Inc. | Intelligent device identification |
US10691473B2 (en) | 2015-11-06 | 2020-06-23 | Apple Inc. | Intelligent automated assistant in a messaging environment |
US10049668B2 (en) | 2015-12-02 | 2018-08-14 | Apple Inc. | Applying neural network language models to weighted finite state transducers for automatic speech recognition |
US10223066B2 (en) | 2015-12-23 | 2019-03-05 | Apple Inc. | Proactive assistance based on dialog communication between devices |
US10446143B2 (en) | 2016-03-14 | 2019-10-15 | Apple Inc. | Identification of voice inputs providing credentials |
US9934775B2 (en) | 2016-05-26 | 2018-04-03 | Apple Inc. | Unit-selection text-to-speech synthesis based on predicted concatenation parameters |
US9972304B2 (en) | 2016-06-03 | 2018-05-15 | Apple Inc. | Privacy preserving distributed evaluation framework for embedded personalized systems |
US10249300B2 (en) | 2016-06-06 | 2019-04-02 | Apple Inc. | Intelligent list reading |
US10049663B2 (en) | 2016-06-08 | 2018-08-14 | Apple, Inc. | Intelligent automated assistant for media exploration |
DK179309B1 (en) | 2016-06-09 | 2018-04-23 | Apple Inc | Intelligent automated assistant in a home environment |
US10586535B2 (en) | 2016-06-10 | 2020-03-10 | Apple Inc. | Intelligent digital assistant in a multi-tasking environment |
US10192552B2 (en) | 2016-06-10 | 2019-01-29 | Apple Inc. | Digital assistant providing whispered speech |
US10509862B2 (en) | 2016-06-10 | 2019-12-17 | Apple Inc. | Dynamic phrase expansion of language input |
US10490187B2 (en) | 2016-06-10 | 2019-11-26 | Apple Inc. | Digital assistant providing automated status report |
US10067938B2 (en) | 2016-06-10 | 2018-09-04 | Apple Inc. | Multilingual word prediction |
DK179049B1 (en) | 2016-06-11 | 2017-09-18 | Apple Inc | Data driven natural language event detection and classification |
DK201670540A1 (en) | 2016-06-11 | 2018-01-08 | Apple Inc | Application integration with a digital assistant |
DK179343B1 (en) | 2016-06-11 | 2018-05-14 | Apple Inc | Intelligent task discovery |
DK179415B1 (en) | 2016-06-11 | 2018-06-14 | Apple Inc | Intelligent device arbitration and control |
US10593346B2 (en) | 2016-12-22 | 2020-03-17 | Apple Inc. | Rank-reduced token representation for automatic speech recognition |
DK179745B1 (en) | 2017-05-12 | 2019-05-01 | Apple Inc. | SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT |
DK201770431A1 (en) | 2017-05-15 | 2018-12-20 | Apple Inc. | Optimizing dialogue policy decisions for digital assistants using implicit feedback |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4490811A (en) * | 1979-03-14 | 1984-12-25 | Yianilos Peter N | String comparator device system circuit and method |
US4777617A (en) * | 1987-03-12 | 1988-10-11 | International Business Machines Corporation | Method for verifying spelling of compound words |
US4873634A (en) * | 1987-03-27 | 1989-10-10 | International Business Machines Corporation | Spelling assistance method for compound words |
US4864501A (en) * | 1987-10-07 | 1989-09-05 | Houghton Mifflin Company | Word annotation system |
US5113340A (en) * | 1988-05-25 | 1992-05-12 | Franklin Electronic Publishers, Incorporated | Search improvements for electronic spelling machine |
US5323316A (en) * | 1991-02-01 | 1994-06-21 | Wang Laboratories, Inc. | Morphological analyzer |
-
1994
- 1994-09-01 JP JP6208307A patent/JPH0877173A/ja not_active Withdrawn
-
1995
- 1995-08-31 US US08/521,725 patent/US5774834A/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101491581B1 (ko) * | 2008-04-07 | 2015-02-24 | 삼성전자주식회사 | 철자 오류 보정 시스템 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
US5774834A (en) | 1998-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0877173A (ja) | 文字列修正システムとその方法 | |
US7809744B2 (en) | Method and system for approximate string matching | |
US6023536A (en) | Character string correction system and method using error pattern | |
US5572423A (en) | Method for correcting spelling using error frequencies | |
JP4544674B2 (ja) | 選択文字列に関連する情報を提供するシステム | |
US5890103A (en) | Method and apparatus for improved tokenization of natural language text | |
US5680628A (en) | Method and apparatus for automated search and retrieval process | |
US8015175B2 (en) | Language independent stemming | |
EP0378848A2 (en) | Method for use of morphological information to cross reference keywords used for information retrieval | |
US20050091030A1 (en) | Compound word breaker and spell checker | |
JP2013117978A (ja) | タイピング効率向上のためのタイピング候補の生成方法 | |
Hodge et al. | A comparison of standard spell checking algorithms and a novel binary neural approach | |
KR20050007547A (ko) | 단어 인식 방법 및 시스템 및 컴퓨터 프로그램 메모리저장 디바이스 | |
JPS63254559A (ja) | 複合ワードのためのスペリング援助方法 | |
US5396419A (en) | Pre-edit support method and apparatus | |
US5560037A (en) | Compact hyphenation point data | |
JPH0211934B2 (ja) | ||
Kaur et al. | Spell checker for Punjabi language using deep neural network | |
KR20170107808A (ko) | 원문문장을 번역 소단위들로 분할하고 소번역단위들의 번역어순을 결정하는 번역어순패턴 데이터 구조, 이를 생성하기 위한 명령어들을 저장한 컴퓨터 판독가능한 저장매체 및 이를 가지고 번역을 수행하는 컴퓨터 판독가능한 저장매체에 저장된 번역 프로그램 | |
Rachidi et al. | Arabic user search Query correction and expansion | |
JP2595934B2 (ja) | 仮名漢字変換処理装置 | |
JP3531222B2 (ja) | 類似文字列検索装置 | |
JP3343941B2 (ja) | 例文検索システム | |
EP0539965B1 (en) | An electronic dictionary including a pointer file and a word information correction file | |
Pradhan et al. | Design of Odia Spell Checker with word Prediction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20011106 |