Открыть сервис

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 →