Подсчет числа упоминаний организаций в тексте
Возник вопрос по функционалу библиотеки Natasha
.
Допустим, требуется извлечь именованные сущности (named entities
) из текста, а затем подсчитать частоту упоминания каждой в этом тексте. Путем сегментирования текста и NER
можно увидеть подобные сущности в тексте:
from natasha import (
Segmenter,
NewsNERTagger,
NewsEmbedding,
Doc,
ORG
)
segmenter = Segmenter()
emb = NewsEmbedding()
ner_tagger = NewsNERTagger(emb)
text = "Газпром планирует приобрести компанию Апекс Банк за 1 миллиард рублей. Газпром обозначил, что переговоры уже начаты."
doc = Doc(text)
doc.segment(segmenter)
doc.tag_ner(ner_tagger)
doc.ner.print()
Как результат будет такая визуализация:
Газпром планирует приобрести компанию Апекс Банк за 1 миллиард рублей.
ORG──── ORG───────
Газпром обозначил, что переговоры уже начаты.
ORG────
Однако, мне требуется получить лист с частотой упоминаемости, вроде такого:
2 Газпром
1 Апекс Банк
В документации natasha
есть предзаготовленные экстракторы дат, персон и денежных единиц, но по организациям нет; указано обращаться к библиотеке yargy
и писать свой экстрактор. Но yargy
ищет только предзаданные конструкции (на сколько понимаю), я же не знаю, какие организации могут быть упомянуты в тексте (в примере дал короткий, но на практике они больше). Каков может алгоритм решения проблемы, что я упускаю?