Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Lucene中使用向量空间模型代替BM25_Java_Solr_Lucene - Fatal编程技术网

Java 在Lucene中使用向量空间模型代替BM25

Java 在Lucene中使用向量空间模型代替BM25,java,solr,lucene,Java,Solr,Lucene,如何更改Lucene中的评分并使用向量空间模型而不是BM25?您可以通过使用和设置相似度来更改用于对文档评分的算法。注意,在编写和搜索时应该使用相同的相似性实现,并且通常需要在任何时候尝试不同的相似性时重新编制索引 有许多现成的 Lucene以前的默认相似性是,这是一个TFIDF(即VSM)实现 然而,根据你的评论,它不会实现你想要的。它也不会为您提供一种有意义的方法来规范分数,或建立有用的阈值,并且分数没有上限。要使用不同的相似性,请使用以下方法在索引搜索器中设置相似性: IndexSearc

如何更改Lucene中的评分并使用向量空间模型而不是BM25?

您可以通过使用和设置相似度来更改用于对文档评分的算法。注意,在编写和搜索时应该使用相同的相似性实现,并且通常需要在任何时候尝试不同的相似性时重新编制索引

有许多现成的

Lucene以前的默认相似性是,这是一个TFIDF(即VSM)实现


然而,根据你的评论,它不会实现你想要的。它也不会为您提供一种有意义的方法来规范分数,或建立有用的阈值,并且分数没有上限。

要使用不同的相似性,请使用以下方法在
索引搜索器中设置相似性:

IndexSearcher indexSearcher;

IndexReader reader = DirectoryReader.open(indexDirectory);
indexSearcher = new IndexSearcher(reader);

...

indexSearcher.setSimilarity(new BM25Similarity());    //default in newer versions and above
//or
indexSearcher.setSimilarity(new ClassicSimilarity());
//or any other similarity

你的目标是什么?您是在寻找旧的TF/IDF计分,还是想要一个更简单的VSM?谢谢您的回复。我想创建一个程序,使用Lucene检查文本的可信度。课文的可信度取决于分数。当我使用BM25时,我注意到没有阈值分数可以用来确定文本是否可信。此外,没有分数限制来确定文本是否高度相似。所以我想试试VSM,“文本是可信的”是什么意思?这是一个非常广义的词-你确定你在寻找相似性算法而不是NLP吗?可信意味着文本是事实。是的,我想用信息检索而不是NLP来解决这个问题。你如何在你的案例中定义一个事实?谢谢你的回复。我会这么做,看看。。你认为我必须做些什么来建立有用的阈值?我不知道你的实际需求,但我的一般建议是重新考虑你正在尝试做什么。如果希望保证最低结果更为相关,请考虑更仔细地构造查询,以避免弱匹配。