非数値データに基づいて重複IDを集約するためのアルゴリズム?


7

私は人の大規模なデータセット(2Mエントリ)を持っていますが、多くの人がわずかに(または大幅に)異なる識別情報を持つデータベースに複数のエントリを持っています。たとえば、J。DoeとJohn Doeがいる場合や、電子メールアドレスが付随するJohn Doeと電子メールアドレスが付随しないJohn Doeがある場合があります。

私はさまざまなクラスタリングアルゴリズムを調べてきましたが、次のようなルールに基づいてエントリを集約するということは、私がやっていることに適していないようです。

  • 名前の1つがすべて大文字で書かれているかどうかに基づいて、姓名を推測します
  • メールアドレスが一致する場合は「J. Doe」と「J. Doe」を集計する
  • 「J.」で始まる姓と名「Doe」が他にない場合は、「J。Doe」を「John Doe」に集約します。

データセットが小さい場合、これはいくつかの単純なルールだけで比較的簡単なタスクになりますが、エントリの数が多いと、集約タスクが非常に遅くなり、ロジックがかなり複雑になります。私の現在の解決策(データベース内の全文検索機能を使用して類似のエントリを検索し、それらの結果に基づいてハッシュを追加し、次にハッシュとあいまいさの種類の組み合わせに基づいて集計する)は機能しますが、実行しようとするたびにそれを更新するだけで、誰かがすでに解決したような問題だと叫ぶだけです。しかし、私は解決策を見つけることができませんでした。

このようなルールに基づいて、私がやりたいことを行うアルゴリズムはありますか?または役立つかもしれない特定のパッケージまたはソフトウェア?それとも私はこの問題に完全に間違っているのですか?

ありがとう!

(ただし、IDを誤って集計する方法はさまざまにあることを承知している(たとえば、J。DoeはJohn DoeまたはJames Doeを意味する可能性がある)ので、物事を集計しようとすることに対する警告は必要ありません。)


この質問を投稿した後、何か試したり、何か計画を立てたりしましたか?何語が好きですか?頭の中にはアイデアがあります。Python dictionaryは、あなたのケースでキーと値のマッチングを行うための最良の友達になります。
innm 2017

2
これが呼び出されen.wikipedia.org/wiki/Record_linkage
エムレ

ここでは、クラスタリングは間違っています。統計分析では、「Jan」と「Jane」が1文字だけ異なるため、それらをマージします。したがって、多くの場合、これらはOpenRefineなどのようにインタラクティブに使用する必要があります。代わりにレコードリンケージリサーチを探してください。
QUITあり-Anony-Mousse 2017年

回答:


7

レコードのリンクの問題はまだ解決していませんが、他のユーザーが使用する場合に備えて、プロセスで見つけたものをいくつか共有したいと思いました。これは、GitHubに基づい進行中の作業です。


リンケージリソースの記録

(重複排除、データ照合、エンティティ解決とも呼ばれます)

バックグラウンド

書類

  • レコードのリンクデータ重複排除に関するウィキペディアのページ
  • 概要スライドhttps://www.umiacs.umd.edu/~getoor/Tutorials/ER_VLDB2012.pdf
  • [Dedupe]によるソフトウェアの動作の説明:https ://dedupe.io/developers/library/en/latest/How-it-works.html

トーク

フリーソフト

(最終更新、2017年11月現在のgithubスター)

パイソン

ジャワ

R

その他の

商用ソフトウェアとソリューション

  • データラダーデータマッチ:https ://dataladder.com/
  • Dedupe:https ://dedupe.io/ (Dedupe Pythonライブラリのフリーミアムフロントエンド)
  • LinkageWiz:http : //www.linkagewiz.net/
  • WinPure Clean and Match:http ://www.winpure.com/cleanmatch.html
  • Reifier:http ://nubetech.co/

SASの場合

データのクリーニング

名前パーサー

パイソン JavaScript

論文

組織

その他

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.