ドキュメント間の距離を計算する標準的な方法は何ですか?


34

「ドキュメント」と言うとき、Wikipediaの記事やニュース記事などのWebページを念頭に置いています。私は、バニラ語彙距離メトリックまたは最新のセマンティック距離メトリックのいずれかを与える回答を好みます。

回答:


48

保持するセマンティック情報の正確な量とドキュメントのトークン化の容易さに応じて、これを実行するさまざまな方法があります(htmlドキュメントはおそらくトークン化するのがかなり難しいでしょうが、タグとコンテキストで何かを行うことができます)

それらのいくつかはffriendによって言及されており、user1133029による段落ベクトルは非常に堅実なものですが、さまざまなアプローチのプラスとマイナスについてさらに深く掘り下げると思いました。

  • 余弦距離 -本当のことを試してみました、余弦距離は、おそらく複数のドメインで一般的に使用される最も一般的な距離メトリックです。そうは言っても、余弦距離には、実際にはセマンティックにマッピングできる情報がほとんどないため、この状況には理想的ではないようです。
  • レーベンシュタイン距離 -とも呼ばれedit distance、これは通常、個々のトークンレベル(単語、バイグラムなど)でのみ使用されます。一般に、このメトリックは意味情報を破棄するだけでなく、非常に異なる単語の変更を非常によく扱う傾向があるため、このメトリックはお勧めしませんが、この種のことには非常に一般的なメトリックです
  • LSA-と呼ばれるドキュメントの類似性を評価することになると、技術の大きな武器庫の一部ですtopic modeling。LSAは最近かなり流行しており、私の経験では、これは非常に強力なトピックモデリングアプローチではありませんが、実装するのは比較的簡単で、いくつかのオープンソース実装があります
  • LDA-にも使用される手法ですがtopic modelingLSA実際にはよりスムーズで直感的な傾向がある内部表現を実際に学習する点が異なります。一般に、取得する結果LDALSA、ドキュメントの類似性をモデル化するのに適していますが、トピックを強く区別する方法を学習するにはあまり適していません。
  • Pachinko Allocation -LDAの上にある本当にきちんとした拡張機能です。一般に、これはの大幅に改善されたバージョンでありLDA、唯一の欠点はトレーニングに少し時間がかかり、オープンソースの実装が少し難しいことです
  • word2vec -Googleは、単語やドキュメントを、Count Vectorizersやなどの手法で得られるスパースベクトルよりも合理的なベクトルにインテリジェントに削減するための一連の手法に取り組んでいTF-IDFます。Word2vecは、多くのオープンソース実装を備えているため素晴らしいです。ベクトルを取得したら、その上で他の類似性メトリック(コサイン距離など)を使用して、大幅に効果を高めることができます。
  • doc2vec-とも呼ばれますparagraph vectors。これは、Googleの一連の論文の中で最新かつ最高のものであり、ドキュメントの密なベクトル表現を調べています。gensimpython のライブラリには、word2vecビルドにかなり合理的に活用できるほど簡単な実装がありますが、doc2vecこのルートを下る場合は、ライセンスを忘れないでください

お役に立てば幸いです。質問がある場合はお知らせください。


6

セマンティック距離の測定値がいくつかあり、それぞれ長所と短所があります。それらのほんの一部を次に示します。

  • コサイン距離、ドキュメントの特徴ベクトル間の内積。
  • LSAは、別のベクトルベースのモデルですが、SVDを使用して元の用語ドキュメントマトリックスのノイズを除去します。
  • WordNetベース、人間検証済み、拡張性はほとんどありません。

最も単純なアプローチから始めて、特定のケースの問題に基づいてさらに進んでください。


1
LSAを実行する場合、通常は元のデータセットのLSA投影でコサイン距離を使用することに注意してください。明確にするだけです。
サイモン14

6

経験的に、LSAは毎回、また試してみたすべてのデータセットでLDAよりもはるかに優れていることがわかりました。私は同じことを言っている他の人と話をしました。また、多くの場合ワードネットベースの測定と組み合わせて、ドキュメント間のセマンティック類似性を測定するための多くのSemEval競争に勝つために使用されています。一部のレスポンダーが述べていることとは反対に、トピックのモデリングであり、私の経験におけるセマンティックな類似性ではありません。

gensim(Pythonライブラリ)を使用する場合、LSA、LDA、word2vecが含まれているため、3を簡単に比較できます。オープンソースの実装を知らない。各ドキュメントについて、低速の機械学習アルゴリズムであるSGDを使用して新しい個別のモデルを構築する必要があるため、拡張性があまりありません。ただし、おそらく最も正確な結果が得られます。LSAとLDAもうまくスケーリングしません(ただし、word2vecはスケーリングします)。ただし、Gensimの実装は反復SVDを使用するため、非常に高速です。

もう1つの注意点として、word2vecを使用する場合、単語ごとに異なるベクターを提供するため、ドキュメントからベクターを作成する方法を決定する必要があります。これを行う最も簡単な方法は、各ベクトルを正規化し、ドキュメント内のすべての単語ベクトルの平均を取るか、各単語のidf重み付けによって加重平均を取ることです。したがって、「word2vecを使用する」ほど単純ではないので、ドキュメントの類似性を計算するには、さらに何かを行う必要があります。

私は個人的にLSAを使用します。経験的にはうまく機能し、gensimのライブラリは非常にうまくスケールします。ただし、無料のランチはありませんので、各方法を試して、データに適した方法を確認してください。


LSAをどのくらい正確に使用しましたか?LDAは実際には、LSAのかなり薄いラッパーであり(事前にディリクレを使用したpLSAである)、一般化を大幅に向上させることが経験的に示されています。LSAの方がほぼ確実に精度が高くなりますが、それは一般にオーバーフィッティングの結果であり、LSAの非常に顕著な問題です。また、ここでスケーリングするとはどういう意味ですか?doc2vecは実際には各ドキュメントに新しいモデルを必要とせず、計算に関してはLSAとLDAの間に顕著な違いはなく、どちらも非常にスケーラブルです。
スレータービクトロフ14

私はLSAのフィッティングに気づきませんでしたし、私が言ったように、私はLDAよりも優れたパフォーマンスを見た複数の他の人々に会いました。また、LSAが中世大会の多くの受賞作品で使用されているのを見てきましたが、LDAが優勝作品で使用されたことはありません。これは、ドキュメント間のセマンティックの類似性を比較するための学術会議です。したがって、彼らは何をしているのか知っていると思います。Doc2vecは、Mikolovの段落ベクトル実装を参照している場合、各ドキュメントで個別にSGDを実行します。とても遅いです。
サイモン14

@SlaterVictoroff私はそれが過剰適合だと言うために物事を述べている以上だと思います。LDAは、検索/情報検索および推奨のケースでは不十分であることが知られています。経験的に、LSAははるかに優れた動作をすることが示されており、私自身のデータに対してこれらの発見を検証したいので、私自身の経験にも一致します Doc2Vecのバージョンは、ドキュメントごとに勾配降下を行います。これは、一般的に多くの異なるアルゴリズムを指すため、Doc2Vecで使用されるアルゴリズムに依存します。
サイモン

3

最新の技術は、最近の論文http://cs.stanford.edu/~quocle/paragraph_vector.pdfで紹介された「段落ベクトル」のようです。段落ベクトル間のコサイン/ユークリッド距離は、他のアプローチよりもうまく機能する可能性があります。これはおそらく、オープンソースの実装が不足しているため、まだ実行可能ではありません。

次に最適なのは、LSAベクトル間のコサイン距離または生のBOWベクトル間のコサイン距離です。TF-IDFのような異なる重み付けスキームを選択した方が良い場合があります。


段落ベクトルのスケーラビリティについての私のコメントに注意してください。この技術は非常に有望に見えるが、実装することは困難である、とあなたは非常に高価である各ドキュメントのために別々のSGDをやっているように私は、用紙を正しく覚えていれば、全然うまくスケールしない
サイモン

1

局所性に敏感なハッシュアルゴリズムのファミリをツールのバッグに入れておくと便利です。このファミリはセマンティックではありません。実際には、テキストはビットのシーケンスと見なされます。同じテキストがわずかな違いで何度も表示される場合、ダーティデータセットで役立ちます。

このようなドキュメントを識別するために、ssdeepNilsimsa hashに基づいています)を使用できます。Ssdeepは当初、スパムのドメイン用に計画されました。正確な署名(例:md5)による検出を防ぐために、スパマーはしばしばメッセージに小さな変更を加えます(スペースを追加します)。

同じデータセット内のほぼ同じドキュメントの多くのバージョンは、それに適用される統計的手法に大混乱を引き起こすため、このようなクリーンアップを行うことは非常に有益です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.