レーベンシュタイン距離(編集距離)の計算
2つの文字列を入れると、一方をもう一方に変えるのに必要な、文字の挿入・削除・置換の最小回数(レーベンシュタイン距離)と、似ている度合い(類似度)を計算します。
計算方法
レーベンシュタイン距離は、文字を1つ「挿入する」「削除する」「置き換える」を、それぞれ1回の操作として数えます。一方の文字列をもう一方に変えるのに必要な、最小の操作回数です。
例:「かき氷」と「かき水」は、3文字目の「氷」を「水」に置き換える1回の操作で変えられるため、距離は1です。「さかな」と「さな」は1文字を消すだけなので1、「たなか」と「なかた」は2回の操作が必要で2になります。
計算は、2つの文字列を縦と横に並べた表を1マスずつ埋めていく動的計画法という方法で行います。左上から順に、そこまでの最小回数を使って次のマスを決めるため、すべての直し方を試さなくても最小回数が求まります。
類似度(%)=(1 − 距離 ÷ 長いほうの文字数)× 100
例:5文字と5文字で距離が1なら、(1−1÷5)×100=80%です。距離が長いほうの文字数と同じときは0%になります。
ひらがなとカタカナ、全角と半角、大文字と小文字は、それぞれ別の文字として数えます。そろえて比べたいときは、書き方をそろえてから入れてください。隣どうしの文字を入れ替える直し方は、この距離では2回の操作として数えます。
出典:レーベンシュタイン距離(編集距離)の定義(1文字の挿入・削除・置換をそれぞれ1回の操作として数える最小回数、動的計画法による計算)
よくある質問
類似度はどう計算している?
距離を、長いほうの文字列の文字数で割って、1から引いた割合です。文字列がまったく同じなら100%、まったく共通点がなければ0%に近づきます。
どんな場面で使う?
入力ミス(タイプミス)の検出や、似た名前の商品・住所をあいまいに検索する仕組みなどで使われる考え方です。
ひらがなとカタカナは別の文字として数える?
はい。このツールでは、見た目が似ていても文字コードが違えば、別の文字として数えます。