这个问题与使用 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() 函数,那么如何?