NLP は初めてです。2 つのドキュメントの類似点を見つけたいです。
私はググって、それを行う方法がいくつかあることを発見しました。
- シングリング、およびテキストの類似性を見つける
- コサイン類似度またはルセン
- tf-idf
これを行うための最良の方法は何ですか(私は他の方法にも対応しています)、これにより高精度が得られます。Javaにこれを行うためのAPIがある場合は、私にも知らせてください
NLP は初めてです。2 つのドキュメントの類似点を見つけたいです。
私はググって、それを行う方法がいくつかあることを発見しました。
これを行うための最良の方法は何ですか(私は他の方法にも対応しています)、これにより高精度が得られます。Javaにこれを行うためのAPIがある場合は、私にも知らせてください
あなたの質問に対する答えは 2 つあります。(a) 構文上の類似性と (b) 意味上の類似性です。
構文の類似性 あなたは既に Shingling を発見したので、他の側面に焦点を当てます。最近のアプローチでは、潜在変数モデルを使用して構文パターンを記述します。基本的な考え方は、条件付き確率: P ( f | f_c ) を使用することです。ここで、fは何らかの機能であり、f_c はそのコンテキストです。このようなモデルの最も単純な例は、単語を特徴として、前の単語をコンテキストとして持つマルコフ モデルです。これらのモデルは次の質問に答えます: *単語w1、... w _ n-1が文書内でその前に出現する場合、単語w _ nの確率は? この道は、言語モデルの構築につながります、それによってパープレキシティに基づいてドキュメントの類似性を測定します。純粋に構文上の類似性を測るには、単語の代わりに解析ツリーの特徴を見ることができます。
意味論的類似性 もちろん、これははるかに難しい問題です。この方向の最先端には、分布のセマンティクスを理解することが含まれます。分布セマンティクスは、基本的に、「大量のデータにわたって同様のコンテキストで発生する用語は、同様の意味を持つようにバインドされている」と述べています。このアプローチはデータ集約的です。基本的な考え方は、「コンテキスト」のベクトルを作成し、これらのベクトルの類似性を測定することです。
自然言語に基づいてドキュメントの類似性を測定するのは簡単ではありません。ここで答えを出すだけでは十分ではありません。そのため、この ACL ペーパーを参照してください。