特定の要件に対応するソリューションをコーディングする必要があります。それを実現できる既成のライブラリに精通している人がいるか、ベストプラクティスを教えてくれる人がいるかを知りたいと思いました。説明:
ユーザーは、いくつかの固定オプションの1つであると思われる単語を入力します(私はオプションをリストに保持しています)。入力はリストのメンバーに含まれている必要がありますが、ユーザー入力であるため、間違いを犯した可能性があります。ユーザーが意味する最も可能性の高い単語を教えてくれるアルゴリズムを探しています。私にはコンテキストがなく、ユーザーにリストから選択するように強制することはできません(つまり、ユーザーは単語を自由に手動で入力できる必要があります)。
たとえば、リストに「water」、「quarter」、「beer」、「beet」、「hell」、「hello」、「aardvark」という単語が含まれているとします。
ソリューションは、さまざまなタイプの「通常の」エラーを考慮する必要があります。
- スピードのタイプミス(例:文字の2倍、文字の削除など)
- キーボードの隣接文字のタイプミス(例:「水」の「カタール」)
- 英語を母国語としないタイプミス(例:「クォーター」の「クォーター」)
- 等々...
明らかな解決策は、文字ごとに比較し、それぞれの異なる文字、余分な文字、欠落している文字に「ペナルティの重み」を与えることです。しかし、このソリューションは、どこかにリストされていると確信している何千もの「標準」エラーを無視します。おそらく標準の不一致の大規模なデータベースを使用して、特定のケースと一般的なケースの両方を処理するヒューリスティックが存在すると確信しています(データ量の多いソリューションを受け入れています)。
私はPythonでコーディングしていますが、この質問は言語に依存しないと考えています。
推奨事項/考えはありますか?