11

Daitch-Mokotoff soundexing と Damerau-Levenshtein の両方を使用して、アプリケーションのユーザー エントリと値が「同じ」かどうかを調べています。

レーベンシュタイン距離は絶対値として使用することになっていますか? 20 文字の単語がある場合、4 の距離はそれほど悪くありません。単語が4文字の場合...

私が今行っているのは、距離/長さを取得して、単語の何パーセントが変更されたかをよりよく反映する距離を取得することです。

それは有効で実証済みのアプローチですか?それともただのバカですか?

4

2 に答える 2

7

レーベンシュタイン距離は絶対値として使用することになっていますか?

それはあなたの要件に依存するようです。(明確にするために:レーベンシュタイン距離絶対値ですが、OPが指摘したように、生の値は、単語の長さを考慮した尺度として、特定のアプリケーションほど有用ではない場合があります。これは、私たちが本当に距離自体よりも類似性に関心があります。)

Daitch-Mokotoff soundexing と Damerau-Levenshtein の両方を使用して、アプリケーションのユーザー エントリと値が「同じ」かどうかを調べています。

ユーザーが自分のエントリが特定のデータ値と同じであることを意図しているかどうかを判断しようとしているように聞こえますか?

スペルチェックをしていますか?または無効な入力を既知の値のセットに適合させますか? あなたの優先事項は何ですか?

  • 誤検知を最小限に抑えます (提案されたすべての単語が非常に「似ている」こと、および提案のリストが短いことを確認してください)
  • 誤検知を最小限に抑えます (リストが長くなっても、ユーザーが意図した文字列が候補のリストに含まれていることを確認してください)
  • 平均マッチング精度を最大化

レーベンシュタイン距離を 1 つの方法で使用して、候補リストに単語を提供する必要があるかどうかを判断することになる場合があります。提案リストの順序を決定する別の方法。

あなたの目的を正しく推測した場合、あなたが測定したい中心的なことは、2つの文字列の違いではなく類似性であるように思えます。そのため、文字列の長さと共通の文字数を考慮したJaro または Jaro-Winkler 距離を使用できます。

与えられた 2 つの文字列 s1 と s2 のジャロ距離 dj は、

(m / |s1| + m / |s2| + (m - t) / m) / 3

どこ:

  • m は一致する文字の数です
  • t は転置の数です

ジャロ・ウィンクラー距離は、設定されたプレフィックス長lの最初から一致する文字列に、より有利な評価を与えるプレフィックス スケールpを使用します。

于 2010-10-06T20:44:04.603 に答える
1

レーベンシュタイン距離は、2 つの単語間の相対値です。LD を長さと比較することは関係ありません。

cat -> scat = 1 (75% 類似??)

違い -> 違い = 1 (90% 類似??)

これらの単語はどちらも lev 距離が 1 です。つまり、1 文字ずつ異なりますが、長さを比較すると、2 番目のセットは「より」似ているように見えます。

私はsoundexingを使用して、同じレフ距離を持つ単語をランク付けします。

cat両方ともfatに対して 1 の LD を持っていますkatが、soundex を使用する場合、その単語は fat よりも kat である可能性が高くなります (単語の綴りが間違っていて、間違って入力されていないと仮定して!)

したがって、簡単な答えは、レフ距離を使用して類似性を判断することです。

于 2010-10-06T20:14:39.627 に答える