基本的に、私は(必ずしも正確ではない)最も近い一致を見つける方法を見つけようとしています。String
たとえば"delicous"
、{"pie", "delicious", "test"}
これは非常に明白ですが、配列内の値は必ずしもそれほど明確ではない場合があります。
誰かがこれを達成する方法を手伝ってくれませんか。
基本的に、私は(必ずしも正確ではない)最も近い一致を見つける方法を見つけようとしています。String
たとえば"delicous"
、{"pie", "delicious", "test"}
これは非常に明白ですが、配列内の値は必ずしもそれほど明確ではない場合があります。
誰かがこれを達成する方法を手伝ってくれませんか。
「最も近い」の定義方法によって異なりますが、一般的な方法の1つは、レーベンシュタイン距離スコアを使用することです。Apache Commonsには、StringUtilsにそのようなメソッドがあります。
そこから、検索方法は基本的に次のようになります。特定の入力に対して最小のレーベンシュタイン距離を持つコレクション内の文字列を検索します。
そのためにJavaに組み込まれているものはありません。SecondStringやFREJなどのサードパーティ製ライブラリを試すことができます。
レーベンシュタイン距離と組み合わせて使用できる別のアプローチは、最初に単語の音声表現を取得することです。これを行うための1つのアルゴリズムはMetaphoneです。
Apache Commons Codecのユーザーガイドには、このエンコーダーと他のいくつかのエンコーダーの詳細が記載されています。