Я полагаю, вы спрашиваете, how similar are two named entities
?
Это не так тривиально, так как мы должны определить, что означает "подобное".
Если мы используем наивный подход с мешком слов, две сущности становятся более похожими, когда больше их токенов совпадают.
Если мы поместим токены сущности в наборы, вычисление будет просто коэффициентом jaccard.
Sim(ent1, ent2) = |ent1 ∩ ent2| / |ent1 ∪ ent2|
Что в python будет:
ent1 = set(map(str, spacy_entity1))
ent2 = set(map(str, spacy_entity2))
similarity = len(ent1 & ent2) / len(ent1 | ent2)
Где spacy_entity
- одна из сущностей, извлеченных с помощью spacy
Затем мы просто создаем наборы сущностей ent
, создавая набор строк, которые их представляют.