Перейти к содержанию

ruMorph

ruMorph

ruMorph - морфологический анализатор русского языка: ядро на Rust и API для Python. Для словоформы анализатор находит по словарю OpenCorpora варианты разбора - начальную форму (лемму), часть речи и признаки Universal Dependencies - упорядочивает их по вероятности и строит формы слова.

Ранняя версия

До 1.0 API может меняться между версиями 0.x, изменения описываются в заметках к выпускам.

Возможности

  • Разбор


    Лемма, часть речи и признаки UD, вероятность разбора; списки слов и лемматизация без GIL

    Анализатор

  • Universal Dependencies


    Части речи, признаки и леммы в соглашениях SynTagRus; числа, знаки и латиница по правилам, незнакомые слова - по окончанию

    Разбор словоформы

  • Словоизменение


    Формы лексемы, форма по признакам UD, согласование с количеством

    Словоизменение

  • Переход с pymorphy


    Соответствие вызовов pymorphy2 и pymorphy3, частей речи и граммем

    Переход с pymorphy

  • Скорость и память


    Разбор, лемматизация и словоизменение в сравнении с pymorphy3, загрузка словаря и память

    Скорость и память

  • Исключения


    Встроенные исключения Python и FormNotFoundError для отсутствующих форм

    Исключения

Установка

Требуется Python 3.11 или новее.

pip install rumorph

Готовые колеса и сборка из исходников описаны на странице Установка.

Быстрый старт

from rumorph import Analyzer

morph = Analyzer()
morph.lemmatize(["Мы", "стали", "друзьями"])
[(a.lemma, a.pos, a.feats.get("Case"), round(a.prob, 3)) for a in morph.analyze("стали")][:2]
cat = morph.analyze("кошка")[0]
cat.inflect(Case="Gen", Number="Plur"), morph.analyze("рубль")[0].agree(5)
['мы', 'стать', 'друг']
[('стать', 'VERB', None, 0.975), ('сталь', 'NOUN', 'Gen', 0.011)]
('кошек', 'рублей')
Структура проекта
  • crates/rumorph - ядро анализатора на Rust: формат словаря, сборка, разбор и словоизменение
  • crates/rumorph-build - сборка словаря из выгрузки pymorphy3-dicts-ru и перевод тегов OpenCorpora в UD
  • crates/rumorph-py - модуль Python rumorph._rumorph на PyO3
  • python/rumorph - пакет Python
  • scripts - выгрузка словаря pymorphy3-dicts-ru
  • docs - документация MkDocs на русском и английском
  • tests - тесты пакета Python