4

2つの単語が非常に近いことを確認したいと思います。私のニーズは本当に単純です。ユーザーが電子メールに応答することでアクションを実行できるようにし、ユーザーは1つの単語(、など)で応答する必要がありAPPROVEDますREFUSED。可能なアクションのリストは本当に短いです。ここで、この回答を解析する必要がありますが、比較は「タイプミスセーフ」である必要があります。つまり、ユーザー入力がそうである場合、aprovedまたはapporvedたとえば、問題がない場合です。

もちろん、私は自分のほぼ大丈夫な単語(["Approved", "Aproved", "Apporved", ...])を作成し、ユーザー入力をこの配列の各要素と比較することができますが、考えられるすべてのタイプミスを定義するのは本当に退屈です...

Luceneでそれができることは知っていますが、それは私のニーズには少し多すぎるように思われます。理想的には、のような方法が必要WordUtils.proximity("Approved", userInput)です。さらに、私の場合、音声による比較は必須ではありません。

それができる小さな図書館はありますか?

4

1 に答える 1

5

文字列のレーベンシュタイン距離を使用して、文字列がどれだけ近いかを示すことができます。

より多くの文字列距離アルゴリズムがあると思いますが、以前はこれを使用していて、うまくいきました。

これが、アルゴリズムの実装/文字列/レーベンシュタイン距離を試すことができる実装です。

また、 Apache Commons-LangのStringUtils#getLevenshteinDistance()を使用できます。

于 2012-12-12T10:08:48.463 に答える