我有一个查询和一组文件。我需要根据与 tf-idf 的余弦相似度对这些文档进行排名。有人可以告诉我可以从 Lucene 获得什么支持来计算它吗?我可以直接从 Lucene 计算哪些参数(我可以通过 lucene 中的某种方法直接获得 tf、idf 吗?)以及如何计算与 Lucene 的余弦相似度(如果我传递查询的两个向量和文件?)
提前感谢
我有一个查询和一组文件。我需要根据与 tf-idf 的余弦相似度对这些文档进行排名。有人可以告诉我可以从 Lucene 获得什么支持来计算它吗?我可以直接从 Lucene 计算哪些参数(我可以通过 lucene 中的某种方法直接获得 tf、idf 吗?)以及如何计算与 Lucene 的余弦相似度(如果我传递查询的两个向量和文件?)
提前感谢
Lucene 已经使用了余弦相似度的拉皮条版本,因此如果您需要原始 CS 本身,它可能是可行的。我推荐讨论 Lucene 评分的官方页面。
如果您想自己提取该信息,这将是tf步骤的概述:
IndexReader
;maxDoc()
;getTermFreqVector(doc, fieldName);
tfv.getTerms()
和tfv.getTermFrequencies()
.至于docFreq,使用IndexReader.terms()
和迭代这个调用termEnum.docFreq()
。