2017-11-23 14 views
0

これらの文書が構成されている語彙であり、各文書には厳密に1語の大きな辞書があります。私はこれらの文書をお互いに比較し、価値を計算したいと思います。私は二つの文書を非常に異なって宣言します。2つの文書を比較する

単語が両方の文書に含まれているが、他の文書にまれにあるかどうかにかかわらず、2つの文書の類似性が強化されます。

単語が両方の文書に含まれているが、多くの場合は他の文書にも含まれていると、類似しない一般的な単語であるため、2つの文書の類似性が低下します。

どの方法を使用しますか? TF-IDF?その他?

答えて

1

TF-IDFは確かに良いスタートです。

ドキュメントのテキストの長さも考慮することで、改善することができます。これはライブラリLuceneの機能です。

Luceneは、文書の長さを考慮してTF-IDFの式を拡張しました。これは、人間の直感に対応するためです。結局のところ、ある単語の文書に「猫」という単語がある場合、この用語は、1000語の文書の1つの「猫」と比較すると、より関連性が高くなります。

Luceneのは、TF-IDFの拡張式を採用しているようです:

log(numDocs/(docFreq + 1)) * sqrt(tf) * (1/sqrt(length)) 

numDocs = total number of documents 
docFreq = in how many documents the word was found 
tf  = Term frequency in a specific document 
length = How many words there are in the document 

ことのLuceneがBM25( "ベストマッチ25")と呼ばれる別のアルゴリズムを使用するように進化してきたのにこの頃はそれはそう。全体として、このアルゴリズムは、TF-IDFより良い結果を生み出すと思われます。この偉大なblog articleのLucene実装チェックの詳細については

IDF * ((k + 1) * tf)/(k * (1.0 - b + b * (|d|/avgDl)) + tf) 

k = constant (typically 1.2) 
tf = term frequency 
b = also a constant which tunes the influence of the document length 
|d| = document length 
avgDl = average document length 
IDF = log (numDocs/docFreq + 1) + 1 

:Luceneのに使用されるBM25ための式があるようです。

関連する問題