7

SQLサーバーDBに保存されている何十万もの連絡先情報で重複を見つけてマージできる必要があるアプリケーションを開発しています。テーブル内のすべての列を比較する必要があります。各列には重み値があります。比較は、重み値に基づいて機能する必要があります。比較結果と同等性の程度に基づいて、連絡先を自動的にマージするか、ユーザーの注意を引くかを決定する必要があります。重複排除のためのファジー論理アルゴリズムがいくつかあることは知っています。

http://www.melissadata.com/で N-gram または Q-gram ベースのアルゴリズムについて読んでください。このアルゴリズムは、大量のデータセットに対して実行可能ですか? そうでない場合は、何らかのアルゴリズムで私を案内したり、どこから始めればよいか電話したりできますか?

私が達成したいことの例、

Gonzales = Gonzalez (two different spelling of different name)
Smith = Smyth (Phonetic sound the same)
123 Main st = 123 Main street (abbrevation)
Bob Smith = Robert Smith (synonym)
4

3 に答える 3

6

この研究分野全体は、一般にレコード リンケージとして知られています (皮肉なことに、12 ほどの重複した名前があります)。特定のデータのマッチングを構成し、データをかき回し、重複を出力できるツールは数多くあります。一部のツールは、潜在的な一致の正確性に関するいくつかの質問に答えると、一致を作成します.

Q/N-gram 比較 (およびインデックス作成) は、これを解決する 1 つの可能な方法ですが、他にもたくさんあります。さまざまな種類のコンパレータがさまざまな種類のデータに対して適切に機能することがすぐにわかります。私は自分自身で Q-gram のインデックス作成を試したことはありませんが、この分野の研究者はそれが比較的遅いと述べています。

音声キー関数 (Soundex や Metaphone など) との比較に関しては、これは、名、姓、ミドル ネームなどの個別のフィールドなど、小さなテキスト フィールドがある場合にのみ適しています。それでも、これらの関数はかなり粗い傾向があります。そしてSoundexに注意してください。非常に粗雑で、非常に異なる名前が同じキーに変換されるだけでなく、同じように扱われるべき多くの類似した名前が失われます。Metaphoneの方がはるかに優れています。

レコード リンクのウィキペディア ページにはツールのリストがありましたが、編集者によって削除されました。この種のことを解決するために、Dukeというオープンソース ツールを作成しました。構成の作成に役立つ遺伝的アルゴリズムを備えているか、手動で作成できます。他のツールも存在します。

これをゼロから解決しようとするのではなく、既存のツールのいずれかを使用することをお勧めします。

于 2014-03-14T20:20:39.887 に答える
1

simhash アルゴリズムを使用して部分的な解決策を見つけました。ここで良い例を見つけましたhttp://simhash.codeplex.com/

于 2013-10-08T10:43:08.197 に答える