6

約 1000 店舗の情報を含む MySQL データベース テーブルがあります。現在、Excel スプレッドシートをアップロードして、より多くのショップをインポートする予定であり、重複を避けようとしています。

  • ショップの名前は同じかもしれませんが、住所が同じになることはありません。
  • 店は同じ住所を持っているかもしれませんが、決して同じ名前ではありません

しかし、ここに私の問題があります。

  • ストアのスペルが間違っている可能性があります
  • アドレスのスペルが間違っている可能性があります

現在、データを一時テーブルにインポートしています。今、輸入店と既存店を比較するにはどうするのがベストなのだろうかと考えています。

私の計画は、各行を見て、お店を比較することです.

  • まず、a.name = b.name AND a.street = b.street を比較します。マッチすると、ショップが削除されます。
  • 次に、名前と通りについてレーベンシュタイン比較を行います。ここでは、結果が重複しているかどうかを判断するために、結果を手動で確認する必要があるでしょう。

この種のデータ比較の経験がある人はいますか?

更新
良い回答をありがとう。

比較に使用されるフィールドは次のとおりです。

  • 名前
  • 住所
  • 郵便番号

私はこれらの線に沿って何かを考えています:

name = Lavenshtein および country = country の行を選択します。
そうすれば、小さなリストを操作するだけで済みます。

次に、名前と住所をより徹底的に比較し始めます。

4

2 に答える 2

4

レーベンシュタイン距離はそれを行う方法であり、手動入力を回避できます。ただし、実際の実装は、データに関する何らかの事前知識に依存します。スペルにどれだけのエラーが予想されるかなど。

たとえば、高品質のデータであり、タイプミスのみが予想される場合、1) 単語数は同じですか? に基づいて一致条件を生成できます。2) これらの単語のシーケンス 3) 名前の各単語のレーベンシュタイン距離で許容されるエラーの小さなしきい値。

名前が曖昧な場合やその逆の場合は、同様の条件の住所と照合することで、条件を強化できます。

于 2011-07-28T08:27:22.097 に答える
3

Shaunakの答えに対する私のコメントを拡張するために、私がこれを行ったときに取ったアプローチは次のとおりです。

優先順位に従って、各名前の一連の「ハッシュ」を作成します。たとえば、英国の一連の金融会社では、次を使用しました。

  • "ハッシュ" 1: 正確な会社名 (例: "St. John & James' Financial Investments Ltd.")。
  • ハッシュ 2: 英数字以外の文字をすべて取り除き、スペースを正規化した会社名: "St John James Financial Investments Ltd"
  • ハッシュ 3: 一般的な略語を拡張。たとえば、「1st」から「First」、「Ltd」から「Limited」: 「Saint John James Financial Investments Limited」。また、よくあるスペルミスもここで行いました。たとえば、"Independent" を "Independent" に変更しました。一般的なスペルミスは、ソース データによって明らかに異なります。
  • ハッシュ 4: "停止" 語 ("The"、"Limited" など) を削除: "Saint John James Financial Investments"。

私はそれらすべてをテーブルに押し込み、ハッシュ 1、ハッシュ 2、ハッシュ 3、ハッシュ 4 の一致に基づいて、テーブル内の各会社名を他のすべての会社名と比較するクエリを作成しました。これにより、信頼係数が得られました。一致したハッシュの数が多いほど、実際には同じ企業である可能性が高くなります。(私が取ったアプローチでは、ハッシュ 1 が一致する場合、ハッシュ 2、3、および 4 が一致することが保証されていることに注意してください。)

(空のハッシュもチェックし、無視します。「The Limited Company」は空のハッシュに縮小できますが、他の空のハッシュと一致させたくありません。)

このアプローチをレーベンシュタインと一緒に使用して、可能性のある重複を可能性の高い順序にフィルタリングしました。レーベンシュタインでこの可能なアプローチをどこに適合させるかは、データによって異なります。たとえば、実際の名前ではなく 3 番目のハッシュに Levenshein を適用することをお勧めします。また、可能性のある重複のリストをビジネス担当者に提示して、最終的な決定を下してもらいます。名前は実際に同じ会社を表していました。

私のコードを見ると、ストップワードなどを取り除いた後の各単語のSoundex変換であるハッシュも使用しましたが、私のコメントは、Metaphoneの方が優れていたと述べています(私はSQL Serverを使用していたので、Soundexが組み込まれていました... )

于 2011-07-28T09:07:20.433 に答える