1

複数の章のドキュメントを2番目のドキュメントと比較して、それらの類似性を判断する必要があるプロジェクトがあります。問題は、これをどのように行うか、どのようなアプローチが存在するか、またはそれらが利用可能なライブラリであるかどうかがわからないことです。

私の最初の質問は...何が似ているのですか?一致する単語の数、一致する連続する単語の数?

各ドキュメントを単語と場所を含む配列に配置するパーサーを作成し、それらを比較するのを見ることができました。

テキスト分析のためのアルゴリズムまたはライブラリで以前の質問を見ました 。具体的には、支配的な単語、テキスト全体のフレーズ、およびテキストのコレクションです。

しかし、それは私がやろうとしていることとは少し違うようです。

人々が持っているかもしれないどんなオプションやポインタも素晴らしいでしょう!

4

5 に答える 5

1

「何が似ているか」とは言えませんが、これはあなたのプロジェクトの基本的な要件の表明です。あなたがこれを知らないならば、それをする方法について考えるのは少しすぐです。

「なぜ」という質問をすると役立つ場合があります。類似性の尺度は何に使用されますか?

たとえば、盗用を検出することが目的である場合、2つのエッセイが同じ主題について話し、同様の参照を行うために類似していることを検出することは役に立たない可能性があります-クラス全体が同様のエッセイを提出します!したがって、正確に一致する文やフレーズを探している可能性があります。

代わりに、いくつかのドキュメントのカタログを作成しようとしている場合は、おそらくキーワードを検索します。2つのドキュメントは、certianの長さにわたって同じ単語の語彙を使用する場合、または同様の適切な名詞を使用する場合、類似しています。

これらの2つの例は、類似の意味を理解するまで、多くのアドバイスを与えるのは難しいことを示すことを目的としています。

ただし、考えられるアプローチは次のとおりです。エクストラクタとコンパレータの2つの主要なものを書くことができます。

エクストラクタの仕事は、ドキュメントを調べて、ドキュメントの本質であるチャンクのセット(またはリスト、順序付けする必要がありますか?)を生成することです。これらは、個々の単語または文やフレーズである可能性があります。

コンパレータの仕事は、2つのドキュメントの「本質」の類似性を評価することです。

簡単な例:ドキュメントから8文字以上の単語の一意のリストを抽出します。その場合、1つのセットに他のドキュメントの75%以上が含まれている場合、2つのドキュメントが類似している可能性があります。

于 2009-07-12T21:20:49.393 に答える
1

簡単な方法の1つは、ドキュメントテキストを連結してから、それらを圧縮することです。圧縮率は、あなたがどれだけの類似性を持っているかを教えてくれます。

于 2009-07-12T22:14:25.010 に答える
1

使用できるアプローチの1つは、Shinglingと呼ばれます。このプロセスには、両方のドキュメントのすべての単語をトークン化することが含まれます。

D1 = {"An", "Example", "Document", "To", "Show", "Shingling"}
D2 = {"Another", "Example", "Document", "To", "Show", "Shingling", "but", "longer"}

次に、ウィンドウ長nの連続するサブシーケンスのセットを取得します(セット内に重複がないことを忘れないでください)。

S(D1, 3) = {{"An", "Example", "Document"}, {"Example", "Document", "To"}, {"Document", "To", "Show"}, {"To", "Show", "Shingling"}}

S(D2, 3) = {{"Another", "Example", "Document"}, {"Example", "Document", "To"}, {"Document", "To", "Show"}, {"To", "Show", "Shingling"}, {"Show", "Shingling", "but"}, {"Shingling", "but", "longer"}}

その場合、類似点は、交差点のカーディナリティーを和集合のカーディナリティーで割ったものです。したがって、この例では3/7 = 43%類似しています。

ランダムに選択されたスケッチ(帯状疱疹のセットからのサブセット)を使用して、効率的な近似を行うことができます。

于 2009-07-24T21:20:02.850 に答える
0

それはあなたが何を達成したいかによります。一連のドキュメントから特定のドキュメントに類似したドキュメントを見つけることが目標である場合は、次のような方法を試すことができます。

ドキュメントによっては、最初に長いドキュメントから最も意味のあるキーワードまたはキーセンテンスを抽出して、テキストの本質を抽出することができます(google「キーワード抽出」)。次に、テキスト類似性アルゴリズム(k最近傍アルゴリズムなど)を使用して、類似したドキュメントを探し出すことができます。重要なのは、テキストの重要な部分を抽出することです。

于 2009-07-12T21:33:47.400 に答える
0

すべてのソース管理システムで使用されるdiffツールは、ほぼ正確にこれを実行します。これらのいずれかを試して、差異の数(したがってそれらがどれほど類似しているか)を測定するのに役立ててください。

于 2009-07-12T21:20:06.633 に答える