algorithm - 计算信息检索中分级文档的平均精度和召回率

标签 algorithm search-engine information-retrieval evaluation

我有一个正在开发搜索引擎的数据集。我已经成功地做到了这一点。现在我的下一步是计算这个搜索引擎的性能。我相信平均精度 (MAP) 和召回率 (/R) 是我需要计算的两个指标。我知道这些指标的公式,如果我简单地将我的文档标记为与每个查询相关或不相关,我就可以计算它们。但是,我对每个文档的标签都不是二进制的;相反,这些文档会针对每个查询进行评分。

例如,如果我有查询 1,我的数据集显示文档 14 与该查询最相关(分数:5),文档 54 有点相关(分数:4),文档 33 不太相关(分数:3 ),以此类推,以 0 分结束,这意味着该文档完全不相关且偏离主题。

我的问题是,如何使用这种标签计算 MAP/R?换句话说,如果我的第 2 个相关文档显示在第一位,或者我的最高相关文档显示在第 10 位等,我该如何评估系统?

请理解我必须使用 MAP/R 来评估我的搜索引擎。

我希望能对我的疑问有所了解。干杯!

最佳答案

平均平均精度旨在评估具有二进制相关函数的信息检索系统。另一方面,您具有分级相关功能。因此,您需要一种不同的方法来评估您的系统。

虽然有人尝试 generalize the Average Precision evaluation method to handle graded relevance ,正确的做法是使用 The Normalized Discounted Cumulative Gain Measure 评估您的系统.

归一化贴现累积增益是为分级相关概念的情况而设计的。与 k 处的精度一样,它是在某个数量 k 的热门搜索结果上进行评估的。从某种意义上说,The Normalized Discounted Cumulative Gain 所做的就是根据文档在结果列表中的位置来衡量文档的增益。增益从结果列表的顶部到底部累积,每个结果的增益在较低的等级上打折。请参阅上面链接中的实际公式。

如果出于某种原因您必须使用 MAP 或 Recall 来评估您的系统,那么您将不得不修改您的相关性度量,使其变为二元化(通过确定超出哪个文档被认为相关的阈值)。但是,要合并分级相关性度量中封装的信息,您唯一的选择是使用支持分级相关性的评估方法,例如标准化折扣累积增益。

关于algorithm - 计算信息检索中分级文档的平均精度和召回率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48767939/

相关文章:

c++ - 网格中的相邻产品

c++ - 确定何时首次运行我的应用程序

javascript改变算法

java - 如何判断单词在文本中是否没有意义?

python - 产品价格比较工具 : Difficulty in matching identical items

java - 着色对象

python - 从头开始搜索引擎

solr - solr 过滤器是如何实际实现的?

c++ - 如何向我的应用程序添加搜索功能

algorithm - 通过将字段存储为 Byte 而不是 String 的数十亿文档,在 Lucene 索引中将优化多少空间和处理