def entity_linking()

in entity_linking.py [0:0]


def entity_linking(v, distinct_slot_values, method_name, threshold=None, slot_name=None):
    if method_name == 'bijaccard':
        distance = bi_jaccard_distance
    elif method_name == 'edit_distance':
        distance = leven_distance  # Case in-sensitive
    elif method_name == 'edit_distance_norm':
        distance = leven_distance_norm  # Case in-sensitive
    elif method_name == 'roberta_mnli':
        distance = roberta_mnli_distance
    elif method_name == 'average_three':
        distance = average_three_distance
    elif method_name == 'exact':
        if v in distinct_slot_values:
            return v
        else:
            return None
    elif method_name == 'exact_nocase':
        for e in distinct_slot_values:
            if e.lower() == v.lower():
                return e
        return None
    else:
        raise Exception(f'Invalid entity linking method name: {method_name}')
    candidate, score = get_closest(v, distinct_slot_values, distance)
    if threshold is None:
        return candidate
    else:
        if score > threshold:
            return None
        else:
            return candidate