エンティティマッチング(EM)
エンティティマッチング(Entity Matching, EM)は、データサイエンティストの日常業務において重要なタスクです。2つのデータエントリーのコレクション(例: 2つのテーブル、JSON、テキスト)が与えられた場合、EMの目標は、製品、出版物、ビジネスなど、同じ実世界のエンティティを指すエントリのペアをすべて見つけることです。そのシンプルな問題定義により、EMはデータ統合における最も基本的な問題の1つであり、エンティティ検索、データクリーニング、異なるデータソースからのデータ結合など、幅広いアプリケーションに応用されています。
エンティティマッチングの2つのフェーズ:ブロッキングとマッチング
EM問題の例を以下に示します。異なるデータソースから取得した製品レコードの2つのテーブルが与えられた場合、同じ製品を指すレコードを見つけることが目標です。
典型的なEMパイプラインで最初に行うステップはブロッキングです。ブロッキングの目的は、二次的なペアワイズ比較を回避し、一致する可能性が高い候補ペアのみを選択することです。この例では、「少なくとも1つのトークンが一致するペアを選択する」というシンプルですが妥当なヒューリスティックを使用することで、候補の数を9(すべての可能なペア)から3に減らすことができます!ブロッキング手法は通常、高い再現率を持つ高速でシンプルなヒューリスティックとして設計されており、ほとんどの実際の一致が保持されるようにします。
次のステップはマッチングです。マッチングは、ブロッキングフェーズで選択されたすべてのペアに対して、最終的な「一致/非一致」の判断を下すための、よりコストのかかるペアワイズ比較を実行します。
エンティティマッチングの課題
ルールベースの方法や学習ベースの方法を含む多くの技術がありますが、エンティティマッチングは依然として非常に難しいタスクです。この例が示すように、正しい「一致/非一致」の判断を下すには、十分な言語理解とドメイン固有の知識が必要です。たとえば、上記の表では次のような状況が見られます:
- 最初のペア: EMソリューションは、この文脈で「immersion」と「immers」、および「deluxe 2.0」と「dlux 2」が同義であることを知る必要があります。
- 2番目のペア: 2つのエントリは見た目が似ていますが、ソフトウェアのエディションが一致しない(7th vs. 8th)ため、実際には異なります。
- 最後のペア: 2つのエントリは見た目がかなり異なりますが、製品IDが同じであるため、一致します。
実際、これまでの最先端のEMソリューションでさえ、これらすべてのペアを正確に一致/非一致させることには失敗していました!
Ditto: 事前学習済み言語モデルを用いたエンティティマッチング
私たちは、BERTのような事前学習済み言語モデル(LM)に基づく新しいEMソリューションDittoを紹介します。Dittoは、EMをシーケンスペア分類問題として捉えます。これにより、従来の単語埋め込みと比較して、より良い言語理解を捉える高度に文脈化された埋め込みを生成するLMを活用します。
事前学習済みのLMはテキストシーケンスを入力として受け取るため、Dittoはまずエンティティエントリのペア(e1, e2)をトークンのシーケンスにシリアライズする必要があります。これには、属性名や属性値の開始を示す特殊トークン[COL]および[VAL]を追加する方法を採用しています。
候補ペア(e1,e2) は、シリアライズ処理により”[CLS] serialize(e1) [SEP] serialize(e2) [SEP]”と表現されます。ここで、区切りトークン[SEP]と特殊トークン[CLS]を使用して文脈化されたシーケンス埋め込みを生成します。
次に、Dittoは通常のLMファインチューニングの手順に従います。具体的には、LMのトランスフォーマーレイヤーの出力の上に線形層とソフトマックス層を追加し、事前学習済みの重みでモデルを初期化します。その後、ラベル付きEMデータセットでモデルをトレーニングし、収束するまで繰り返します。
Dittoはマッチング能力をさらに向上させるために、以下の3つの最適化を行っています。
- ドメイン知識
Dittoは、LMが最も重要なマッチング情報に集中できるように、ドメイン知識を追加して入力内の重要な部分(例: 製品ID)を強調することができます。これにより、マッチング判断に有用な情報を際立たせます。 - 要約
事前学習済みLMを適用する際の主な課題の1つは、最大シーケンス長です。たとえば、BERTは最大で512個のサブワードトークンしか入力として受け取れません。エンティティエントリを切り詰めると、最も重要な情報が失われる可能性があります。これを防ぐために、DittoはTF-IDFに基づく要約手法を適用し、長い文字列から最も重要なトークンのみを抽出し、EMに利用します。 - データ拡張
高品質で大規模なラベル付きデータセットの必要性に対応するために、Dittoはデータ拡張を適用し、既存のデータから追加のトレーニング例を生成します。さらに、Dittoは(難易度の高い)例をトレーニングデータに追加することで、モデルが列順序不変性のような「捉えにくい」不変特性を学習するよう促します。
詳細については、ぜひ私たちの論文をご覧ください!
実験結果
事前学習済み言語モデルと上述の最適化により、Dittoは、DeepMatcherなどの従来の最先端ソリューションと比較して大幅な改善を達成しました。標準的な13のベンチマークEMデータセットにおいて、Dittoは平均F1スコアで9.43%の性能向上を達成し、最大32%のF1スコア改善を記録しました。
さらに、Dittoは以下のような状況でもより堅牢性を示します。
- ノイズの多いデータ(不一致のスキーマ、誤った列値配置)
- 小規模なトレーニングセット
- テキストが多いデータ(最も顕著な性能向上が観察されました)
また、Dittoはラベル効率も優れています。製品マッチングデータセットでは、Dittoはラベル付き例が半分以下であっても、従来の最良ソリューションを上回る性能を発揮することができます。
完全なEMパイプラインへのDittoの実装
Dittoを標準的なEMパイプラインに実装し、このパイプラインを用いて789Kと412Kのエントリを含む2つの大規模な企業データセットのマッチングを行いました。Dittoをマッチャーとして使用した結果、ホールドアウトデータセットで高い96.5%のF1スコアを達成しました。
標準的な基本ブロッキングメカニズムに加えて、Dittoはオプションとして高度なブロッキング機能を提供しています。これは、双子(Siamese)構造のセンテンス変換モデルをファインチューニングして得られたものです。このモデルは、両方のテーブル内のエントリを同じベクトル空間にマッピングし、ベクトル類似性検索を通じて候補をフィルタリングします。高度なブロッキングステップにより、パイプライン全体の速度が3.8倍向上しました。