2

ファイル間の類似性を検出したいと思います。これを行う 1 つの方法は、類似性アルゴリズムへの入力スペースを減らすためにファイルをエンコードし、2 つ目はより正確な結果を得るためです。これは、ドキュメントの有益な機能のみを考慮して行われます。これを行う 1 つの方法は、非常に有益な用語を拡大し、頻繁な用語を縮小する tf-idf 頻度に従って、ファイルをベクトル空間変換に変換することです。私の質問は、テキスト表現が保持されていないドキュメントでこれを実行できるかどうかです。たとえば、最初にドキュメントが大きな整数配列に変換され、その文字が ASCII 値として表されるとします。

4

3 に答える 3

3

テキストは常に数値データでエンコードされるため、@Ivan Koblikが指摘したように、バイト配列でのドキュメントのエンコードは問題ではありません。あなたのタスクは、標準的なドキュメントの類似性検出の問題です。以下の手順をお勧めします。

前処理

  • デコード
  • トークン化;
  • ケースの折りたたみ;
  • ストップワードの削除;
  • ステミング。

特徴の生成

  • あなたが指摘したように、 tf-idf は良いものかもしれません。
  • 重み付けされた特徴のセットは、高次元ベクトルを構成します。

フィンガープリント

simhashor を使用すると、高次元ベクトルをf-bit指紋に変換できますf=64これは、Google がほぼ重複する Web ページの検出に使用している手法とまったく同じです。

それぞれの次元がゼロに初期化されている f 次元ベクトル V を保持します。機能は、f ビットのハッシュ値にハッシュされます。これらの f ビット (機能に固有) は、次のように、その機能の重みによってベクトルの f コンポーネントをインクリメント/デクリメントします: ハッシュ値の i 番目のビットが 1 の場合、V の i 番目のコンポーネントはその機能の重み。ハッシュ値の i 番目のビットが 0 の場合、V の i 番目のコンポーネントは、その特徴の重みによって減分されます。すべての機能が処理されると、V の一部のコンポーネントは正であり、他のコンポーネントは負です。コンポーネントの符号によって、最終的なフィンガープリントの対応するビットが決まります。

ただし、あなたのケースでは、余弦距離やユークリッド距離などの他の類似関数の方がパフォーマンスが優れている場合があります。うまく機能しない場合は、問題に最適な類似関数を見つけてみてくださいsimhash

類似ドキュメントのクエリ

各ドキュメントのフィンガープリントを生成した後、同様のドキュメントには同様のフィンガープリントが含まれているはずです (類似しているとは、それらのフィンガープリントのハミング距離が小さいことを意味します)。詳細については、 ほぼ重複する Web ページの検出を参照してください。

編集

最初のステップ、つまりデコードを実行できない場合でも、それぞれの一意の整数の出現回数を数えるだけで実行できます。これらの一意の整数に tf-idf を適用し、サブシーケンスの手順に従うことができます。

于 2013-01-18T20:15:44.450 に答える
1

hmm interesting question. The answer AFAIK is simply NO

text documents means words e.i. synonyms, collocation, suffixes, prefixes (stemming)...

big integer byte array lacks a possibility to cover all those things. Therefore comparing files transformed into byte arrays won't tell you whether there are similar texts.

Take this answer as a answer to your caption. Body of your question is rather complicated and it seems you are mixing more things together (it is hard to understand) - maybe making more simple questions would help ...

于 2013-01-18T12:00:29.943 に答える
1

ブルーム フィルターは、TF-IDF アプローチを気にしない場合に適しています : http://research.microsoft.com/en-us/um/people/navendu/mypapers/webdb-167.pdf
誤検知に対する許容度に応じて、任意の小さいまたは大きい。

とにかく、NLP ツールキットを見ると、ほとんどのアルゴリズムをタスクに適応させることができます。問題は、類似性をどのように指定するかです。

さまざまなクラスのドキュメントを指定できる場合は、Naive Bayes を調べる価値があります。類似性を別の方法で定義したい場合は、MaxEnt モデルが機能する可能性があります

于 2013-01-18T13:34:24.997 に答える