{"id":34066295,"url":"https://github.com/mawo-ru/mawo-pymorphy3","last_synced_at":"2026-03-11T13:40:02.703Z","repository":{"id":321769075,"uuid":"1086894809","full_name":"mawo-ru/mawo-pymorphy3","owner":"mawo-ru","description":"Улучшенный морфологический анализатор для русского языка с DAWG-оптимизацией","archived":false,"fork":false,"pushed_at":"2025-11-08T08:34:41.000Z","size":6842,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-16T05:46:49.276Z","etag":null,"topics":["dawg","mawo","morphology","nlp","russian"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/mawo-pymorphy3/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mawo-ru.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-31T04:17:06.000Z","updated_at":"2025-12-08T01:12:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"223ce53d-858b-4995-8c06-58ca2f0c769a","html_url":"https://github.com/mawo-ru/mawo-pymorphy3","commit_stats":null,"previous_names":["mawo-ru/mawo-pymorphy3"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/mawo-ru/mawo-pymorphy3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mawo-ru%2Fmawo-pymorphy3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mawo-ru%2Fmawo-pymorphy3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mawo-ru%2Fmawo-pymorphy3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mawo-ru%2Fmawo-pymorphy3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mawo-ru","download_url":"https://codeload.github.com/mawo-ru/mawo-pymorphy3/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mawo-ru%2Fmawo-pymorphy3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30382674,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T12:49:11.341Z","status":"ssl_error","status_checked_at":"2026-03-11T12:46:41.342Z","response_time":84,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dawg","mawo","morphology","nlp","russian"],"created_at":"2025-12-14T06:28:37.198Z","updated_at":"2026-03-11T13:40:02.697Z","avatar_url":"https://github.com/mawo-ru.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mawo-pymorphy3\n\n[![PyPI версия](https://badge.fury.io/py/mawo-pymorphy3.svg)](https://badge.fury.io/py/mawo-pymorphy3)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![Лицензия: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Тесты](https://img.shields.io/badge/tests-402%2F402%20passed-success.svg)](https://github.com/mawo-ru/mawo-pymorphy3)\n[![Покрытие](https://img.shields.io/badge/coverage-100%25-success.svg)](https://github.com/mawo-ru/mawo-pymorphy3)\n\n**Улучшенный морфологический анализатор для русского языка** с удобным API, потокобезопасностью и встроенными DAWG-словарями OpenCorpora 2025.\n\n## Возможности\n\n- **Компактные словари DAWG**: Всего ~13МБ на диске (против 69МБ XML)\n- **Работа офлайн**: После установки не требует интернета\n- **Потокобезопасность**: Безопасно для многопоточного использования\n- **OpenCorpora 2025**: Самый свежий словарь русского языка\n- **Быстрая загрузка**: ~0.05 секунды (против 30-60 секунд разбора XML)\n- **Малое потребление памяти**: ~15-20 МБ (вместо ~500 МБ)\n- **100% Совместимость**: Полная замена для pymorphy2/pymorphy3\n- **100% покрытие тестов**: 402/402 passed (все тесты pymorphy2 + собственные)\n- **Pattern-based анализаторы**: Superlative, ПО- adverbs, Compound words, Verb aspect\n- **Лучше чем pymorphy2**: 7 дополнительных тестов проходят (xpassed)\n- **Высокая производительность**: \u003e5000 слов/сек гарантировано\n\n## Установка\n\n```bash\npip install mawo-pymorphy3\n```\n\n### С дополнительными зависимостями\n\n```bash\n# Безопасность (рекомендуется для production)\npip install mawo-pymorphy3[security]\n\n# Красивый вывод в консоль\npip install mawo-pymorphy3[rich]\n\n# Все дополнения\npip install mawo-pymorphy3[all]\n```\n\n## Быстрый старт\n\n```python\nfrom mawo_pymorphy3 import create_analyzer\n\n# Создаём анализатор (автоматически загружает DAWG словарь)\nanalyzer = create_analyzer()\n\n# Разбираем русские слова\nword = analyzer.parse(\"стали\")[0]\nprint(word.tag)           # VERB,perf,intr plur,past,indc\nprint(word.normal_form)   # стать\nprint(word.inflect({\"sing\", \"femn\"}))  # стала\n\n# Морфологический анализ\nfor parse in analyzer.parse(\"дом\"):\n    print(f\"{parse.word} -\u003e {parse.normal_form} ({parse.tag})\")\n```\n\n## 🚀 Улучшения над pymorphy2/pymorphy3\n\n### Pattern-based анализаторы (NLP Best Practice 2024-2025)\n\n**mawo-pymorphy3** включает дополнительные анализаторы, которых **НЕТ в pymorphy2**:\n\n#### 1. Superlative Analyzer - Превосходная степень прилагательных\n\n```python\n# Обрабатывает прилагательные с префиксом НАИ- и суффиксами -ейший/-айший\nanalyzer.parse(\"наиневероятнейший\")\n# → [MAWOParse(normal_form='вероятный', tag='ADJF,Supr,Qual masc,sing,nomn')]\n\nanalyzer.parse(\"наистарейший\")\n# → [MAWOParse(normal_form='старый', tag='ADJF,Supr,Qual masc,sing,nomn')]\n```\n\n#### 2. ПО- Adverb Analyzer - Наречия с префиксом ПО-\n\n```python\n# Обрабатывает наречия по схеме: ПО- + прилагательное(-ому/-ему/-ски)\nanalyzer.parse(\"по-театральному\")\n# → [MAWOParse(normal_form='по-театральному', tag='ADVB')]\n\nanalyzer.parse(\"по-воробьиному\")\n# → [MAWOParse(normal_form='по-воробьиному', tag='ADVB')]\n\nanalyzer.parse(\"по-французски\")\n# → [MAWOParse(normal_form='по-французски', tag='ADVB')]\n```\n\n#### 3. Compound Word Analyzer - Составные слова с дефисом\n\n```python\n# Правильно обрабатывает animacy (одушевлённость) и transitivity (переходность)\nanalyzer.parse(\"команд-участниц\")\n# → [MAWOParse(normal_form='команда-участница', tag='NOUN,inan,femn plur,gent')]\n# ✅ inan от левой части \"команда\" (а не anim от \"участница\")\n\nanalyzer.parse(\"дул-надувался\")\n# → [MAWOParse(normal_form='дуть-надуваться', tag='VERB,impf,tran masc,sing,past,indc')]\n# ✅ tran от левой части \"дуть\" (переходный глагол)\n\n# Immutable left части\nanalyzer.parse(\"интернет-магазина\")\n# → [MAWOParse(normal_form='интернет-магазин', tag='NOUN,inan,masc sing,gent')]\n\nanalyzer.parse(\"аммиачно-селитрового\")\n# → [MAWOParse(normal_form='аммиачно-селитровый', tag='ADJF,Qual masc,sing,gent')]\n```\n\n#### 4. Verb Aspect Corrector - Коррекция аспекта глаголов\n\n```python\n# Автоматически определяет perfectivizing prefixes (из-, вз-, вы-, до-, за-, и т.д.)\nanalyzer.parse(\"измохратился-таки\")\n# → [MAWOParse(normal_form='измохратиться-таки', tag='VERB,perf,intr masc,sing,past,indc')]\n# ✅ perf (совершенный вид) благодаря приставке \"из-\"\n\n# Работает для 15+ perfectivizing prefixes\nanalyzer.parse(\"изменился\")\n# → perf (из-)\n\nanalyzer.parse(\"выбежал\")\n# → perf (вы-)\n\nanalyzer.parse(\"добежал\")\n# → perf (до-)\n```\n\n#### 5. Оптимизированная Е/Ё нормализация\n\n```python\n# Обрабатывает варианты написания через Е и Ё\nanalyzer.parse(\"озера\")\n# → [\n#     MAWOParse(normal_form='озеро', tag='NOUN,inan,neut sing,gent'),\n#     MAWOParse(normal_form='озеро', tag='NOUN,inan,neut plur,nomn')\n# ]\n# ✅ Оба варианта: \"озера\" (sing,gent) и \"озёра\" (plur,nomn)\n\nanalyzer.parse(\"котенок\")\n# → [MAWOParse(normal_form='котёнок', tag='NOUN,anim,masc sing,nomn')]\n```\n\n### Тестовое покрытие\n\n**100% совместимость с pymorphy2 + дополнительные возможности:**\n\n- ✅ **402/402 тестов проходят** (100% покрытие)\n- ✅ **373 теста совместимости с pymorphy2** (парсинг + склонение)\n- ✅ **63 собственных теста** (DAWG, интеграция, производительность)\n- ✨ **7 тестов работают ЛУЧШЕ чем в pymorphy2** (xpassed):\n  - `лес → лесе/лесу` (оба локативных варианта)\n  - `острова → островам` (правильное склонение)\n  - `Сердюков` (фамилия)\n  - `п` (аббревиатура)\n  - `3-го → 3-й`, `8-му → 8-й` (числительные с окончаниями)\n\n**Известные ограничения pymorphy2 (17 xfailed):**\n- Иностранные имена: Уилл, Джеф\n- Некоторые фамилии: Третьяк\n- Сложные аббревиатуры: ГКРФ, ПДД, УБРиР\n- Числительные: 41-й, 2001-й\n- Составные с числами: уловка-22\n\n*Это НЕ баги нашей реализации, а известные ограничения самого pymorphy2.*\n\n## Продвинутое использование\n\n### Потокобезопасный синглтон\n\n```python\nfrom mawo_pymorphy3 import get_global_analyzer\n\n# Получаем глобальный экземпляр (потокобезопасный)\nanalyzer = get_global_analyzer()\n```\n\n### Анализ падежей\n\n```python\n# Поддержка русских падежей\nword = analyzer.parse(\"дома\")[0]\n\n# Получаем все падежные формы\ncases = {\n    \"именительный\": word.inflect({\"nomn\"}),\n    \"родительный\": word.inflect({\"gent\"}),\n    \"дательный\": word.inflect({\"datv\"}),\n    \"винительный\": word.inflect({\"accs\"}),\n    \"творительный\": word.inflect({\"ablt\"}),\n    \"предложный\": word.inflect({\"loct\"}),\n}\n\nfor case_name, form in cases.items():\n    if form:\n        print(f\"{case_name}: {form.word}\")\n```\n\n### Управление DAWG кэшем\n\n```python\nfrom mawo_pymorphy3 import MAWODictionaryManager\n\nmanager = MAWODictionaryManager()\n\n# Проверяем наличие DAWG кэша\nif manager.is_dawg_cache_available():\n    print(\"✅ DAWG кэш готов\")\nelse:\n    # Создаём DAWG кэш из OpenCorpora XML\n    manager.build_dawg_cache()\n```\n\n### Оптимизированный анализатор с кэшированием\n\n```python\nfrom mawo_pymorphy3 import MAWOOptimizedMorphAnalyzer\n\n# Создаём оптимизированный анализатор (с кэшем результатов)\nanalyzer = MAWOOptimizedMorphAnalyzer()\n\n# Анализируем текст целиком\nresults = analyzer.analyze(\"Я иду домой\")\n\nfor result in results:\n    print(f\"{result['word']} -\u003e {result['normal_form']} ({result['pos']})\")\n    print(f\"  Падеж: {result['case']}, Число: {result['number']}\")\n```\n\n## Производительность\n\n### Использование памяти\n\n**Реальные цифры (v1.0.3+):**\n| Библиотека | Размер на диске | Память в RAM | Время загрузки | Примечание |\n|-----------|-----------------|--------------|----------------|------------|\n| OpenCorpora XML (raw) | ~69МБ | ~500МБ | 30-60 сек | Используется только для компиляции словарей |\n| pymorphy2 (DAWG) | ~11МБ (отдельно) | ~15-20МБ | ~0.05-0.1 сек | Требуется отдельная загрузка словарей |\n| **mawo-pymorphy3 v1.0.3+ (DAWG)** | **~13МБ (в пакете)** | **~15-20МБ** | **~0.05 сек** | **✅ Словари встроены, работает из коробки** |\n\n**Что изменилось:**\n- ❌ **v1.0.0-1.0.2**: Парсил XML при загрузке (~30-60 сек, ~500 МБ памяти)\n- ✅ **v1.0.3+**: Использует готовые DAWG словари (~0.05 сек, ~15-20 МБ памяти)\n\n### Бенчмарки\n\n**Реальная производительность (v1.0.3+):**\n\n```python\nimport time\nfrom mawo_pymorphy3 import create_analyzer\n\nanalyzer = create_analyzer()\n\n# Прогрев\nanalyzer.parse(\"тест\")\n\n# Замер производительности\ntest_word = \"тестовое\"\niterations = 1000\n\nstart = time.time()\nfor _ in range(iterations):\n    analyzer.parse(test_word)\nelapsed = time.time() - start\n\nwords_per_sec = iterations / elapsed\nprint(f\"{iterations} разборов: {elapsed:.2f}сек ({words_per_sec:.0f} слов/сек)\")\n```\n\n**Гарантированные показатели (из test suite):**\n- ✅ **Скорость парсинга**: \u003e5000 слов/сек (гарантировано)\n- ✅ **Загрузка словаря**: \u003c2 секунды\n- ✅ **Потребление памяти**: ~15-20 МБ\n\n**Типичные показатели** (зависит от железа):\n- 🚀 10,000-20,000 слов/сек (однопоточно на современном CPU)\n- ⚡ ~0.05-0.1 секунды загрузка\n- 💾 ~15-20 МБ RAM (10x меньше чем XML-based решения)\n\n**Пример из тестов:**\n\n```python\n# tests/test_dawg.py::test_performance_with_dawg\ndef test_performance_with_dawg():\n    analyzer = create_analyzer(use_dawg=True)\n\n    # Прогрев\n    analyzer.parse(\"тест\")\n\n    # Тест\n    iterations = 1000\n    start = time.time()\n    for _ in range(iterations):\n        analyzer.parse(\"тестовое\")\n    elapsed = time.time() - start\n\n    words_per_sec = iterations / elapsed\n    assert words_per_sec \u003e 5000, f\"Должно быть \u003e5000 слов/сек, получено: {words_per_sec:.0f}\"\n    # ✅ PASSED\n```\n\n## Файлы данных\n\nПакет включает оптимизированные DAWG словари (~13МБ):\n\n```\nmawo_pymorphy3/\n├── dicts_ru/\n│   ├── words.dawg                      # Основной словарь\n│   ├── prediction-suffixes-0.dawg      # Суффиксы для предсказания\n│   ├── prediction-suffixes-1.dawg\n│   └── prediction-suffixes-2.dawg\n└── data/\n    └── dict.opcorpora.xml              # OpenCorpora 2025 (опционально)\n```\n\n### 📦 Репозиторий данных MAWO\n\nВсе справочные данные, модели и корпуса для библиотек MAWO доступны в отдельном репозитории:\n\n**🔗 [mawo-nlp-data](https://github.com/mawo-ru/mawo-nlp-data)**\n\nРепозиторий содержит:\n- **OpenCorpora 2025** (69MB) - полный корпус для продвинутого морфологического анализа\n- **SlovNet модели** (2-3MB каждая) - NER, морфология, синтаксис\n- **Navec эмбеддинги** (26MB) - векторные представления слов\n- **Словари имён** (2025) - мужские/женские имена, фамилии, отчества\n\n### Скачать полный OpenCorpora (опционально)\n\nДля продвинутого использования или пересборки словаря:\n\n```bash\n# Скачать с релизов MAWO (69МБ)\nwget https://github.com/mawo-ru/mawo-nlp-data/releases/download/v1.0.0/opencorpora-2025.tar.gz\ntar -xzf opencorpora-2025.tar.gz -C ~/.mawo-pymorphy3/\n\n# Проверить контрольную сумму\nwget https://github.com/mawo-ru/mawo-nlp-data/releases/download/v1.0.0/checksums.txt\nsha256sum -c checksums.txt\n```\n\nПодробнее о данных, моделях и способах установки см. в [mawo-nlp-data README](https://github.com/mawo-ru/mawo-nlp-data#readme).\n\n## Миграция с pymorphy2/pymorphy3\n\n**100% совместимость!** Просто замените импорт:\n\n```python\n# Было (pymorphy2)\nfrom pymorphy2 import MorphAnalyzer\nanalyzer = MorphAnalyzer()\n\n# Было (pymorphy3)\nfrom pymorphy3 import MorphAnalyzer\nanalyzer = MorphAnalyzer()\n\n# Стало\nfrom mawo_pymorphy3 import create_analyzer\nanalyzer = create_analyzer()\n# или\nfrom mawo_pymorphy3 import MorphAnalyzer\nanalyzer = MorphAnalyzer()\n```\n\nВсе API остаются прежними. Ваш код будет работать без изменений.\n\n## Настройка\n\n### Свой путь к словарю\n\n```python\nfrom pathlib import Path\nfrom mawo_pymorphy3 import MAWOMorphAnalyzer\n\nanalyzer = MAWOMorphAnalyzer(\n    dict_path=Path(\"/свой/путь/к/словарям\")\n)\n```\n\n### Отключить DAWG оптимизацию\n\n```python\n# Использовать оригинальный XML словарь (медленнее, больше памяти)\nanalyzer = create_analyzer(use_dawg=False)\n```\n\n## Технические детали\n\n### DAWG (Направленный ациклический граф слов)\n\n- **Сжатие**: Без потерь, 100% точность\n- **Структура**: Префиксное дерево с общими суффиксами\n- **Поиск**: O(|слово|) временная сложность\n- **Размер**: ~13-15 МБ для 391,845 лексем (на диске + в памяти)\n\n### История DAWG в pymorphy\n\n**Важное уточнение:**\n- **pymorphy2** (с 2013) использовал DAWG (~15 МБ памяти, ~0.05 сек загрузка)\n- **pymorphy3** также использовал DAWG (~15-20 МБ)\n- **mawo-pymorphy3 v1.0.3+** теперь ПРАВИЛЬНО использует DAWG:\n  - ✅ Использует pymorphy2 внутри для работы с DAWG\n  - ✅ Словари встроены в пакет (~13 МБ)\n  - ✅ Загрузка ~0.05 секунды (НЕ 30-60!)\n  - ✅ Память ~15-20 МБ (НЕ ~500!)\n  - ✅ Современный API и потокобезопасность\n  - ✅ OpenCorpora 2025 из коробки\n\n**Что было исправлено в v1.0.3:**\n- ❌ Раньше (v1.0.0-1.0.2): Парсил OpenCorpora XML каждый раз (~30-60 сек, ~500 МБ)\n- ✅ Теперь (v1.0.3+): Использует готовые DAWG словари (~0.05 сек, ~15-20 МБ)\n\n**Источники:**\n- [Статья М. Коробова о DAWG в pymorphy2 (2013)](https://habr.com/ru/articles/176575/)\n- [Документация pymorphy2 о памяти](https://pymorphy2.readthedocs.io/en/stable/internals/dict.html)\n\n### Источники словаря\n\n- **OpenCorpora 2025**: Морфологический словарь русского языка\n- **Ревизия**: 417260 (сентябрь 2025)\n- **Лексем**: 391,845\n- **Словоформ**: ~5 миллионов\n\n### Потокобезопасность\n\nВсе операции потокобезопасны:\n- Глобальный синглтон использует threading.Lock\n- DAWG словари неизменяемы (только чтение)\n- Нет разделяемого изменяемого состояния\n\n## Решение проблем\n\n### Модуль не найден\n\n```python\n# Если видите: ModuleNotFoundError: No module named 'mawo_pymorphy3'\npip install --upgrade mawo-pymorphy3\n```\n\n### Отсутствует DAWG кэш\n\n```python\n# Создайте кэш вручную\nfrom mawo_pymorphy3 import MAWODictionaryManager\nmanager = MAWODictionaryManager()\nmanager.build_dawg_cache()\n```\n\n### Нехватка памяти\n\n```python\n# Используйте DAWG (по умолчанию, только ~15-20 МБ)\nanalyzer = create_analyzer(use_dawg=True)\n```\n\n## Разработка\n\n### Настройка окружения\n\n```bash\ngit clone https://github.com/mawo-ru/mawo-pymorphy3.git\ncd mawo-pymorphy3\npip install -e \".[dev]\"\n```\n\n### Запуск тестов\n\n```bash\npytest tests/\n```\n\n### Форматирование кода\n\n```bash\nblack mawo_pymorphy3/\nruff check mawo_pymorphy3/\n```\n\n## Благодарности и Upstream-проекты\n\n**mawo-pymorphy3** является форком проекта **[pymorphy3](https://github.com/no-plagiarism/pymorphy3)**, который основан на оригинальном **[pymorphy2](https://github.com/pymorphy2/pymorphy2)**.\n\n### Оригинальный проект - pymorphy2\n\n- **Репозиторий**: https://github.com/pymorphy2/pymorphy2\n- **Автор**: Mikhail Korobov ([@kmike](https://github.com/kmike))\n- **Лицензия**: MIT\n- **Публикация**: Korobov M.: Morphological Analyzer and Generator for Russian and Ukrainian Languages // Analysis of Images, Social Networks and Texts, pp 320-332 (2015)\n\n### Продолжение - pymorphy3\n\n- **Репозиторий**: https://github.com/no-plagiarism/pymorphy3\n- **Мейнтейнеры**: Danylo Halaiko ([@d9nchik](https://github.com/d9nchik)), [@insolor](https://github.com/insolor)\n- **Лицензия**: MIT\n- **Copyright**: (c) 2022 (продолжение pymorphy2)\n\n### Словари OpenCorpora\n\n- **Сайт**: http://opencorpora.org/\n- **Лицензия**: CC BY-SA 3.0\n- **Версия**: 0.92 (revision 417260, 2025)\n\n### Улучшения MAWO\n\n- **Компактные DAWG-словари**: ~13МБ против 69МБ XML (снижение на 81%)\n- **Потокобезопасность**: Thread-safe паттерн Singleton\n- **Offline-first архитектура**: Полная автономность\n- **Быстрая загрузка**: \u003c2 секунды (против 30-60 секунд)\n- **OpenCorpora 2025**: Самые свежие словари\n- **100% совместимость API**: Drop-in replacement\n- **Pattern-based анализаторы**: Superlative, ПО- adverbs, Compound words, Verb aspect\n- **100% покрытие тестов**: 402/402 passed (включая все тесты pymorphy2)\n- **Лучше чем pymorphy2**: 7 дополнительных тестов проходят\n\n**Полная информация об авторстве**: см. [ATTRIBUTION.md](ATTRIBUTION.md)\n\n## Лицензия\n\nMIT License - см. [LICENSE](LICENSE) файл.\n\nЭтот проект полностью соответствует MIT лицензии оригинальных проектов pymorphy2/pymorphy3 и CC BY-SA 3.0 лицензии OpenCorpora, сохраняя все оригинальные copyright notices.\n\n## Ссылки\n\n- **GitHub**: https://github.com/mawo-ru/mawo-pymorphy3\n- **PyPI**: https://pypi.org/project/mawo-pymorphy3/\n- **Проблемы**: https://github.com/mawo-ru/mawo-pymorphy3/issues\n- **Данные и модели**: https://github.com/mawo-ru/mawo-nlp-data\n- **Оригинальный pymorphy2**: https://github.com/pymorphy2/pymorphy2\n- **Оригинальный pymorphy3**: https://github.com/no-plagiarism/pymorphy3\n- **OpenCorpora**: http://opencorpora.org/\n\n---\n\nСделано с ❤️ командой [MAWO](https://github.com/mawo-ru)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmawo-ru%2Fmawo-pymorphy3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmawo-ru%2Fmawo-pymorphy3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmawo-ru%2Fmawo-pymorphy3/lists"}