Наташа извлекает именованные сущности из текста на русском языке, включая (но не ограничиваясь):
Физ. лица: Иванов Иван Иванович, Иван Иванов, Иван Петрович, Ваня
Организации: ПАО «Газпром», ИП Иванов Иван Иванович, агентство 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.
