0

個人の名前、住所、電話番号などのデータセットがあります。名前や宛先、電話番号がわずかに異なる個人が複数回表示されます。偽のデータの抜粋を以下に示します。

first       last    address         phone    
Jimmy       Bamboo  P.O. Box 1190   xxx-xx-xx00
Jimmy W.    Bamboo  P.O. Box 1190   xxx-xx-xx22
James West  Bamboo  P.O. Box 219    xxx-66-xxxx

... 等々。E.は東、St。は通りと綴られることもあれば、そうでないこともあります。

私がする必要があるのは、名前、住所、電話番号に基づいて各個人を識別するために、約120,000行のデータを実行することです。各レコードを一度に1つずつ手動で実行せずに、これをどのように実行できるかについて、誰かが手がかりを持っていますか?見つめれば見るほど、判断を下し、少なくとも2つまたは3つのフィールドが同じであるかどうかを言わずに、これを1人の個人として扱うことは不可能だと思います。

ありがとう!!

アニ

4

2 に答える 2

3

コメントで述べたように、これは些細なことではありません。プログラマーの時間/ソリューションの複雑さと結果のトレードオフを決定する必要があります。100%の結果は得られません。あなたはそれに近づくことしかできません、そして時間と複雑さのコストはあなたが得る100%に近づくにつれて増加します。簡単な解決策(完全一致)から始めて、一致しなかった原因として最も一般的に発生する問題を確認します。これに対処するためのファジーソリューションを実装します。すすぎ、繰り返します。

使用できるツールはいくつかあります(すべて使用しています)。

1)ダメラウ・レーベンシュタインのような距離マッチング。名前や住所などに使用できます。転置、マイナースペル、省略された文字などのエラーを処理します。

2)音声単語のマッチング-soundexは良くありません。他にももっと進んだものがあります。私たちは、私たちが一般的に遭遇する民族の混合を処理するために私たち自身を書くことになりました。

3)ニックネームの検索-多くのニックネームは、音声または距離の一致のいずれにも捕らえられません-フランシスのファニーのような名前。そのようなニックネームはたくさんあります。ニックネームから通常の名前へのルックアップを作成できます。Jennifer-> Jen、Jenny、Jennie、Jeneeなどのバリエーションを検討してください。

名前は難しい場合があります。名前の創造的なつづりは現在の流行のようです。たとえば、私たちのデータベースにはKaitlynnという名前の30を超えるスペルのバリエーションがあり、それらはすべて実際の名前のスペルです。これにより、Katyをそれらのいずれかに一致させようとしているときに、ニックネームの一致が困難になります。

これが私がここでstackoverflowで行った同様のトピックに関する他のいくつかの答えです:

モンゴル名の処理

MySQLに人間の名前を保存するというジレンマを解決し、識別可能性と類似した名前の検索の両方を維持するにはどうすればよいですか?

MySQL Mixing Damerau–Levenshtein Fuzzy with Like Wildcard

于 2013-02-28T00:33:21.517 に答える
0

レーベンシュタイン距離のペアワイズ行列を計算できます。

詳細については、この最近の投稿を参照してください: http: //www.markvanderloo.eu/yaRb/2013/02/26/the-stringdist-package/

于 2013-02-28T00:02:04.990 に答える