Время прочтения: 2 мин.

Stanza построена на основе библиотеки глубокого обучения PyTorch. Так же проект включает предварительно обученные модели, соответствующие 66 естественным языкам (английский, испанский, русский и т.д.)

Для решения задачи для текста на русском языке можно в коде программы применить метод download(‘ru’), который загрузит указанную языковую модель.

import stanza
stanza.download(‘ru’) 

Далее инициируем нейронный конвейер (Pipeline) с указанием языка (‘ru’)

nlp = stanza.Pipeline('ru')

Теперь решим задачу извлечения ФИО клиента, а также локации, указанной в тексте первого предложения сообщения. Для этого передаём на конвейер текст, после чего он возвращает обработанный документ. Документ в свою очередь состоит из предложений (sentences), в которых можно выбрать сущности (entities). У каждой выделенной сущности будет ряд свойств — text, type (в нашем случае это значения PER и LOC),  start_char (позиция первого  символа текста сущности в  исходном тексте),  end_char (позиция последнего символа в исходном тексте).

import stanza
nlp = stanza.Pipeline('ru') 
txt = 'Иван Иванович Иванов из г. Иваново оставил положительный отзыв. Офис продаж на пер. Кузнечный 123'
doc = nlp(txt)
for ent in doc.sentences[0].entities:
    if (ent.type in ('PER', 'LOC')):
        print (ent.text,' ',ent.type)

Результат будет следующим:

Иван Иванович Иванов   PER
Иваново   LOC

Попробуем выделить сущности из англоязычного текста — предложения, содержащего информацию об авиарейсе. Для этого применим метод download(‘en’), который загрузит модель для английского языка. 

import stanza
stanza.download('en') 
nlp = stanza.Pipeline('en')
txt = 'flight Moscow London January 1, 2020.'
doc = nlp(txt)
for sent in doc.sentences: 
	for ent in sent.entities:
		print (ent.text,' ',ent.type)

Результат будет следующим:

Moscow   GPE
London   GPE
January 1, 2020   DATE

В результате мы видим две сущности с типами GPE – Moscow и London, а также сущность с типом DATE, соответствующая дате.

Stanza – это набор мощных и инструментов, выделяющийся простотой в освоении. Наиболее яркой особенностью является так же широкая мультиязычность, что делает предпочтительным использование данного инструмента в проектах, где необходимо автоматизировать анализ текстов на разных языках.