我发现 Okapi 相似度度量可用于从这里http://www2002.org/CDROM/refereed/643/node6.html和本文http://singhal.info/ieee2001.pdf计算文档相似度
我想使用带有 Lucene 的 Okapi 相似性方案计算文档集合的文档之间的相似性
例如,我的文档集合中有 10 个文档(doc #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
个值,每个文档一个值,一个idfOfQueryDoc
值。
然后我可以使用这两种方法计算查询文档与其他文档之间的相似度。
1)查询文档和文档#B=的相似性idfOfQueryDoc* tfOfDocument #B
2)查询文档和文档#B=的相似性idfOfQueryDoc* tfOfDocument #B* tfOfDocument#queryDoc
我想知道,我对 Okapi 相似度度量的理解是否正确?
以上两种方法中哪种方法最适合计算文档相似度?