4

次のデータ要素を持つ人々でいっぱいのデータベースがあるとしましょう。

  • PersonID(意味のない代理自動番号)
  • ファーストネーム
  • ミドルネームのイニシャル
  • 苗字
  • NameSuffix
  • 生年月日
  • AlternativeID(SSN、Militarty IDなど)

私はあなたが考えることができるこれらの情報のあらゆる合理的なバリエーションであらゆる種類のフォーマットからたくさんのデータフィードを受け取ります。いくつかの例は次のとおりです。

  • フルネーム、DOB
  • フルネーム、最後の4つのSSN
  • 最初、最後、DOB

このデータが入ってくると、それに合わせて何かを書く必要があります。80%を超える一致率を取得する必要はありません。自動一致の後、誰かが手動で一致させるために、不確実な一致をWebページに表示します。

複雑さのいくつかは次のとおりです。

  1. 一部のデータ一致は他のデータよりも優れているので、それらに重みを付けたいと思います。たとえば、SSNが完全に一致しているが、誰かがミドルネームを使用しているために名前がオフになっている場合、名前が完全に一致しているがSSNがオフになっている場合よりも、その一致にはるかに高い信頼値を割り当てたいと思います。
  2. 名前の照合にはいくつかの問題があります。JohnDoeJrはJohnDoeIIと同じですが、John Doe Sr.とは異なります。JohnDoeと他の情報がない場合は、判断する方法がないため、システムが1つを選択しないようにする必要があります。誰を選ぶか。
  3. 名のマッチングは本当に難しいです。ボブ/ロバート、ジョン/ジョン/ジョナトン、トム/トーマスなどがいます。
  4. FullName + DOBのフィードがあるからといって、すべてのレコードのDOBフィールドが入力されているわけではありません。比類のないDOBが一致するスコアを殺すという理由だけでリンケージを見逃したくありません。フィールドが欠落している場合、マッチングに使用できる要素からそのフィールドを除外したいと思います。
  5. 誰かが手動で一致する場合、私は彼らの一致が将来のすべての一致に影響を与えることを望みます。したがって、同じ正確なデータを再度取得した場合、次回は自動的に一致させない理由はありません。

SSISにはあいまい一致があることを確認しましたが、現在SSISを使用していません。また、バージョン管理がかなり厄介でほぼ不可能であるため、ツールの最初の選択肢ではありません。しかし、それが最高の場合は、教えてください。それ以外の場合、このタイプの問題に使用した(できれば無料、できれば.NETまたはT-SQLベースの)ツール/ライブラリ/ユーティリティ/テクニックはありますか?

4

4 に答える 4

3

これについてはいくつかの方法がありますが、私が先に進む前にこの種のことを行って、人々の間で「誤った」一致をすることで多くのリスクを冒すことをここに出します。

入力データは非常にまばらであり、すべての値が存在しない場合、それが最も一意ではないことを考えると、入力データは非常にまばらです。

たとえば、名、姓、DOBの状況で、すべてのレコードに3つの部分がすべてある場合、マッチングにより、作業が非常に簡単になります。そうでない場合は、問題が発生する可能性が高くなります。

物事のより「粗雑な」側面で取るかもしれない1つのアプローチは、一致するエントリを単純に識別して分類する一連のクエリを使用してプロセスを単純に作成することです。

たとえば、最初に名前とSSNが完全に一致するかどうかを確認し、フラグが立てられている場合は、100%として記録し、次のセットに進みます。次に、あいまいな場所を明示的に定義して、マッチングの潜在的な影響を知ることができます。

最終的に、そのレコードに一致タイプがある場合は、それを示すフラグを含むリストが作成されます。

于 2010-07-16T14:03:12.977 に答える
1

レーベンシュタインアルゴリズムを見てください。これにより、「2つの文字列間の距離」を取得できます。これを文字列の長さに分割して、パーセンテージを一致させることができます。

http://en.wikipedia.org/wiki/Levenshtein_distance

私は以前にこれを実装して大成功を収めました。これはヘルスケア企業のプロバイダーポータルであり、プロバイダーはサイトに登録しました。マッチングは、ポータル登録を取得し、メインの医療システムで対応するレコードを見つけることでした。これに参加したプロセッサには、一致する可能性が最も高いものが降順で表示され、適切なアカウントを簡単に選択できました。

于 2010-07-16T14:02:23.823 に答える
1

これは、レコードリンケージと呼ばれる問題です。

Pythonライブラリ用ですが、重複排除のドキュメントには問題に包括的に取り組む方法の概要が記載されています。

于 2016-09-24T02:51:23.737 に答える
0

誤検知によって問題が発生せず、言語が主に英語である場合は、Soundexなどのアルゴリズムを試すことができます。SQLServerには組み込み関数としてあります。Soundexは最高ではありませんが、あいまいマッチングを行い、人気があります。別の選択肢はメタフォンです。

于 2010-07-17T03:43:13.747 に答える