Lucene ScoreDoc:在分数中发现重大损失

Lucene ScoreDoc:在分数中发现重大损失,lucene,loss,Lucene,Loss,因此,我编写了一个小工具,给出一个查询,列出按查询分数排序的前1000个结果文档。显然,并非所有这些都是相关的。作为一个用户,我和其他人经常做以下事情: 看看分数 向下滚动列表,直到看到分数显著下降。 例如,排名靠前的文档的分数如下:4.2、3.9、3.9、3.85、…、3.7、0.3、0.3、0.25、。。。 通常我们可以说,在3.7分之前的所有文档都是相关的,其余的0.3分开始的文档都是不相关的。考虑到这个分数列表,这甚至有点明显,幸运的是在我们的用例中,它工作得很好 有没有最先进的算法可以

因此,我编写了一个小工具,给出一个查询,列出按查询分数排序的前1000个结果文档。显然,并非所有这些都是相关的。作为一个用户,我和其他人经常做以下事情:

看看分数 向下滚动列表,直到看到分数显著下降。 例如,排名靠前的文档的分数如下:4.2、3.9、3.9、3.85、…、3.7、0.3、0.3、0.25、。。。 通常我们可以说,在3.7分之前的所有文档都是相关的,其余的0.3分开始的文档都是不相关的。考虑到这个分数列表,这甚至有点明显,幸运的是在我们的用例中,它工作得很好

有没有最先进的算法可以在这里的分数列表中找到这样的差距/损失

以下事实:

顶级文档总是相关的 在这一点上,没有或几乎没有任何文件是相关的 这一点可以通过第一次得分差距来确定
对于给定的序列,天真的解决方案是在3.7之后进行剪切,但在边缘情况下,您的算法将失败得很惨

分数的问题是它总是相对的,它的数值表达式的用途非常有限。事实上,如果语料库发生了变化,甚至不能保证同一查询中的同一文档是相同的

此外,没有什么可以假设得分为4.2的第一次命中是显著的。如果一个查询返回了所有弱有效的命中率怎么办


我只是担心这个问题没有好的解决办法,主要是因为很多人认为这根本不是一个大问题。没有人关心谷歌是否提供了199或200页的搜索结果,事实上没有人能做到这一点,所以对我来说,分页是这个问题的答案。您不会列出所有搜索结果,是吗?

您好,mindas,我问这个问题是因为我想实现自动摘要。因此,给定一个查询,我只想选择前k个文档并对它们进行汇总。因此,用户不会看到任何文档,而只会看到它们的聚合。现在的问题是,如何真正只选择最好的文档。在我的问题中,我已经清楚地表明了这一点:我不想总是在3.7之后削减,而是想找出这些差距。问题是你没有一个关于最佳起点和终点的算法定义。除了你没有其他人能帮上忙。用算法/公式化的术语来定义将是一个良好的开端。感谢您的反馈!我已经相应地更新了这个问题