都市名のスペルチェック?
-
06-07-2019 - |
質問
この問題は、米国の都市のリストがすべての既知の英単語に比べて小さいため、通常のスペルチェッカーよりも簡単だと思います。
とにかく、ここに問題があります: 市の名前でいっぱいのテキストファイルがあります。いくつかは正しくつづられていて、いくつかはそうではありません。
都市名のすべてのスペルミスを修正するには、どのようなアルゴリズムを使用できますか?
解決
実際にスペルミスを修正する必要があるのですか、それとも通常のスペルチェッカーのようにフラグを立てるだけですか?後者の場合、正しいスペルのリストを取得し、各名前がリスト内の名前と同じであることを確認する必要があります。
実際に修正したい場合は、距離を編集スペルミスのある文字列と参照リストの文字列の類似性を比較します。次に、スペルミスの単語を最も近い一致に置き換えることができます。また、目的の都市がリストにない可能性を処理することもできます。
レーベンシュタイン距離 Wikipediaの記事は、もう1つの優れたリソースです。
他のヒント
トリックは、名前が実際にどの都市を参照しているか、どのように都市名が正しくスペルされているかを知ることです。英語の単語をチェックするのと同じではありません。
解決しようとしている実際のタスクは何ですか?アドレス一覧を処理していますか?そのための独自のツールを書くべきではありません。この一見単純なタスクに専念している業界全体があります。 :)
Perlレビューのサブスクリプションリストに対してこれを行う必要があります。私は世界中のさまざまな郵便局のウェブサービスに非常に精通しています。多くの場合、郵便サービスのWebサイトにアクセスして、正規形式の住所を取得できます。同じデータを取得できるジオコーディングツールがあります。
これをやった。編集距離アプローチは私がやったことであり、かなりうまく機能しますが、リアルタイムで実行するには遅すぎます。
直面する課題の1つは、他の都市名から1編集距離離れた都市が多数あることです。テキストファイルの名前がどこから来たかは言わなかったので、大きな違いがあります。私の場合、検索のために都市名を入力している人はランダムで、意図した都市のスペルを間違えることがありましたが、スペルミスは実際の都市名でした。この場合、ユーザーの意図について推測する必要があります。これを行う簡単な方法の1つは、提供されている場合は状態を考慮することです。
Webには、スペルミスの多い都市名のリストがあります(ピッツバーグ h など)。それ以外はジェレミーと一緒です。都市名のデータセットを見つけたら、USGSを試してみてください。 Zillowには、それを使用できる可能性のある近隣データがあります。
ファイル内で同じ都市名が複数回出現する場合、各都市名の出現回数を使用して、一度だけ出現するものにフラグを立てることができます。