ダメラウ・レーベンシュタイン距離とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > ダメラウ・レーベンシュタイン距離の意味・解説 

ダメラウ・レーベンシュタイン距離

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/03/13 02:02 UTC 版)

ダメラウ・レーベンシュタイン距離(ダメラウ・レーベンシュタインきょり、: Damerau–Levenshtein distance)は、2つの配列の間の編集距離を測定するために情報理論計算機科学で使われる文字列計量である。2つの単語間のダメラウ・レーベンシュタイン距離は、一方の単語を他方の単語に変換するのに必要な最小の操作回数である。ここで1回の「操作」とは1文字の挿入、削除、置換、あるいは2つの隣り合う文字の交換である。ダメラウ・レーベンシュタイン距離はフレデリック J. ダメラウ英語版ウラジミール I. レーベンシュタインにちなんで名付けられた[1][2] [3]

古典的なレーベンシュタイン距離を定義する操作は3つの古典的単文字編集操作、すなわち文字の挿入、削除、および置換である。ダメラウ・レーベンシュタイン距離を定義する操作にはこれらに加えて隣接文字交換が含まれている[4][2]

ダメラウによると、スペルミス全体の80%以上は、これら4操作のうちの1操作の誤り1つで表現できる[5]。ダメラウの論文では、最大1回の編集操作で訂正できる綴り間違いのみが考慮されていた。当初の動機は、スペルチェッカなどのアプリケーション・ソフトウェアを改善するために人間のスペルミス間の距離を測定することであったが、ダメラウ・レーベンシュタイン距離は、生物学においてタンパク質配列の変異を測定するためにも使われている[6]

ダメラウ・レーベンシュタイン距離と制限ダメラウ・レーベンシュタイン距離

同じ文字列を2度以上編集することを許さない条件のもとで求められる編集距離を制限編集距離と呼ぶ。制限編集距離は最適文字列整列距離と呼ばれる量に一致することが知られている。この条件を課さない(つまり同じ文字列を1回より多く編集してよい)場合には、単に編集距離と呼ぶ。制限レーベンシュタイン距離は常にレーベンシュタイン距離に一致する。これは、レーベンシュタイン距離の計算では編集操作は1文字ごとであり、1度編集した文字列を2度編集する必要がないからである。しかし2文字の編集操作が存在するダメラウ・レーベンシュタイン距離に関しては、制限ダメラウ・レーベンシュタイン距離とダメラウ・レーベンシュタイン距離とが一致しない場合がある。

例として、CAABCの編集距離を求める。CAに1回の隣接文字交換および1回の文字挿入を施せば CAACABC となるから、ダメラウ・レーベンシュタイン距離は


ダメラウ・レーベンシュタイン距離

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/25 09:06 UTC 版)

「ダメラウ・レーベンシュタイン距離」の記事における「ダメラウ・レーベンシュタイン距離」の解説

次は、真のダメラウ・レーベンシュタイン距離を求めアルゴリズムである。このアルゴリズムでは、アルファベット含まれる全文字 Σ の個数 | Σ | {\displaystyle |\Sigma |} が必要になる成分が [0, |Σ|) に含まれる配列を使うからである:A:93擬似コードは: algorithm DL-distance is input: strings a[1..length(a)], b[1..length(b)] output: distance, integer da := |Σ|個の整数からなる配列 for i := 1 to |Σ| inclusive do da[i] := 0 let d[−1..length(a), −1..length(b)] // d は次元length(a)+2, length(b)+2 の二次元整数配列 // d の添字は -1 から始まり、a, b, および da添字は 1 から始まることに注意 maxdist := length(a) + length(b) d[−1, −1] := maxdist for i := 0 to length(a) inclusive do d[i, −1] := maxdist d[i, 0] := i for j := 0 to length(b) inclusive do d[−1, j] := maxdist d[0, j] := j for i := 1 to length(a) inclusive do db := 0 for j := 1 to length(b) inclusive do k := da[b[j]] ℓ := db if a[i] = b[j] then cost := 0 db := j else cost := 1 d[i, j] := minimum(d[i−1, j−1] + cost, //置換 d[i, j−1] + 1, //挿入 d[i−1, j ] + 1, //削除 d[k−1, ℓ−1] + (i−k−1) + 1 + (j-ℓ−1)) //交換 da[a[i]] := i return d[length(a), length(b)] 非制限ダメラウ・レーベンシュタイン距離求め正しアルゴリズム作るには次のことに注意する1度交換され文字そのあと2度編集されないよう編集操作最適配列存在する交換コスト W T {\displaystyle W_{T}} が挿入コスト W I {\displaystyle W_{I}} と削除コスト W D {\displaystyle W_{D}} の平均以上つまり 2 W T ≥ W I + W D {\displaystyle 2W_{T}\geq W_{I}+W_{D}} の場合成立する)。したがって1つ部分文字列を2回以上編集する2つ対称方法隣接文字交換して任意の個数文字その間挿入する 文字列削除し、その削除によって新たに隣り合うことになった隣接文字交換するいずれかだけを考えればよい。このアイディア素直に実行するアルゴリズムは、文字列長さ M {\displaystyle M} および N {\displaystyle N} に対して O ( M Nmax ( M , N ) ) {\displaystyle O(MN\cdot \max(M,N))} の計算複雑性を持つ。ローランスとワグナーアイディア使ったアルゴリズムでは、最悪場合でも O ( M N ) {\displaystyle O(MN)} に改善されるBitapアルゴリズムを、隣接交換処理するように変更できる。この例について参考文献情報収集の節を見よ

※この「ダメラウ・レーベンシュタイン距離」の解説は、「ダメラウ・レーベンシュタイン距離」の解説の一部です。
「ダメラウ・レーベンシュタイン距離」を含む「ダメラウ・レーベンシュタイン距離」の記事については、「ダメラウ・レーベンシュタイン距離」の概要を参照ください。

ウィキペディア小見出し辞書の「ダメラウ・レーベンシュタイン距離」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ダメラウ・レーベンシュタイン距離」の関連用語

ダメラウ・レーベンシュタイン距離のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ダメラウ・レーベンシュタイン距離のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのダメラウ・レーベンシュタイン距離 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのダメラウ・レーベンシュタイン距離 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS