都市/州/郵便番号/国の複数の組み合わせでユーザーからの入力を解析するためのアドバイスを探しています。
一般的な例は、Google マップの機能です。
入力の例は次のとおりです。
- 「市、州、国」
- 「都市、国」
- 「都市、郵便番号、国」
- 「市、州、郵便番号」
- "郵便番号"
ユーザーからのこの入力を解析する効率的で正しい方法は何でしょうか?
実装例を知っている場合は、共有してください:)
都市/州/郵便番号/国の複数の組み合わせでユーザーからの入力を解析するためのアドバイスを探しています。
一般的な例は、Google マップの機能です。
入力の例は次のとおりです。
ユーザーからのこの入力を解析する効率的で正しい方法は何でしょうか?
実装例を知っている場合は、共有してください:)
最初のステップは、区切り文字としてスペースまたはコンマを使用して、テキストを個々のトークンに分割することです。スケーラビリティのために、各トークンをスレッドまたはサーバー (Map-Reducer のようなアーキテクチャを使用している場合) に渡して、各トークンが何であるかを把握できます。例えば、
個々のトークンの結果が得られたら、パーツをつなぎ合わせて完全なアドレスを取得できます。質問がある場合は、ユーザーが実際に何を意味するか (Google マップなど) を促し、その情報を学習済みリストに追加できます。
そのサポートをアプリケーションに追加する最も簡単な方法は、地図システムを構築しようとしているのではなく、Google または Yahoo に問い合わせて、日付を解析するよう依頼することです。
私自身、Google がそれをどのように処理しているかに非常に魅了されています。他のどこかで同じようなものを見た記憶がありません。
スペース、コンマ、セミコロンなど、さまざまな区切り文字を試して、入力文字列を単語で区切ろうとすると、いくつかの組み合わせがあります。組み合わせごとに、各単語を国、都市、町、郵便番号のデータベースと照合します。次に、組み合わせごとにグループ マッチの結果を評価する方法に関するメトリクスを定義します。郵便番号がうまく一致しないが、国、都市、町がうまく一致し、組み合わせが有効な住所を参照している場合、メトリクスは高い評価を得ます。
それは確かに難しく、夜のコード演習ではありません。また、強力な計算リソースも必要です。共有ホスティングは、わずか 10 件のリクエストでクラックする可能性がありますが、データ センターであれば問題なく処理できます。
実装例があるかどうかはわかりません。多くの地理的サービスが有料で提供されています。GoogleMaps のように洗練されたものは、かなりの費用がかかる可能性があります。
私が間違っている場合は修正してください。
これらの 4 つのフィールド (City Zip State Country) のみを扱っていると仮定すると、City を除くすべてのフィールドに有限の値があり、大きな都市のリストがある場合でも有限であると推測します。したがって、各フィールドをコンマで分割してから、各フィールド リストと照合してください。
米国の住所について話していると仮定すると-
効率に関する限り、ダンが示唆するように、最初にいくつかの「標準」形式をチェックすることは理にかなっているかもしれません。