7

やや高度な質問があるので、できるだけ具体的にしようと思います。

私は、さまざまなデータ セットを同じエンティティ (通常は会社または金融証券) を参照するヘッダー情報と組み合わせることを含む多くの調査を行っています。このレコードのリンクには、通常、名前が唯一の共通の主要な識別子であるヘッダー情報が含まれますが、いくつかの二次情報 (市と州、操作の日付、相対的なサイズなど) がしばしば利用可能です。これらの一致は通常 1 対多ですが、1 対 1 または多対多の場合もあります。私は通常、手動で、またはクリーンな部分文字列の非常に基本的なテキスト比較を使用して、このマッチングを行ってきました。レーベンシュタイン距離測定のような単純なマッチング アルゴリズムをときどき使用しましたが、それを適用する適切な正式な方法がなかったため、あまり活用できませんでした。

私の推測では、これはかなり一般的な質問であり、この種のことを行うために開発された形式化されたプロセスがいくつかあるに違いありません。与えられたアプローチの理論的妥当性を扱った主題に関する学術論文をいくつか読んだことがありますが、レシピや少なくとも実用的なフレームワークを説明する良い情報源は見つかりませんでした。

私の質問は次のとおりです。

  • 本やウェブサイト、出版された記事や研究論文など、多次元ファジーレコードマッチングを実装するための良い情報源を知っている人はいますか?

  • 私は、実用的な例と明確に定義されたアプローチを備えたものを好む.

  • このアプローチは反復的であり、中間段階で人間が改善をチェックします。

  • (編集) リンクされたデータは統計分析に使用されます。そのため、多少のノイズは問題ありませんが、「正しくない一致」が少ないことよりも「正しくない一致」が少ないことを強く好む傾向があります。

  • それらが Python にあれば素晴らしいことですが、必須ではありません。

最後にもう 1 つ重要な点として、私は計算効率についてはあまり気にしていません。私はこれを動的に実装していません。通常、数千のレコードを扱っています。

4

2 に答える 2

3

「数千のレコード」に対してそれほどコストがかからない一般的な方法の 1 つは、cosine similarityです。ほとんどの場合、テキスト ドキュメントの比較に使用されますが、任意の種類のデータを操作するように簡単に変更できます。

リンクされたウィキペディアの記事は詳細がまばらですが、リンクをたどっていくつかの検索を行うと、良い情報が得られます. 目的に合わせて変更できる実装の可能性があります。実際、Python での N-Gram、tf-idf、およびコサインの類似性の単純な実装をご覧ください。

より単純な計算で、目的に「十分」な計算はJaccard indexです。主な違いは、通常、コサイン類似度では、ドキュメント内およびドキュメント セット全体で単語が使用される回数が考慮されるのに対し、Jaccard インデックスではドキュメント内の特定の単語のみが考慮されることです。他にも違いがありますが、それが最も重要だと思います。

于 2011-03-08T20:12:58.397 に答える
0

問題は、列ごとに少なくとも 1 つの距離の配列があり、それらの距離を最適な方法で組み合わせて、レコードのペアが同じものであるかどうかを示す必要があることです。

これは分類の問題で、それを行う方法はたくさんありますが、ロジスティック回帰はより単純な方法の 1 つです。分類子をトレーニングするには、レコードのいくつかのペアに一致するかどうかのラベルを付ける必要があります。

デデュープ python ライブラリは、レコード リンクの困難なタスクのこの部分やその他の部分を実行するのに役立ちます。このドキュメントには、レコードのリンケージの問題に包括的にアプローチする方法の概要がかなり詳しく説明されています。

于 2016-09-24T19:17:38.137 に答える