gpt4 book ai didi

java - 如何动态过滤 Lucene 的 MoreLikeThis?

转载 作者:行者123 更新时间:2023-12-01 12:43:11 26 4
gpt4 key购买 nike

好吧,让我尝试解释一下我所做的事情,然后希望我要问的问题会更清楚。我正在分析文档,并尝试根据某些文档中频繁出现的单词对它们进行评分,尽管这些单词在整个索引中并不常见。到目前为止,我已经得到了一些非常有趣的结果,并且能够看到给定文档中每个术语的 tf 和 idf。

为了对整个文档进行评分,我想做一些与 tf-idf 相关的事情,但我不想使用文档中的每个术语。现在,我已经对一些过滤器进行了硬编码,以消除过于常见的单词(idf 太低而对我来说不重要的单词)和过于不常见的单词(idf 分数非常高的单词;根据我的经验,它们通常是拼写错误)。

有没有一个好的方法可以动态过滤掉idf中的异常值?
而不是:

if (idf > x && idf < y)
include the word

我想做这样的事情:

if (idf is in the 60th percentile of idfs for the index)
include it

也许这是最好的方法,但我想听听您可能提出的任何其他解决方案,谢谢!

最佳答案

评分过程的最后一步是由 Similarity 完成的。目的。我相信你只需要发展你的个性化相似度。 DefaultSimilarity (显然)是 Lucene 使用的默认类。它扩展了 TFIDF 的相似性。我建议您阅读这两个类的代码,以便了解如何开发自己的类。

一旦开发了该类,假设它称为 KmancSimilarity,下面是如何运行它:

Directory dir = <your dir>;
IndexReader index = DirectoryReader.open(dir);
IndexSearcher searcher = new IndexSearcher(index);
searcher.setSimilarity(new KmancSimilarity());

continue your code...

我一直在使用 4.8 版本,所以我不知道它是否对其他人有效。

希望对您有所帮助。

关于java - 如何动态过滤 Lucene 的 MoreLikeThis?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24898572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com