2

我有一个查询和一组文件。我需要根据与 tf-idf 的余弦相似度对这些文档进行排名。有人可以告诉我可以从 Lucene 获得什么支持来计算它吗?我可以直接从 Lucene 计算哪些参数(我可以通过 lucene 中的某种方法直接获得 tf、idf 吗?)以及如何计算与 Lucene 的余弦相似度(如果我传递查询的两个向量和文件?)

提前感谢

4

1 回答 1

4

Lucene 已经使用了余弦相似度的拉皮条版本,因此如果您需要原始 CS 本身,它可能是可行的。我推荐讨论 Lucene 评分的官方页面

如果您想自己提取该信息,这将是tf步骤的概述:

  1. 索引语料库;
  2. 打开一个IndexReader
  3. 遍历所有文档 ID,从 0 到maxDoc();
  4. getTermFreqVector(doc, fieldName);
  5. 遍历并行数组tfv.getTerms()tfv.getTermFrequencies().

至于docFreq,使用IndexReader.terms()和迭代这个调用termEnum.docFreq()

于 2012-04-16T11:45:01.167 回答