アルファベットΣ (例えば、 ASCII文字の集合、バイトの集合[0..255] など)上の2 つの文字列aとbが与えられたとき、編集距離d( a , b )は、 a をbに変換する最小重みの編集操作の系列です。最も単純な編集操作の集合の 1 つは、1966 年にレーベンシュタインによって定義されたものです。[ 2 ]
単一の記号を挿入する。a = u vの場合、記号xを挿入するとu x vとなる。これは、空文字列を表す ε を用いてε→ xと表記することもできる。
1つの記号を削除すると、 u x vはu v ( x →ε)に変わります。
単一の記号xを記号y ≠ xに置き換えると、 u x vはu y v ( x → y )に変わります。
レーベンシュタインの元の定義では、これらの操作はそれぞれ単位コストを持ちます(ただし、文字をそれ自体で置換する場合はコストがゼロです)。したがって、レーベンシュタイン距離は、a をbに変換するために必要な最小操作数に等しくなります。より一般的な定義では、非負の重み関数w ins ( x ) 、w del ( x ) およびw sub ( x , y ) が操作に関連付けられます。[ 2 ]
追加の基本操作が提案されています。Damerau –Levenshtein 距離は、一般的な間違いである隣接する 2 つの文字の転置を 1 つの編集としてカウントします。これは、 u x y vをu y x vに変更する操作によって正式に特徴付けられます。[ 3 ] [ 4 ] OCR出力 の修正タスクでは、単一の文字を 2 つの文字に置き換えるか、その逆を行うマージおよび分割操作が使用されています。[ 4 ]
aとb が共通の接頭辞を持つ場合、この接頭辞は距離に影響を与えません。正式には、a = uvかつb = uwの場合、d ( a , b ) = d ( v , w ) となります。[ 4 ]これにより、共通の接頭辞と接尾辞を線形時間でスキップできるため、編集距離と編集スクリプトを含む多くの計算を高速化できます。
このアルゴリズムの時間計算量はΘ( m n ) で、mとn は文字列の長さです。完全な動的計画法テーブルが構築されると、その空間計算量もΘ( m n )になります。任意の時点でアルゴリズムがメモリに 2 行 (または 2 列) しか必要としないことに着目すると、これはΘ(min( m , n ))に改善できます。ただし、この最適化により、最小限の編集操作の系列を読み取ることが不可能になります。[ 3 ]この問題に対する線形空間の解法は、ヒルシュベルクのアルゴリズムによって提供されています。[ 8 ] : 634このような再帰を解決し、入力のサイズに線形な空間でキャッシュ効率よく最適な操作のシーケンスを抽出するための一般的な再帰的分割統治フレームワークは、Chowdhury、Le、および Ramachandran によって提供されています。[ 9 ]
アルゴリズムの改善
上記のワグナー・フィッシャーアルゴリズムを改良し、ウッコネンはいくつかのバリアントを記述している[ 10 ]。そのうちの1つは、2つの文字列と最大編集距離sを受け取り、min( s , d )を返す。これは、動的計画法テーブルの対角線付近の一部のみを計算して保存することで実現される。このアルゴリズムの実行時間はO( s ×min( m , n ))であり、mとnは文字列の長さである。空間計算量は、編集シーケンスを読み取る必要があるかどうかに応じて、O( s2 )またはO( s )となる[ 3 ] 。
ランダウ、マイヤーズ、シュミットによるさらなる改良O( s2 + max( m , n )) の時間アルゴリズムを与える。[ 11 ]
1 2 3 4 Daniel Jurafsky; James H. Martin. Speech and Language Processing . Pearson Education International. pp. 107–111 .
1 2 3 4 5 Esko Ukkonen (1983). On approximate string matching . Foundations of Computation Theory. Springer. pp. 487–495 . doi : 10.1007/3-540-12689-9_129 .
1 2 3 4 Schulz, Klaus U.; Mihov, Stoyan (2002). "レーベンシュタインオートマタによる高速文字列修正". International Journal of Document Analysis and Recognition . 5 (1): 67– 85. CiteSeerX 10.1.1.16.652 . doi : 10.1007/s10032-002-0082-8 . S2CID 207046453 .
↑ Lei Chen; Raymond Ng (2004). On the marriage of L p -norms and edit distance (PDF) . Proc. 30th Int'l Conf. on Very Large Databases (VLDB). Vol. 30. doi : 10.1016/b978-012088469-8.50070-x .
↑ Kukich, Karen (1992). "Techniques for Automatically Correcting Words in Text" (PDF) . ACM Computing Surveys . 24 (4): 377– 439. doi : 10.1145/146370.146380 . S2CID 5431215 . 2016-09-27 のオリジナル(PDF)からアーカイブ済み。2017-11-09に取得。
↑ R. Wagner; M. Fischer (1974). "The string-to-string correction problem" . J. ACM . 21 : 168–178 . doi : 10.1145/321796.321811 . S2CID 13381535 .
↑ Masek, William J.; Paterson, Michael S. (1980 年 2 月). "文字列編集距離を計算するより高速なアルゴリズム" . Journal of Computer and System Sciences . 20 (1): 18–31 . doi : 10.1016/0022-0000(80)90002-1 . hdl : 1721.1/148933 . ISSN 0022-0000 .