in blink/candidate_ranking/utils.py [0:0]
def eval_precision_bm45_dataloader(dataloader, ks=[1, 5, 10], number_of_samples=None):
label_ids = torch.cat([label_ids for _, _, _, label_ids, _ in dataloader])
label_ids = label_ids + 1
p = {}
for k in ks:
p[k] = 0
for label in label_ids:
if label > 0:
for k in ks:
if label <= k:
p[k] += 1
for k in ks:
if number_of_samples is None:
p[k] /= len(label_ids)
else:
p[k] /= number_of_samples
return p