Наташа извлекает именованные сущности из текста на русском языке, включая (но не ограничиваясь):
Физ. лица: Иванов Иван Иванович
, Иван Иванов
, Иван Петрович
, Ваня
Организации: ПАО «Газпром»
, ИП Иванов Иван Иванович
, агентство Bloomberg
События: фестиваль «Ковчег спасения»
, шоу «Пятая империя»
Гео-объекты: Москва
, Ленинградская область
, Российская Федерация
, Северо-Кавказский ФО
Объекты времени: 21 мая 1996 года
, 21.05.1996
, 21 мая
, сегодня
, в конце года
Денежные единицы: 200 рублей
, 1 млрд. долларов
Алгоритм работы (выделение сущностей по заданным правилам, используя морфологический разбор) похож на Томита-парсер от Яндекса.
$ pip install natasha
Для первого знакомства можно использовать онлайн версию.
from natasha import Combinator, DEFAULT_GRAMMARS
from natasha.grammars import Geo, Date
# DEFAULT_GRAMMARS содержит стандартный набор правил:
# [
# <enum 'Money'>,
# <enum 'Person'>,
# <enum 'Geo'>,
# <enum 'Date'>,
# <enum 'Brand'>,
# <enum 'Event'>
# ]
# Можно использовать их частично или использовать свои правила
MY_GRAMMARS_LIST = [
Geo,
Date,
]
text = "23 августа в Нижнем Новгороде пройдет очередной день"
combinator = Combinator(MY_GRAMMARS_LIST)
for (grammar, rule, tokens) in combinator.extract(text):
print("Тип:", grammar)
print("Правило:", rule)
print("Токены:", tokens)
Исходный код распространяется под лицензией MIT.