Для решения задач обработки текстов на естественном языке на сегодняшний день существует множество библиотек для python. В данной статье обратимся к библиотеке Stanza от StanfordNLPGroup, основанной на PyTorch. Т.к. анализ текста является важной NLP-задачей, рассмотрим основные методы, реализованные в данной библиотеке.
Для установки библиотеки используем команду pip install stanza.
Для работы с русскоязычным текстом скачиваем соответствующую модель:
Теперь рассмотрим различные этапы анализа (предобработки) текстовых данных.
1. Токенизация.
Разобьём текст на предложения (sentences) и предложения на токены (tokens)
Получаем следующий список предложений и токенов:
2. POS-tagging
Теперь проведём пример с частеречной разметкой (part of speech tagging). При инициализации Pipeline в параметр processors добавляем значение ‘pos’. В качестве результата выводим соответствующие частям речи значения (тэги) в формате universalPOS (upos), а так же дополнительные лексические и грамматические свойства в формате universalmorphologicalfeatures (UFeats)
Результат будет следующим:
3. Лемматизация.
Для получения нормальных словарных форм слов, необходимо при инициализации Pipeline в параметр processors добавить значение ‘lemma’. И в результат выводим свойство lemma каждого слова (word).
Результатом выполнения кода будет:
4. Анализ зависимостей.
По аналогии с предыдущими пунктами добавляем в параметр processors значение ‘depparse’ при инициализации Pipeline. Обработчик depparse строит дерево зависимостей между словами предложений.
В результате видим список с зависимостями — каждому слову сопоставляется вершина и тип синтаксического отношения (deprel) в формате Universal Dependencies:
В данной статье мы рассмотрели инструментарий библиотеки Stanza по анализу (предобработке) текстовых данных.
С учетом мультиязычности данный проект может составить серьёзную конкуренцию другим NLP-библиотекам на python.