質問

ここに興味深い問題があります。

私は、最新の状態に保つ必要がある名前と住所の情報を含む Oracle データベースを持っています。

私たちはさまざまな政府ソースからデータ フィードを取得し、一致するものを判断し、そのデータでデータベースを更新するかどうか、または新しいレコードを作成する必要があるかどうかを判断する必要があります。

レコードを結び付けるために使用できる一意の識別子のようなものはなく、データの品質が必ずしも良好であるとは限りません。常にタイプミスが発生し、人々が異なる名前を使用している可能性があります(つまり、ジョー vs.ジョセフ)など。

以前にこの種の問題に取り組んだことがある方から、どのように解決したか、少なくともその一部を自動化したかについて聞きたいと思っています。

役に立ちましたか?

解決

この分野で活動している大手ソフトウェア会社はそれぞれ、名前と住所の解析、データの標準化、レコードの重複排除または照合、レコードのリンク/マージ、生存確認などを処理するソリューション スイートを提供しています。ただし、どれも少し高価です。

たとえば、この問題に対するオラクル独自のソリューションは製品です。Oracle Data Integrator (ODI) 用の Oracle Data Quality (ODQ)」は、Fusion Middleware スタックの一部です。名前が示すように、ODQ には ODI が必要です (つまり、ODQ は別途ライセンスが付与され、ODI に依存するアドオン モジュールです)。

IBM の Websphere ソリューション スイート (Ascential の買収を通じて取得) には以下が含まれます。 クオリティステージ.

現在は SAP 企業となった Business Objects には、 データ品質 この製品は、Enterprise Information Management (EIM) スイートの下にあります。

その他の主要なデータ品質ブランドには次のものがあります。 データフラックス (SAS 社) および エンレイソウ ソフトウェア (ハート・ハンクス社)

Gartner Group は、データ品質ソリューション スイートに関するマジック クアドラントを毎年リリースしています。これらのマジック クアドラントで高い評価を得ているベンダーは、通常、登録ユーザーが自社の Web サイトでレポート全体をオンラインで利用できるようにしています (例1, 例2).

他のヒント

オープンソースの面では、この種のレコード重複排除/エンティティ解決を行うための Python ライブラリが存在します。 重複排除.

プログラミングのスキルが必要ですが、無料で、巨大なサーバーではなくラップトップで実行できます。

概要は次のとおりです 使い方.

FirstLogic の使用から学んだ教訓。(他の製品も同様であるはずです。) コンテキストとして、私たちは数十のソースからファイルを取得していましたが、それぞれの形式は異なっていました。誰をデータベースに追加する必要があるのか​​、誰を更新する必要があるのか​​、誰を「リスト上」としてマークする必要があるのか​​を知る必要がありました。

  1. 私は、ソフトウェアがファイル全体を調べて、列 A の 100 行中 98 行に姓が含まれている場合、列 A が姓の列であるに違いないと判断すると予想していました。それは真実ではない;各レコードは個別に処理されます。

  2. どのデータがどのフィールドにあるかを正確に知っている場合は、それをソフトウェアに伝えることができ、ソフトウェアがそれを処理します。ただし、常に確信が持てない場合は、文字列全体を指定してソフトウェアに理解させたほうがよいでしょう。この例としては、「Smith Jr MD」のようなものが含まれる姓フィールドが挙げられます。これを姓の列であると宣言すると、姓は「Smith Jr MD」であると想定されます。しかし、「John Smith Jr MD」を渡してソフトウェアに認識させると、すべてのビットが正しく識別されます。

  3. 明白に思えたいくつかのことはそうではありませんでした。たとえば、FirstLogic は初期状態では、カンマが「姓、名」を意味すると想定しません。実際には、姓の非常に大きなリストと名の非常に大きなリストがあるため、コンマは無視できると考えられます。私たちは「ジョン、トーマス」のような人々と常に問題を抱えていました。そして、私たちにとって明らかな苗字のように見えたものが、実際にはスペイン語か何かの名前だったために、混乱することもありました。

  4. ダミーデータを追加するシステムは使いにくいです。「テスト アカウント」や「TBD」などの名前を付けたユーザーがいる場合、それらはまったく処理されません。FirstLogic は、認識できるデータが見つからなかったため、レコードを破棄します。

  5. システムのカスタマイズは可能ですが、営業担当者が言うほど簡単ではありません。100 万ものオプションとカスタム ファイルと辞書があります。カスタマイズできることを期待している場合は、その仕組みを理解するために時間を投資する必要があります。RDBMS や ETL ツールのようなものです。それは魔法のブラックボックスではありません。

  6. また、ソフトウェアの購入を正当化するのに役立つ大量のデータ品質機能も備えていますが、学習して適用するには献身的な努力が必要です。

  7. このツールは、実際にはマスター ファイルに対してリストを処理するように設計されていません。これらはマージ/パージ操作のために作成されました。それは可能ですが (実際に実行しています)、データベースをリストとして扱う必要があります (すべてのライブ レコードをフラット ファイルに抽出する必要があります)。また、どのレコードをどこに配置するかをより詳細に制御する必要があります (例:名前が 80% 一致し、郵便番号の最初の 2 桁が一致する場合は、おそらく同一人物である可能性が高くなります。など)、バッチ プロセスが複雑になります。

  8. 最後に、異なる住所にいる 2 人の人物が実際に同一人物であるかどうかを判断しようとする場合、「ジョン スミス」の処理と「アナベル ディジョバンニ」の処理はまったく異なるものであることがわかりました。ソフトウェアを微調整して、一般的な名前よりも珍しい名前のほうが試合で重視されるようにすることもできますが、誰にそんな時間があるでしょうか。当社のマッチング プロセスの精度は約 80% で、残りの 20% は手動で処理することで満足できました。

マッチングを自動的に行うツールとは考えないでください。これは、人間のデータ処理者の生産性を高めるためのツールと考えてください。このようにして、精度が 80% に達した場合は、目標に達しないのではなく、大成功となるように設定しました。

私の現在の職場では、データの整合性に関して多くの問題を抱えています。品質を確保するために、データをロードする前に「スクラブ」を試みます。現在、名前、住所、電子メールのスクラブに Melissa Data を使用しています。ロードする前に標準化するのに非常に優れた機能を果たします。こうすることで、データの重複を避けることができます。

また、SQL Server Integration Services (Oracle を使用していることはわかっています) には、文字列の「あいまい」一致を行うコンポーネントがあり、これにより、直接の 1 対 1 一致ではなく、ほぼ一致するものを見つけることができます。それはファジールックアップと呼ばれます。基本的に、2 つの入力がどの程度一致しているかを示すスコアが得られます。次に、しきい値を設定して、どれだけ近ければ一致と見なすかを知らせることができます(つまり、80% 以内など)。

過去に私も利用したことがあります サウンデックス 重複を判断する際に名前が類似しているかどうかを判断します。SOUNDEX の実装はたくさんあります。

幸運を。

あなたが解決しようとしている問題の用語は「レコードのリンク」です。

特定のツールをお勧めすることはできません。「レコード リンク ソフトウェア」または「マージ パージ ソフトウェア」を検索すると、少し調べればニーズを満たすものが見つかるはずです。

私は、という名前のオープンソース ソリューションを 1 つ見つけることができました。 2月. 。このツールはもともと、生物医学研究の領域向けに開発され、「自由に拡張可能な生物医学的記録リンク」という名前を説明しています。詳細については、こちらをご覧ください。 「高性能レコード連携のための並列大規模技術」

レコードのリンクに関連する問題と解決策の概要については、次の記事を参照してください。 「マージ/パージおよび重複検出」.

主要なプロバイダーにはそれぞれ独自のソリューションがあります。Oracle、IBM、SAS Dataflux など、それぞれが最高であると主張しています。

独立した検証済み評価:

オーストラリアのカーティン大学データリンケージセンターで行われた研究では、440 万件のレコードの照合をシミュレートしました。精度の観点からプロバイダーが何を持っているかを特定しました (見つかった一致の数と利用可能な一致の数。誤一致の数)

  1. データマッチエンタープライズ, 、最高の精度 (>95%)、非常に高速、低コスト
  2. IBM品質ステージ 、高精度 (>90%)、非常に高速、高コスト (>10 万ドル)
  3. SAS データフラックス、中精度 (>85%)、高速、高コスト (>100K)

これは私たちが見つけた中で最高の独立した評価であり、非常に徹底的でした。

保険会社の会員登録リストでこんなことをしました。幸いなことに、主要メンバーを決定するための SSN がありましたが、扶養家族が新規か既存かを (名前だけで) 判断する必要がありました。解決策の一環としてsoundexアルゴリズムを試してみましたが、あまりにも多くの異なる名前を同じものにマッピングしているようでした(そして多くの家族は子供たちに似た響きの名前を付ける傾向があります)ため、要件に適合していないようでした。私は(私が思うに)扶養家族の最初の名前の最初の4文字を一意の識別子として使用し、それを「十分に」と呼ぶことになりました。ジョージフォアマンの家族をどのように扱うかわからない:-)

私は Dataflux が実際に動作しているのを見てきましたが、当社の「スター」データ アナリストによれば、これは彼が発見した人物や企業の名前をリンクするための「クラスタリング」(Dataflux で言うところの) のためのツールの中で最も正確です。ただし、かなり高価です。

これはレコードのリンクに関する古典的な問題です。誤字、脱字など。ブロックのルールのセットを定義することで、確率論的なアプローチで処理できます。

それをうまくやってくれるソフトウェアの 1 つは、 フリル. 。Javaでは自由でとてもフレンドリーです。Web サイトにはチュートリアルとビデオへのリンクがあります。Oracle についてはよくわかりませんが、DB 接続をサポートしています。

レクリンク 別の方法も考えられますが、(私の知る限り) マニュアルやチュートリアルがないので、それを立ち上げて実行するにはおそらくもっと努力する必要があるでしょう。

無料オプションからは、 ルレ.

私が使用した データラダー.com 名前の大きなデータセットの場合。彼らは、スペルが大きく異なるさまざまなデータベースを見事に照合し、多くの重複を排除しました。

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