web-dev-qa-db-ja.com

ドキュメントの類似性:ベクトルの埋め込みとTf-Idfのパフォーマンス?

私はドキュメントのコレクションを持っており、各ドキュメントは時間とともに急速に成長しています。タスクは、任意の決まった時間に同様のドキュメントを見つけることです。私には2つの潜在的なアプローチがあります:

  1. ベクトルの埋め込み(Word2vec、GloVe、またはfasttext)、ドキュメント内のWordベクトルの平均化、およびコサイン類似度の使用。

  2. Bag-of-Words:tf-idfまたはBM25などのそのバリエーション。

これらのいずれかが大幅に良い結果をもたらしますか?誰かがドキュメントの類似性についてtf-idfとWord2vecの平均を定量的に比較しましたか?

テキストが追加されたときにドキュメントのベクトルを動的に調整できる別のアプローチはありますか?

8
Alec Matusis
  1. doc2vecまたはWord2vec?

記事によると、doc2vecまたはparagraph2vecのパフォーマンスは、短いドキュメントでは不十分です。 [非常に短いテキストの意味的類似性の学習、2015年、IEEE]

  1. 短いドキュメント...?

短いドキュメント間の類似性を比較したい場合は、Word2vecを介してドキュメントをベクトル化することをお勧めします。

  1. どのように構築しますか?

たとえば、tf-idfを使用して、加重平均ベクトルを使用してドキュメントベクトルを作成できます。

  1. 類似性の尺度

さらに、類似性のために、コサインやユークリッドではなくts-ssを使用することをお勧めします。

次の記事または以下のgithubの概要を参照してください。 「ドキュメント間の類似性レベルを測定するためのハイブリッド幾何学的アプローチとドキュメントクラスタリング」

https://github.com/taki0112/Vector_Similarity

ありがとうございました

8
user8001497

あなたはそれを試さなければなりません:答えはあなたのコーパスと「類似性」のアプリケーション固有の認識に基づいて変わるかもしれません。効果は通常のドキュメントの長さによって特に異なる可能性があるため、「時間とともに急速に成長する」が「任意に長く成長する」ことを意味する場合、時間の経過とともに機能するものに大きな影響を与える可能性があります(より長いドキュメントの適応が必要)。

また、 ' Paragraph Vectors ' –ベクトルがテキストの範囲を表すためにWordベクトルのように共同トレーニングされる場合–入力として、単純な平均のWordベクトルよりもパフォーマンスが優れている可能性があることにも注意してください。類似性/分類タスクに。 (「Doc2Vec」への多くの言及は、具体的には「段落ベクトル」を意味しますが、「Doc2Vec」という用語は、Wordベクトルの単純な平均のように、ドキュメントを単一のベクトルに変換する他の方法にも使用されることがあります。)

また、単純な平均ではありませんが、Wordベクトルを使用する2つのテキスト間の類似性の尺度である " Word Mover's Distance "(WMD)も確認することをお勧めします。 (ただし、特に長いドキュメントの場合、計算にコストがかかる可能性があります。)分類については、「 監視対象の単語移動者の距離 」と呼ばれる最近の改良があります。カテゴリ。どのドキュメントを他のドキュメントよりも近づける必要があるかについての十分な評価/調整データがあれば、類似の手法を一般的な類似性タスクに適用できる可能性があります。

4
gojomo

また、基本的な集合の代数を使用して2つのドキュメントの言語の重複を判断するJaccardの類似性を試すことも検討してください(ただし、BOWアプローチに多少似ています)。それについての素晴らしいイントロが見つかります ここ

1
CJ Sullivan