回答:
保持するセマンティック情報の正確な量とドキュメントのトークン化の容易さに応じて、これを実行するさまざまな方法があります(htmlドキュメントはおそらくトークン化するのがかなり難しいでしょうが、タグとコンテキストで何かを行うことができます)
それらのいくつかはffriendによって言及されており、user1133029による段落ベクトルは非常に堅実なものですが、さまざまなアプローチのプラスとマイナスについてさらに深く掘り下げると思いました。
edit distance
、これは通常、個々のトークンレベル(単語、バイグラムなど)でのみ使用されます。一般に、このメトリックは意味情報を破棄するだけでなく、非常に異なる単語の変更を非常によく扱う傾向があるため、このメトリックはお勧めしませんが、この種のことには非常に一般的なメトリックですtopic modeling
。LSAは最近かなり流行しており、私の経験では、これは非常に強力なトピックモデリングアプローチではありませんが、実装するのは比較的簡単で、いくつかのオープンソース実装がありますtopic modeling
、LSA
実際にはよりスムーズで直感的な傾向がある内部表現を実際に学習する点が異なります。一般に、取得する結果LDA
はLSA
、ドキュメントの類似性をモデル化するのに適していますが、トピックを強く区別する方法を学習するにはあまり適していません。LDA
、唯一の欠点はトレーニングに少し時間がかかり、オープンソースの実装が少し難しいことですCount Vectorizers
やなどの手法で得られるスパースベクトルよりも合理的なベクトルにインテリジェントに削減するための一連の手法に取り組んでいTF-IDF
ます。Word2vecは、多くのオープンソース実装を備えているため素晴らしいです。ベクトルを取得したら、その上で他の類似性メトリック(コサイン距離など)を使用して、大幅に効果を高めることができます。paragraph vectors
。これは、Googleの一連の論文の中で最新かつ最高のものであり、ドキュメントの密なベクトル表現を調べています。gensim
python のライブラリには、word2vec
ビルドにかなり合理的に活用できるほど簡単な実装がありますが、doc2vec
このルートを下る場合は、ライセンスを忘れないでくださいお役に立てば幸いです。質問がある場合はお知らせください。
経験的に、LSAは毎回、また試してみたすべてのデータセットでLDAよりもはるかに優れていることがわかりました。私は同じことを言っている他の人と話をしました。また、多くの場合ワードネットベースの測定と組み合わせて、ドキュメント間のセマンティック類似性を測定するための多くのSemEval競争に勝つために使用されています。一部のレスポンダーが述べていることとは反対に、トピックのモデリングであり、私の経験におけるセマンティックな類似性ではありません。
gensim(Pythonライブラリ)を使用する場合、LSA、LDA、word2vecが含まれているため、3を簡単に比較できます。オープンソースの実装を知らない。各ドキュメントについて、低速の機械学習アルゴリズムであるSGDを使用して新しい個別のモデルを構築する必要があるため、拡張性があまりありません。ただし、おそらく最も正確な結果が得られます。LSAとLDAもうまくスケーリングしません(ただし、word2vecはスケーリングします)。ただし、Gensimの実装は反復SVDを使用するため、非常に高速です。
もう1つの注意点として、word2vecを使用する場合、単語ごとに異なるベクターを提供するため、ドキュメントからベクターを作成する方法を決定する必要があります。これを行う最も簡単な方法は、各ベクトルを正規化し、ドキュメント内のすべての単語ベクトルの平均を取るか、各単語のidf重み付けによって加重平均を取ることです。したがって、「word2vecを使用する」ほど単純ではないので、ドキュメントの類似性を計算するには、さらに何かを行う必要があります。
私は個人的にLSAを使用します。経験的にはうまく機能し、gensimのライブラリは非常にうまくスケールします。ただし、無料のランチはありませんので、各方法を試して、データに適した方法を確認してください。
最新の技術は、最近の論文http://cs.stanford.edu/~quocle/paragraph_vector.pdfで紹介された「段落ベクトル」のようです。段落ベクトル間のコサイン/ユークリッド距離は、他のアプローチよりもうまく機能する可能性があります。これはおそらく、オープンソースの実装が不足しているため、まだ実行可能ではありません。
次に最適なのは、LSAベクトル間のコサイン距離または生のBOWベクトル間のコサイン距離です。TF-IDFのような異なる重み付けスキームを選択した方が良い場合があります。
局所性に敏感なハッシュアルゴリズムのファミリをツールのバッグに入れておくと便利です。このファミリはセマンティックではありません。実際には、テキストはビットのシーケンスと見なされます。同じテキストがわずかな違いで何度も表示される場合、ダーティデータセットで役立ちます。
このようなドキュメントを識別するために、ssdeep(Nilsimsa hashに基づいています)を使用できます。Ssdeepは当初、スパムのドメイン用に計画されました。正確な署名(例:md5)による検出を防ぐために、スパマーはしばしばメッセージに小さな変更を加えます(スペースを追加します)。
同じデータセット内のほぼ同じドキュメントの多くのバージョンは、それに適用される統計的手法に大混乱を引き起こすため、このようなクリーンアップを行うことは非常に有益です。