in entity_linking.py [0:0]
def get_linking_results_of_method(true_convers, predict_convers, distinct_slot_values, method_name, threshold=None):
assert len(true_convers) == len(predict_convers)
all_gts = set()
all_pds = set()
raw_pds = set()
for key in true_convers:
assert key in predict_convers
assert len(true_convers[key]) == len(predict_convers[key])
for idx in range(len(true_convers[key])):
gt = true_convers[key][idx]
pd = predict_convers[key][idx]
assert gt['utteranceId'] == pd['utteranceId'], f"{gt['utteranceId']} -- {pd['utteranceId']}"
gt_intents = set(gt['intent'].split('<div>'))
pd_intents = set(pd['intents'].split('<div>'))
gt_slots = set(
[(gt['utteranceId'], k, vi) for k, v in gt['entity_values'].items() for vi in v if (k in distinct_slot_values)])
pd_slots = set(
[(pd['utteranceId'], k, vi) for k, v in pd['entity_values'].items() for vi in v if (k in distinct_slot_values)])
raw_pd_slots = set(
[(pd['utteranceId'], k, vi, method_name, threshold, k) for k, v in pd['slot_values'].items() for vi in v
if (k in distinct_slot_values)])
if len(gt_intents.intersection(pd_intents)) > 0:
all_gts = all_gts.union(gt_slots)
all_pds = all_pds.union(pd_slots)
raw_pds = raw_pds.union(raw_pd_slots)
return calculate_prf_entity(all_gts, all_pds, raw_pds, distinct_slot_values)