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

Всегда при решении задач NLP необходимыми шагами являются или стемминг, или лемматизация. Данные этапы призваны уменьшить размер корпуса и не допустить «проклятия размерности» при обучении моделей машинного обучения.

Стемминг по сравнению с лемматизацией работает быстрее, но данный метод зачастую не дает приемлемых результатов для русского языка. Лемматизация- более интеллектуальная операция, и требует больше вычислительных ресурсов вычислительной техники, но и она не дает идеальных результатов, поскольку в русском языке достаточно большое количество омонимов и, даже человек затрудняется в идентификации правильного значения данных слов.

На данный момент существует два основных инструмента лемматизации применяемых для анализа русского текста: Pymorphy2 и MyStem. В этой статье мы проведем сравнительный анализ и ответим на вопрос: какой инструмент лучше или же какой инструмент лучше применять для конкретных задач?

Проводить сравнение данных мы будем относительно двух характеристик: качество нормализации слов и скорость работы анализаторов. Для решения данной задачи была использована первая глава книги «Анна Каренина» Льва Толстого и статьи с сайта Meduza.

Данные анализа для литературного текста представлены в таблице ниже.

  Качество (%) Скорость (сек)
MyStem (версия 0.2.0) 87,9 44.36
Pymorphy2 (версия 0.8) 88,5 0.21

Из таблицы анализа видно, что при решении задачи приведения к нормальной форме в литературном тексте как по скорости, так и по качеству нормализации выигрывает Pymorphy2. Особенно выигрыш заметен в скорости работы анализатора Pymorphy2.

Также рассмотрим качество работы анализаторов на новостном ресурсе. Результат анализа на данном источнике представлен ниже.

  Качество (%) Скорость (сек)
MyStem (версия 0.2.0) 84,1 84.71
Pymorphy2 (версия 0.8) 86,8 0.15

Как видно из результатов анализа, Pymorphy2 показывает качество нормализации выше, чем MyStem. Также сохраняется огромный разрыв и по скорости работы.

Таким образом, можно прийти к выводу о том, что для задачи нормализации данных предпочтительнее использовать Pymorphy2 поскольку, несмотря на близкое качество нормализации, скорость работы этого анализатора намного выше. Данный вывод не говорит о том, что Pymorphy2 выигрывает перед MyStem, в других аспектах и при решении задач, не относящихся к нормализации выбор не так однозначен.