def get_linking_results_of_method()

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)