3

Google で単語のつづりを間違えると (たとえば、"appples")、おなじみの "Did you mean: apples " という候補が表示されます。

検索結果の関連性に基づいてユーザーの意図を推測する Google の機能を除いて、どうすれば同じように聞こえる単語のリストを作成できますか?

単語は英語である必要はなく、存在する必要もありません。たとえば、「hole」という入力を与えると、「whole」「hola」「whore」「role」「molar」などの単語を含むリストが返されます。

このリストを作成できるオンラインの何かがあるのではないかと推測していますが、何も見つかりませんでした。サイトがなく、Perl を使用して実行できる場合、これを行うのに役立つ CPAN モジュールはありますか?

4

2 に答える 2

5

検索候補だけでなく、同じように聞こえる単語を本当に探している場合は、音声アルゴリズムを調べることができます。Soundex と Metaphone/Double Metaphone は 2 つの非常に一般的なもので、一般的な言語でそれぞれの実装があります。

これらのアルゴリズムは、単語をその発音を示す「キー」にまで減らします。単語のコーパスを取得して、これらのキーをそれらに評価される単語にマッピングするデータ構造を構築した場合、任意の文字列を取得し、その「キー」まで評価してから、同じに評価される他の単語を検索できます。データ構造のキー (おそらくリストのハッシュ テーブルなど)。

データセットにシードする単語の大きなコーパスを見つける必要があるため、これは完璧ではありませんが、うまくいきます。

一方、単純に検索候補や別のスペルが必要な場合は、もっと簡単な方法があります。

お役に立てば幸いです。

于 2012-02-01T21:11:08.543 に答える
2

モジュール Text::Soundex について学ぶことから始めることができます。これは、単語を 4 バイト コードにマップする単純なアルゴリズムです。私はずっと前に Sedgewick (ex Knuth) から Soundex を入手し、それを使用してより長いキー (切り捨てられていない) を生成し、0 文字と 1 文字の置換の修正リストを提案しました。これを国勢調査と郵便データの大規模なデータベースに適用しました。

于 2012-02-01T21:14:14.233 に答える