【发布时间】:2012-04-19 16:44:23
【问题描述】:
这个问题与使用 Lucene 计算文档之间的 CosineSimilarity 有关
文档分别用分类和本体术语进行标记。当我计算文档之间的文档相似度时,我想给那些分类术语和本体术语赋予更高的权重。
当我索引文档时,我在我的程序中将文档内容、分类和本体术语定义为每个文档的字段。
Field ontologyTerm= new Field("fiboterms", fiboTermList[curDocNo], Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES);
Field taxonomyTerm = new Field("taxoterms", taxoTermList[curDocNo], Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES);
Field document = new Field(docNames[curDocNo], strRdElt, Field.TermVector.YES);
我正在使用 Lucene 索引 .TermFreqVector 函数来计算 TFIDF 值,然后使用 TFIDF 值计算两个文档之间的余弦相似度。
我可以使用 Lucene 的 field.setBoost() 函数在索引之前为字段赋予更高的权重。在看到提升值后,我使用调试器查看分类术语的频率值,但它不会改变术语频率。所以这意味着 setboost() 函数不会对 TermFreVector 或 TFIDF 值产生任何影响? setboost() 函数是否增加了权重,只能用于文档搜索?
我可以做的另一件事是,在计算 TFIDF 分数之前,以编程方式将分类和本体术语频率与定义的权重因子相乘。这会在文档相似度计算中赋予分类和本体术语更高的权重吗?
在使用 TermFreqVector 计算 TFIDF 值时,是否有任何其他 Lucene 函数可用于为某些字段赋予更高的权重?或者我可以只使用 setboost() 函数来达到这个目的,那么如何?
【问题讨论】:
-
到目前为止,您已经发布了 8 个问题并且没有接受任何答案。你有不好的业力,人们会不乐意帮助你。回到您的问题并接受答案。如果你对你得到的答案不满意,你应该和回答者一起努力,直到你满意为止。在有人麻烦帮助你之后放弃问题是不好的。