在信息检索中, 我们通常需要对查询的结果进行评价, 以此来衡量一个信息检索系统的好坏。以下列出常用的指标, 并且给出python的实现(参考[1])。
Precision and Recall
在一个信息检索系统中, 最基本的指标就是precision和recall, precision衡量了检索到的文章的相关度, recall衡量了相关的文章被检索到的程度, 若用公式来表达,就是
PrecisionRecall=P(revelent|retrieved)=P(retrieved|relevant)
其中, P() $指概率
通常来说, 普通的用户希望第一页检索到的文章是相关的,即precision是高的, 而对于一些研究人员或者分析师来说, 他们希望有更多的相关文档被检索到, 即使有一些错误的结果, 他们也不介意, 即recall是高的。precision与recall之间存在一种trade off 的关系, 即precision高, 则recall低, vice versa。
Mean Reciprocal Rank(MRR)
这个指标在Question Answering(QA)领域比较常用, 在IR中并不常用(至少在目前看过的论文中是这样的)。简而言之,就是对一个查询query, 产生了一个result list,我们记录第一个relevant文档出现的位置, 然后取倒数, 这样就得到了Reciprocal Rank, 对多个query取平均就是MRR了, 如下公式表示[2]
MRR=1|Q|∑i=1Q1ranki
import numpy as np
def meanReciprocalRank(rs):
''' Calculate Mean Reciprocal Rank
Args:
rs: ranking scores, 2-dimension np.array
return:
mrr: Mean Reciprocal Rank
'''