asp.net/c#を使用して、Googleの「Didyoumean」のような機能を実装したいと思います。ユーザーが「RedSheos」と入力し、検索を押すと、「出力は「赤い靴」を意味しましたか」と表示されます。
これどうやってするの?
ここでの私の答えは(多少異なる主題ですが)、完全に一致しないものについてのアイデアを与えるはずです。言葉がどのように「聞こえる」かを扱うために利用できるいくつかの良いオプション。レーベンシュタインから始めます。
別のアプローチを取ると、SQL Serverフルテキストインデックスは、最小限のコードで不正確なマッチングを提供することもできます。それ自体は必ずしも修正を目的としたものではありませんが、ユーザーの意図を判断することは、必ずしも音声の類似性だけを目的としているわけではありません。
リアルタイムのパフォーマンス(入力時の検索など)を実現するには、ここで説明するデータ構造(トライ、またはそのハイブリッド)を検討してください。
スペルチェッカーと辞書が必要です。NHunspellから始めることをお勧めします。
Trieデータ構造を確認します。ここを参照してくださいTrie
スペルチェッカーのほとんどは、オートコンプリート機能を実装する必要がある場合にも、ある種のTrieを実装します。また、Trieについて考えることもできます。
以下のコードレビューstackexchangeの質問を参照してください
オートコレクト機能からインスピレーションを得てみてください。基本的には、入力したテキストに対してオートコレクトを呼び出し、「解決策」が見つかった場合は、それをdid you mean
提案として示します。
これらは役立つかもしれません: