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