def ndcg(self, rankers, cutoff):
'''
rankers: instances of Ranker
cutoff: cutoff for nDCG
'''
result = defaultdict(list)
for q in self.docs:
documents = self.docs[q]
rels = {id(d): d.rel for d in documents}
for idx, ranker in enumerate(rankers):
res = ranker.rank(documents)
ranked_list = [id(d) for d in res]
score = ndcg(ranked_list, rels, cutoff)
result[idx].append(score)
for idx in result:
result[idx] = np.average(result[idx])
return result
评论列表
文章目录