1

ここhttp://www2002.org/CDROM/refereed/643/node6.htmlおよびこのペーパーhttp://singhal.info/ieee2001.pdfから、Okapi類似性測度を使用してドキュメントの類似性を計算できることがわかりました。

LuceneとのOkapi類似性スキームを使用してドキュメントコレクションのドキュメント間の類似性を計算したい

たとえば、ドキュメントコレクションに10個のドキュメント(ドキュメント#A、#B、#C、#Dなど)があります。クエリドキュメントとしてドキュメントを選択します。ドキュメント#Aと言います。次に、クエリドキュメントの各term = 1..nについて、計算します。

idfOfQueryTerm = log (totalNumIndexedDocs - docFreq + 0.5)/(docFreq + 0.5)

それから私は取りsum of (idfOfQueryTerm) from 1 to nます; idfOfQueryDoc= sum of (idfOfQueryTerm) 次に、10個のドキュメント(クエリドキュメントを含む)ごとに、最初に選択されたクエリドキュメントのクエリ用語に基づいて、この式によってドキュメントの合計用語頻度を計算します。

tfOfDocument={2.2 * termFrq }/ { 1.2 * ( 0.25 + 0.75 * docLength / this.avgDocLength ) + termFrq }

したがって、最終的には10tfOfDocument個の値になります。1つはドキュメントごとに1つ、もう1つはidfOfQueryDoc値です。

次に、これら2つの方法を使用して、クエリドキュメントと他のドキュメントの類似性を計算できます。

1)クエリドキュメントとドキュメント#B=の類似性idfOfQueryDoc* tfOfDocument #B

2)クエリドキュメントとドキュメント#B=の類似性idfOfQueryDoc* tfOfDocument #B* tfOfDocument#queryDoc

オカピの類似性測度についての私の理解が正しいかどうか知りたいですか?

上記の2つの方法のうち、ドキュメントの類似性を計算するのに最適な方法はどれですか?

4

1 に答える 1

2

最初のリンクに基づくと、クエリドキュメントと別のドキュメントの類似性は次のとおりです。

sim(query, doc) = sum(t in terms(query), freq(t, query) * w(t, doc))

ここで(2番目のリンクから、リンクの式が正しくないと思うので少し変更しました)

w(t, doc) = idf(t) * (k+1)*freq(t, doc) / (k*(1-b + b*ls(doc)) + freq(t, doc))
ls(doc) = len(doc)/avgdoclen

idf(t)はあなたのidfOfQueryTerm、はドキュメント内freq(t, doc)の用語の頻度です。tdoc

b=0.25およびk=1.2を選択すると、次のようになります。

w(t, doc) = idf(t) * 2.2*freq(t, doc) / (1.2*(0.25+0.75*ls(doc)) + freq(t, doc))

:2つのリンクはわずかに異なる方程式を示しますが、違いは主に計量にあり、基本的なものではありません

于 2012-06-13T11:49:27.853 に答える