ユーザー(サードパーティからのもの)からの位置入力データの正規化に関する問題で少し立ち往生しています。
ユーザーの場所の入力フィールドを論理的に分類して解釈し、1つ以上の国からの単一または複数の場所を一覧表示しているかどうかを理解します。
ユーザー入力から受け取るデータの種類は乱雑で、以下に示すような論理構造や一貫性がありません。毎日のジオコードはグーグルから制限されているので、私はそれらを控えめに使用する必要があります。ユーザーからの位置入力を効率的に処理し、正しいジオコーディングクエリをGoogleに送信して、正しい結果を取得したいと考えています。
データは不合理で不規則であり、次の形式のいくつかで提供される可能性があります。
London, UK Alternative format
England, London Reversed order
London Generic location
London Sheffield, Newcastle Three separate locations in the same country without consistent commas
London, Sales, Sales Assistant Non location content inserted
London [NOT SPECIFIED] Other non location content inserted with non alphabet chars not separate with commas
London, Washington, Brazil, England Mix of unrelated locations, including cities and countries
Washington, London, Kent Mix of places within a single country
ステップ1:内訳データ
ステップ2:データのサニタイズ
ステップ3:有効な場所かどうかを判断する
ステップ4:インターリンク値
問題1:ケント、ロンドン、サセックス技術的には、米国にケントがあり、グーグルマップに入力すると最初に表示されます。ただし、すべての結果が英国であるため、必要な結果が米国のものである可能性は非常に低いです。
問題2:イングランド、ワシントン、ニューヨークイングランドにはワシントンがありますが、これはイングランドにあるとは思われません。
単語を別々のエンティティに分割し、それらを再リンクするという私の提案された解決策は、最も論理的な解決策ですか?どんな助けやアドバイスも大歓迎です、私はそれが簡単な問題ではないことを知っています。
私はその質問に答えようとします。 :)
仮定:リアルタイムのジオコード分析は必要ないと仮定します。以下のソリューションはバックグラウンドで機能し、古くなるにつれて自動的に改善され続けます。
データベースには、国、州、都市などの巨大なリポジトリが必要です。これが、住所が関連しているかどうかを追跡できる唯一の方法です
役立つかもしれないいくつかの疑似アルゴリズム:
上記のステップでGoogleが何も得られない場合は、そのような種類のものを提供するWebサイトがいくつかある可能性があります。そこに到達するためにWebクロールを行うことができます。
上記の手順から、ストップリストに追加するストップワードをさらに取得できます。
国、州、都市を簡単に知ることができるので、ジオコーディングする準備が整いました。
後で使用できるように、ジオコーディングの結果を保存する必要があります。
注:ストップリストの再評価ポリシーを検討することもできます。その後しばらくして、許可された単語として単語を再考することができます。あなたのストップリストにある名前の新しい場所があるかもしれないことを知っている世界は成長しています:)
免責事項:私はジオコードに取り組んだことがなく、それについてあまり研究していません。私は概念的な答えとして解決策を示しています。
それが役に立てば幸い