in kilt/eval_retrieval.py [0:0]
def _answer_and_ent_in_context_at_k(guess_item, gold_item, k):
answers = eval_downstream.get_gold_answers(gold_item)
titles = eval_downstream.get_gold_titles(gold_item)
if "provenance" in guess_item["output"][0]:
provenance = guess_item["output"][0]["provenance"]
for i in range(0, min(k, len(provenance))):
if "text" in provenance[i]:
normalized_text = eval_downstream.normalize_answer(
provenance[i]["text"]
)
has_answer = False
for a in answers:
if eval_downstream.normalize_answer(a) in normalized_text:
has_answer = True
break
if has_answer:
for t in titles:
if eval_downstream.normalize_answer(t) in normalized_text:
return 1
return 0