質問

こともない構築アルゴリズムのためのマッチング前という表現にはなじまないのか分から開始されます。これが私の基本設定としてるんだのです。お気軽に正しいってくればいいの右側です。

いデータベースの名称およびリクエストに一意な識別子。複数の生成の識別子です(内部で生成され、一部の第三者)には、氏名、氏名、生年月日のものをいいます。

数年を通して私を受けるリストから第三者が輸入され、いくつかの既存の人々のデータベースのデータがないとしてカスタマーサポートす。Id変え、生年月日が誤字、名前が間違えや、最後の名前変更など。

各インポートが20,000記録になっても、99%の正確なことになるものに200件のデータがっていくの人手と戦いました。と思いますように99.9%の精度でマッチングの着う人々のユーザー

なので、どうやって作るアルゴリズムです。

PSない場合でも正しく答えが知らの資料を参考にもご提供いただきました。

PPS一部の参考にすべきではないでしょうか似ていm3rLinEz書き:

ID: 9876234 Fname: Jose     LName: Guitierrez       Birthdate:01/20/84  '- Original'

ID: 9876234 Fname: Jose     LName: Guitierrez       Birthdate:10/20/84  '- Typo in birth date'
ID: 0876234 Fname: Jose     LName: Guitierrez       Birthdate:01/20/84  '- Wrong ID'
ID: 9876234 Fname: Jose     LName: Guitierrez-Brown Birthdate:01/20/84  '- Hyphenated last name'
ID: 9876234 Fname: Jose, A. LName: Guitierrez       Birthdate:01/20/84  '- Added middle initial'
ID: 3453555 Fname: Joseph   LName: Guitierrez       Birthdate:01/20/84  '- Probably someone else with same birthdate and same last name'
役に立ちましたか?

解決

興味があるかもしれません レーベンシュタイン距離.

2つの文字列間のlevenshtein距離は、1つの文字列を他の文字列に変換するために必要な編集の最小数として定義され、許容編集操作は単一の文字の挿入、削除、または置換です。1965年にこの距離を考えたウラジミール・レヴェンシュテインにちなんで名付けられました。1

すべてのフィールドを比較し、合計距離を計算することができます。また、試行錯誤することで、レコードが一致したものとして解釈できる適切なしきい値を見つけることができる場合があります。私自身はこれを実装していませんが、アイデアを思いついただけです:}

例えば:

  • レコード A - ID:4831213321、名前:ジェーン
  • レコード B - ID:431213321、名前:ヤン
  • レコード C - ID:4831211021、名前:ジョン

A と B の間の距離は、A と C / B と C よりも小さくなり、より良い一致を示します。

他のヒント

それはこのようなものになると

、車輪の再発明をしないでください。 Levehstein距離は、あなたがこれを自分で行う必要がある場合は、おそらくあなたの最善の策であるが、それ以外は、データベースクエリやあいまい検索を行う既存のソリューションのいくつかの研究を行います。彼らは長くあなたよりもそれをやってきた、それはおそらくあまりにも、より良いだろう..

グッドラック!

もしインポートされるこのサイズと異なるリソースのデータセットとしている取引する場合は、ID管理ソリューションを検討するとよいでしょう。私は、Sun Identity Managerのとほとんど馴染みだが、それはあなたが何をしようとしては過剰かもしれません。それは価値が覗くことがあります。

サードパーティから取得しているデータが一貫している (毎回同じ形式) 場合は、データを取得しているサードパーティごとにテーブルを作成すると思います。次に、新しいデータ セットを毎回同じテーブルにインポートします。SQL ステートメントを使用して、それぞれの共通列に基づいて 2 つのテーブルを結合する方法があることはわかっています。こうすることで、SQL クエリを実行して複数のテーブルからデータを取得できますが、データが 1 つの統合されたテーブルから取得されたように見えます。同様に、両方のテーブルに一致しない追加されたレコードを見つけて、手動でペアにすることができます。こうすることで、「クリーンな」データをサードパーティから入手したジャンクデータから分離した状態に保つことができます。本当のインポートが必要な場合は、その結合テーブルを使用して、すべてのデータを含む 3 番目のテーブルを作成できます。

私は簡単に100%近い特定の試合を取り扱うとともに、第一に、いくことができました一覧の言200る必要のある話をしました。

残りの行き利用できるので、簡易版の ベイズ'の定理.

各シ列を計算 可能性が この試合のための各列のデータセットと仮定するとデータが一部発生する一定の確率.例えば、人を変姓確率0.1%れによっても異なりますジェンダーの変動、また、その名のと確率0.01%、は、単一の商品につけられたタとprobility0.2%(利用 Levenshtein距離 数により誤字).その他の分野とともに変わる確率.各行の算定を遥かに行試合を検討すべての分野に変化しています。そしてそのものが最も蓋然性の高いと考えるという。

例えば、行の少ない商品につけられたタ一つの分野が等しいすべてのその他い0.2%ャの試合が行する多くの分野がみ0.0000001%チャンスです。なお、列の小さな誤植です。

正規表現は何が必要です、なぜ車輪の再発明?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top