Pymorphy2: морфологический анализатор для Python¶
Pymorphy2 — библиотека для морфологического анализа русского и украинского языков на языке Python, распространяемая под свободной лицензией MIT. Она выполняет приведение словоформ к нормальной форме (лемматизацию), определяет грамматические характеристики слова (часть речи, род, число, падеж и другие) и осуществляет генерацию словоформ по заданным грамматическим признакам. Библиотека ориентирована на высокую скорость работы и низкое потребление памяти, что достигается за счёт использования предварительно скомпилированных словарей и структуры данных на основе конечных автоматов.
¶История и происхождение
Проект был создан в 2013 году российским разработчиком Михаилом Коробовым как развитие более ранней библиотеки pymorphy, написанной на чистом Python. Основным отличием Pymorphy2 стало использование словарей, скомпилированных в формат DAWG (Directed Acyclic Word Graph — направленный ациклический граф слов), что позволило значительно сократить объём оперативной памяти и ускорить анализ. Словарная база основана на открытом словаре OpenCorpora, который содержит более 380 тысяч лемм русского языка. В 2015 году была добавлена поддержка украинского языка.
¶Устройство и принцип работы
¶Архитектура
Pymorphy2 состоит из двух ключевых компонентов: анализатора (класс MorphAnalyzer) и словаря. Словарь загружается в память в виде DAWG-структуры, где каждому слову сопоставлен набор возможных грамматических разборов (парадигм). Для лемматизации используется поиск по префиксам и суффиксам, а также правила словоизменения, хранящиеся в словаре.
¶Основные функции
Библиотека предоставляет четыре базовые операции:
- Анализ (
parse) — возвращает список всех возможных разборов слова с учётом контекста, включая нормальную форму и грамматические теги. - Лемматизация (
normalize) — приведение словоформы к начальной форме (например, «красивые» → «красивый»). - Синтез (
inflect) — генерация словоформы по заданным грамматическим характеристикам (например, постановка слова в родительный падеж). - Склонение по падежам (
decline) — частный случай синтеза, возвращающий все падежные формы.
Грамматические признаки кодируются в виде тегов стандарта OpenCorpora (например, NOUN, anim, femn, sing, nomn — имя существительное, одушевлённое, женский род, единственное число, именительный падеж).
¶Характеристики и производительность
Pymorphy2 отличается высокой скоростью анализа: в среднем обработка одного слова занимает порядка 1–5 микросекунд на современных процессорах. Потребление оперативной памяти при загрузке словаря русского языка составляет около 100–150 мегабайт, что делает библиотеку пригодной для использования в веб-сервисах и пакетной обработке текстов. Для сравнения, более поздняя библиотека Pymorphy3, выпущенная в 2021 году, предлагает улучшенную точность за счёт обновлённых словарей, но имеет схожую архитектуру.
¶Применение
Pymorphy2 является одной из наиболее распространённых библиотек морфологического анализа в русскоязычном сегменте разработки на Python. Она используется в следующих областях:
- Обработка естественного языка (NLP): предобработка текстов для поисковых систем, чат-ботов и систем машинного перевода.
- Информационный поиск: нормализация словоформ при индексации документов и поисковых запросах.
- Анализ тональности и извлечение информации: определение грамматических характеристик для последующего синтаксического анализа.
- Образовательные проекты: обучение студентов основам компьютерной лингвистики.
¶Ограничения
К недостаткам библиотеки относят:
- Отсутствие учёта контекста — при анализе омонимов (например, «печь» как существительное и глагол) возвращаются все возможные варианты, и выбор правильного требует дополнительных алгоритмов.
- Устаревший словарь — база OpenCorpora не пополняется активно, из-за чего неологизмы и редкие слова могут не распознаваться.
- Отсутствие поддержки словообразования — библиотека не строит словообразовательные цепочки и не определяет морфемный состав слова.
¶См. также
Среди альтернативных инструментов морфологического анализа для русского языка выделяются библиотеки pymystem3 (обёртка над Яндекс.Спиллер), natasha (нейросетевой анализатор) и spacy с русской моделью.
¶Источники
- Официальная документация Pymorphy2 на Read the Docs.
- Репозиторий проекта на GitHub (KMK-Online/pymorphy2).
- Описание словаря OpenCorpora на официальном сайте проекта.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →

