信息检索与数据挖掘——倒排索引3

这篇博客是关于信息检索实验的报告,重点介绍了Ranking Retrieval Model的评估,包括Mean Reciprocal Rank (MRR)、Normalized Discounted Cumulative Gain (NDCG)的计算,并展示了对实验结果的详细分析。
摘要由CSDN通过智能技术生成

信息检索实验报告

实验题目

Ranked retrieval model

实验内容

实现以下指标评价,并对HW1.2检索结果进行评价

  • 实现以下指标评价,并对HW1.2检索结果进行评价;
  • Mean Reciprocal Rank (MRR);
  • Normalized Discounted Cumulative Gain (NDCG);
实验过程
  • 得到qrels_dict和test_dict

qrels_dict和test_dict分别从qrels.txt中和result.txt中得到

#get qrels_dict
      for line in f:
          ele = line.strip().split(' ')
          if ele[0] not in qrels_dict:
              qrels_dict[ele[0]] = {
   }
          if int(ele[3]) > 0:
              qrels_dict[ele[0]][ele[2]] = int(ele[3])
#get test_dict
      for line in f:
          ele = line.strip().split(' ')
          if ele[0] not in test_dict:
              test_dict[ele[0]] = []
          test_dict[ele[0]].append(ele[1])

简单来说,可以认为test_dict是测试的idset,qrels_dict是真实的idset,即

      test_result = test_dict[query]
      true_list = set(qrels_dict[query].keys())
  • MAP评价

MAP在Precision@K的基础上进行,主要步骤为:

  • 考虑每个相关docid在测试结果中的位置,K 1 , K 2 , … K R;
  • 为K 1 , K 2 , … K R计算Precision@K;
  • 求这R个P@K的平均值AvgPrec,得到AP;
  • MAP极为AP的均值;
#MAP
      for doc_id in test_result[0: length_use]:
          i += 1
          if doc_id in true_list:
              i_retrieval_true += 1
              P_result.append(i_retrieval_true / i)
              #print(i_retrieval_true / i)
      if P_result:
          AP = np.sum(P_result) / len(true_list)
          print('query:', query, ',AP:', AP)
          AP_result.append(AP)
      MAP=np.mean(AP_result)

可以得到MAP评价结果如下:
query: 171 ,AP: 0.9498040597601832

query: 172 ,AP: 0.3412969283276451

query: 173 ,AP: 0.9978136200716846

query: 174 ,AP: 0.5675347800347801

query: 222 ,AP: 0.30126376980342995

query: 223 ,AP: 0.9940746736049804

query: 224 ,AP: 0.5178732378732379

query: 225 ,AP: 0.9920063553263518

MAP = 0.6148422817122279

  • MRR评价

MRR相比其他两个较为简单,只需考虑第一个相关文档出现的位置就可以,步骤为:

  • 考虑第一个相关文档的名次位置
  • 计算排名分数为1/k
  • MRR即为RR的均值

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值