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