ruMorph¶
ruMorph - морфологический анализатор русского языка: ядро на Rust и API для Python. Для словоформы анализатор находит по словарю OpenCorpora варианты разбора - начальную форму (лемму), часть речи и признаки Universal Dependencies - упорядочивает их по вероятности и строит формы слова.
Ранняя версия
До 1.0 API может меняться между версиями 0.x, изменения описываются в заметках к выпускам.
Возможности¶
-
Разбор
Лемма, часть речи и признаки UD, вероятность разбора; списки слов и лемматизация без GIL
-
Universal Dependencies
Части речи, признаки и леммы в соглашениях SynTagRus; числа, знаки и латиница по правилам, незнакомые слова - по окончанию
-
Словоизменение
Формы лексемы, форма по признакам UD, согласование с количеством
-
Переход с pymorphy
Соответствие вызовов pymorphy2 и pymorphy3, частей речи и граммем
-
Скорость и память
Разбор, лемматизация и словоизменение в сравнении с 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