7

私は、調査プログラムに取り組んでおり、最初に調査に回答した人にプロモーションの考慮事項が与えられます。多くのシナリオで、人々がシステムをだまして不当な昇進をさせないようにする唯一の方法は、番地の文字列を相互に照合することです。

レーベンシュタイン距離を使用して類似性を測定する数値を取得し、特定のしきい値を下回るものを重複と見なすことを検討していました。

ただし、システムを操作しようとしている場合、「South Fifth Street」の代わりに「S 5th St」と簡単に書くことができ、レーベンシュタインはこれらの文字列は非常に異なると見なすでしょう。それで、すべての文字列を「標準の住所形式」に変換することを考えていました。つまり、「South」は「s」になり、「Fifth」は「5th」になります。

それから私はこれは絶望的であり、それを確実に機能させるにはあまりにも多くの努力をしていると思っていました. それは...ですか?

私は PHP/MySql を使用しているため、そのシステムに固有の制限があります。

4

3 に答える 3

4

あなたの 2 番目のアイデアは、レーベンシュタイン距離を使用するよりも優れていると思います。住所の類似性を比較しようとすると、近くに住んでいる 2 人の異なる人が、誤ってお互いの賞金を「ごまかす」可能性があります。「S. 4th St.」に住んでいる場合 しかし、「S. 5th St.」の私の隣人。すでにサインアップしている場合、これら 2 つのアドレスはレフ距離が似すぎているように見えるかもしれません。

シノニム ノーマライザーを介してアドレスを実行することで、多くの不正行為の可能性を減らすことができます (ただし、おそらくなくすことはできません)。等しいかどうかを確認する前に、変換するだけです

North -> N.
East -> E.
...
First -> 1st
Second -> 2nd
Third -> 3rd
...
Street -> St.
Avenue -> Ave.

思いついた同義語のリストが長いほど、一致を捉えやすくなります。処理は少し遅くなりますが、アドレスは小さいです。

これは、文字列を比較する前にすべて小文字 (または大文字) に変換するのと似ています。(もちろんこちらもオススメです。)

于 2010-05-20T16:54:40.947 に答える
0

Google Map API (またはその他のマッピング API) を使用して、住所を地理的位置 (緯度/経度) として正規化できます。

于 2010-05-20T16:27:14.427 に答える
0

関連する議論については、これらの 質問を参照してください。

  • 最初にデータを可能な限り正規化します。

    avenue -> ave road -> rd Rd. -> rd

    最初 -> 1 最初 -> 1

SOUNDEXなどを調べて、単語が同じように聞こえてもスペルが異なる場合 (Schmitt、Schmitd、Smith など) を見つけることができます。SOUNDEX は単語レベルで機能するため、最初にアドレスを単語に分割し、SOUNDEX 値を比較する必要があります。


また、住所を Google マップなどの地理位置情報サービスにフィードし、結果の経度と緯度をデータベースに保存することもできます。新しい住所が入力されると、経度/緯度が取得され、データベース内の既存の場所と比較されます。 詳細については、この質問を参照してください。

于 2010-05-20T18:17:58.377 に答える