in src/substitution_fns.py [0:0]
def sub_fn(ex: QAExample):
"""Derive all modified examples from one original example."""
# Determine which aliases are valid substitutions
# Store these as Dict[alias_text --> GoldAnswer] so we can retrieve the info for each alias
gold_answer_texts = [ga.text for ga in ex.gold_answers]
alias_to_info = {
alias: ga for ga in ex.gold_answers if ga.aliases for alias in ga.aliases
}
valid_aliases = list(set(alias_to_info.keys()) - set(gold_answer_texts))
sub_exs = [
# As the sub_answer is an alias we expect the metadata to be mostly the same as the original answer
create_new_example(
ex=ex,
new_id=f"alias-sub-{idx}",
answer_text=alias,
ner_label=alias_to_info[alias].ner_label,
kb_id=alias_to_info[alias].kb_id,
wikidata_label=alias_to_info[alias].wikidata_label,
aliases=[alias_to_info[alias].text],
wikidata_types=alias_to_info[alias].wikidata_types,
wikipedia_page=alias_to_info[alias].wikipedia_page,
popularity=alias_to_info[alias].popularity,
answer_type=alias_to_info[alias].answer_type,
replace_every_original_answer=replace_every,
)
for idx, alias in enumerate(valid_aliases)
]
return sub_exs