如何基于GT与搜索结果计算搜索引擎的RR及MRR?
计算MRR(平均倒数排名)的具体方法
嘿,我来帮你理清楚这个问题——其实你的思路方向是对的,核心就是先算出单个查询的倒数排名(RR),再对所有查询的RR取平均值得到MRR。针对你给出的数据格式,具体步骤如下:
单个查询的RR计算步骤
- 明确相关文档范围:先把GT(正确结果)转换成集合(方便快速判断),比如你的例子里GT集合是
{doc1, doc2, doc3} - 遍历搜索引擎返回结果:按顺序检查SE里的每个文档,找到第一个出现在GT集合里的文档
- 计算RR值:
- 如果找到这个文档,RR = 1 / 该文档在SE中的位置(注意:位置从1开始计数,不是0)
- 如果SE里没有任何GT中的文档,RR = 0
用你的例子演示
你的数据:
- GT = [doc1, doc2, doc3]
- SE = [doc2, doc7, doc1]
遍历SE的顺序:
- 第1位:doc2,属于GT → 这就是第一个相关结果
- 所以RR = 1 / 1 = 1
再举个扩展例子:如果SE是[doc7, doc1, doc2],第一个相关结果是第2位的doc1,那么RR = 1/2 = 0.5;如果SE是[doc7, doc8, doc9],没有任何GT文档,RR=0。
MRR的计算
MRR就是所有查询的RR值的算术平均值,公式如下:
MRR = (RR₁ + RR₂ + ... + RRₙ) / n
其中n是查询的总数。比如你有3个查询,RR分别是1、0.5、0,那么MRR = (1 + 0.5 + 0)/3 = 0.5。
补充说明
- 为什么要转成集合?因为判断文档是否在GT里时,集合的查询效率比列表高,尤其是当GT里文档数量很多的时候
- 位置必须从1开始计数,这是IR(信息检索)领域的标准约定,不要用0索引来计算,否则结果会错误
内容的提问来源于stack exchange,提问作者boss hrustic
相关产品推荐
相关产品推荐

