Время прочтения: 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 – это набор мощных и инструментов, выделяющийся простотой в освоении. Наиболее яркой особенностью является так же широкая мультиязычность, что делает предпочтительным использование данного инструмента в проектах, где необходимо автоматизировать анализ текстов на разных языках.