Я использовал spacy, чтобы найти NER предложений. Моя проблема в том, что мне нужно вычислить сходство NER между предложениями двух разных документов. Есть ли в питоне какая-либо формула или пакет для того же?
TIA
Я использовал spacy, чтобы найти NER предложений. Моя проблема в том, что мне нужно вычислить сходство NER между предложениями двух разных документов. Есть ли в питоне какая-либо формула или пакет для того же?
TIA
Я думаю, вы спрашиваете, how similar are two named entities
?
Это не так уж и тривиально, поскольку мы должны определить, что означает «подобное».
Если мы воспользуемся наивным набором слов, две сущности будут более похожими, если будет идентично больше их токенов.
Если мы поместим токены сущностей в наборы, вычисление будет просто коэффициентом жаккара.
Sim(ent1, ent2) = |ent1 ∩ ent2| / |ent1 ∪ ent2|
Что в питоне будет:
ent1 = set(map(str, spacy_entity1))
ent2 = set(map(str, spacy_entity2))
similarity = len(ent1 & ent2) / len(ent1 | ent2)
Где spacy_entity
- одна из сущностей, извлеченных пространством
Затем мы просто создаем наборы сущностей ent
, создавая набор строк, которые их представляют.
Вероятно, вам понадобится http://uima.apache.org/d/uimacpp-2.4.0/docs/Python.html/ плюс прикрепленный к нему парсер CoNLL-U https://universaldependencies.org/format.html. При таком подходе NER основаны на словаре в конвейере UIMA. Вам необходимо разработать собственные алгоритмы поиска / сопоставления NER (на Python или на другом поддерживаемом языке).