ΠΠ°Π½Π½ΡΠ΅ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° MAWO
ΠΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΊΠΎΡΠΏΡΡΠ° Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ MAWO:
- mawo-pymorphy3 - ΠΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ
- mawo-slovnet - NER, ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡ, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
- mawo-natasha - Π‘Π΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·
- mawo-razdel - Π’ΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
ΠΠ°Π½Π½ΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· GitHub Releases Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
| Π€Π°ΠΉΠ» | Π Π°Π·ΠΌΠ΅Ρ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² |
|---|---|---|---|
| natasha-data-v1.0.0.tar.gz | 34M | Embeddings + ΡΠ»ΠΎΠ²Π°ΡΠΈ ΠΈΠΌΡΠ½ + ΠΌΠΎΠ΄Π΅Π»ΠΈ | mawo-natasha |
| slovnet_ner_news_v1.tar.neural.gz | 2.2M | NER ΠΌΠΎΠ΄Π΅Π»Ρ | mawo-slovnet, mawo-natasha |
| slovnet_morph_news_v1.tar.neural.gz | 2.4M | ΠΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ | mawo-slovnet, mawo-natasha |
| slovnet_syntax_news_v1.tar.neural.gz | 2.5M | Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ | mawo-slovnet, mawo-natasha |
| opencorpora-2025.tar.gz | 69M | OpenCorpora ΠΊΠΎΡΠΏΡΡ (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ) | mawo-pymorphy3 |
| checksums.txt | <1K | SHA256 Ρ Π΅ΡΠΈ Π²ΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² | - |
ΠΠ±ΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ: ~110M
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ MAWO Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ:
pip install mawo-natasha
# ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΠ°ΡΠ°Π΅Ρ natasha-data-v1.0.0.tar.gzΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡ ΠΈΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅:
# ΠΠ»Ρ mawo-natasha
wget https://github.com/mawo-ru/mawo-nlp-data/releases/download/v1.0.0/natasha-data-v1.0.0.tar.gz
tar -xzf natasha-data-v1.0.0.tar.gz -C ~/.mawo-natasha/
# ΠΠ»Ρ mawo-slovnet (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ, ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΠΏΠ°ΠΊΠ΅Ρ)
wget https://github.com/mawo-ru/mawo-nlp-data/releases/download/v1.0.0/slovnet_ner_news_v1.tar.neural.gz
mkdir -p ~/.mawo-slovnet/models/
mv slovnet_ner_news_v1.tar.neural.gz ~/.mawo-slovnet/models/
# ΠΠ»Ρ opencorpora (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ, Π΄Π»Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠΎΠ³ΠΎ ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°)
wget https://github.com/mawo-ru/mawo-nlp-data/releases/download/v1.0.0/opencorpora-2025.tar.gz
tar -xzf opencorpora-2025.tar.gz -C ~/.mawo-pymorphy3/wget https://github.com/mawo-ru/mawo-nlp-data/releases/download/v1.0.0/checksums.txt
sha256sum -c checksums.txtΠ‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅:
embeddings/
navec_news_v1_1B_250K_300d_100q.emb # 26M - Navec ΡΠΌΠ±Π΅Π΄Π΄ΠΈΠ½Π³ΠΈ (250K ΡΠ»ΠΎΠ², 300 ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ)
dictionaries/
first.dict # Π‘Π»ΠΎΠ²Π°ΡΡ ΠΈΠΌΡΠ½
first_male_2025.dict # ΠΡΠΆΡΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°
first_female_2025.dict # ΠΠ΅Π½ΡΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°
first_all_2025.dict # ΠΡΠ΅ ΠΈΠΌΠ΅Π½Π°
maybe_first.dict # ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°
last.dict # Π€Π°ΠΌΠΈΠ»ΠΈΠΈ
last_updated_2025.dict # ΠΠ±Π½ΠΎΠ²Π»ΡΠ½Π½ΡΠ΅ ΡΠ°ΠΌΠΈΠ»ΠΈΠΈ
middle.dict # ΠΡΡΠ΅ΡΡΠ²Π°
models/
slovnet_ner_news_v1.model # NER ΠΌΠΎΠ΄Π΅Π»Ρ
slovnet_morph_news_v1.model # ΠΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡ
slovnet_syntax_news_v1.model # Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ mawo-natasha (ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·, ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΈΠΌΡΠ½).
SHA256: bd5e1b074046175c629eead72a07640ac8606b0c4471a93e05888f1c6c9bfb2d
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅: ΠΠ΅ΠΉΡΠΎΡΠ΅ΡΠ΅Π²ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ SlovNet, ΠΎΠ±ΡΡΠ΅Π½Π½ΡΠ΅ Π½Π° Π½ΠΎΠ²ΠΎΡΡΠ½ΠΎΠΌ ΠΊΠΎΡΠΏΡΡΠ΅:
- slovnet_ner_news_v1 (2.2M) - Π Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ (PER, LOC, ORG)
- slovnet_morph_news_v1 (2.4M) - ΠΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· (POS-ΡΠ΅Π³ΠΈ, ΠΏΠ°Π΄Π΅ΠΆΠΈ, ΡΠΈΡΠ»ΠΎ, ΡΠΎΠ΄)
- slovnet_syntax_news_v1 (2.5M) - Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· (Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ)
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: ΠΠΎΠ΄Π΅Π»ΠΈ ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΠΏΠ°ΠΊΠ΅ΡΡ mawo-slovnet ΠΈ mawo-natasha, Π½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ.
SHA256:
- NER:
b4880fd6d5536097485c985d7b8a11bd593ea83e286554abb3d5a1df1b2b1f0a - Morph:
276c8a3e6534a142e28b3b804cf269f4a8cb85c0c1342c059d17e1e84bb9ed18 - Syntax:
fd214b5424dca70d4a6634abb7a5ab27c1689bb0d49638c19647db18c0375d99
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅:
opencorpora_2025/
opencorpora_annot_2025.xml # 532M (ΡΠΆΠ°ΡΠΎ Π΄ΠΎ 50M) - XML Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ
opencorpora_annot_2025.pkl # 309M (ΡΠΆΠ°ΡΠΎ Π΄ΠΎ 18M) - Pickle Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ
freqrnc2011.csv # 1.8M - Π§Π°ΡΡΠΎΡΡ ΡΠ»ΠΎΠ² Π ΠΠ
freqrnc_readme.txt # 1.4K - ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: ΠΠΎΠ»Π½ΡΠΉ ΠΊΠΎΡΠΏΡΡ OpenCorpora Π΄Π»Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠΎΠ³ΠΎ ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ).
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅:
from mawo_pymorphy3 import MAWOMorphAnalyzer
# ΠΠ°Π·ΠΎΠ²ΡΠΉ Π°Π½Π°Π»ΠΈΠ· (ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±Π΅Π· opencorpora)
m = MAWOMorphAnalyzer()
print(m.parse('ΠΏΡΠΈΠ²Π΅Ρ'))
# Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· Ρ ΠΊΠΎΡΠΏΡΡΠΎΠΌ
m = MAWOMorphAnalyzer(opencorpora_path='~/.mawo-pymorphy3/opencorpora_2025')
print(m.get_corpus_frequency('ΠΏΡΠΈΠ²Π΅Ρ')) # Π§Π°ΡΡΠΎΡΠ° ΡΠ»ΠΎΠ²Π° Π² ΠΊΠΎΡΠΏΡΡΠ΅SHA256: 171a8413b9d02e8eeed99a89958b6ebdb9ca0b91ba1f120085a3663cf8f2c484
ΠΡΠΎΠ΅ΠΊΡ MAWO ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΎΡΠ»ΠΈΡΠ½ΡΡ open-source ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²:
- natasha - NER ΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·
- slovnet - ΠΌΠΎΠ΄Π΅Π»ΠΈ NER, ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°
- razdel - ΡΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
- navec - Π²Π΅ΠΊΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ»ΠΎΠ²
- pymorphy2 - ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ
- pymorphy3 - ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ
- OpenCorpora - ΠΊΠΎΡΠΏΡΡ ΡΡΡΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°
- Π ΠΎΡΡΠΈΠΉΡΠΊΠΈΠΉ Π½Π°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΡΠΏΡΡ - Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΡΠ°ΡΡΠΎΡΠ½ΠΎΡΡΠΈ
ΠΠΎΠ»Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± Π°Π²ΡΠΎΡΡΡΠ²Π΅: ΡΠΌ. ATTRIBUTION.md
- OpenCorpora: CC BY-SA 3.0
- SlovNet ΠΌΠΎΠ΄Π΅Π»ΠΈ: MIT - Copyright (c) Alexander Kukushkin
- Navec ΡΠΌΠ±Π΅Π΄Π΄ΠΈΠ½Π³ΠΈ: MIT - Copyright (c) Alexander Kukushkin
- Π‘Π»ΠΎΠ²Π°ΡΠΈ ΠΈΠΌΡΠ½: MIT - Copyright (c) Alexander Kukushkin
- Pymorphy ΡΠ»ΠΎΠ²Π°ΡΠΈ: MIT - Copyright (c) Mikhail Korobov
ΠΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ MAWO ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ MIT Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΡ copyright notices ΠΈΠ· upstream-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
- Π‘Π»ΠΎΠ²Π°ΡΡ: 250 000 ΡΠ»ΠΎΠ²
- Π Π°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ: 300
- ΠΠ²Π°Π½ΡΠΈΠ·Π°ΡΠΈΡ: 100 ΡΡΠΎΠ²Π½Π΅ΠΉ
- Π€ΠΎΡΠΌΠ°Ρ:
.emb(ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ) - ΠΡΡΠΎΡΠ½ΠΈΠΊ: ΠΠΎΠ²ΠΎΡΡΠ½ΠΎΠΉ ΠΊΠΎΡΠΏΡΡ (1B ΡΠΎΠΊΠ΅Π½ΠΎΠ²)
- ΠΡΠΆΡΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°: ~7 500 ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
- ΠΠ΅Π½ΡΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°: ~8 200 ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
- Π€Π°ΠΌΠΈΠ»ΠΈΠΈ: ~95 000 ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
- ΠΡΡΠ΅ΡΡΠ²Π°: ~2 100 ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
- ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: 2025-09-15
- ΠΠ±ΡΡΠ°ΡΡΠΈΠΉ ΠΊΠΎΡΠΏΡΡ: ΠΠΎΠ²ΠΎΡΡΠΈ (LENTA, RIA, TASS)
- Π’ΠΎΡΠ½ΠΎΡΡΡ NER: F1 = 0.96 (PER), 0.92 (LOC), 0.89 (ORG)
- Π’ΠΎΡΠ½ΠΎΡΡΡ ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΠΈ: 98.2% (POS), 96.7% (ΠΏΠ°Π΄Π΅ΠΆ)
- Π’ΠΎΡΠ½ΠΎΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°: UAS = 94.1%, LAS = 92.3%
- ΠΠ΅ΠΊΡΠ΅ΠΌ: 391 845
- ΠΠ½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ: ~55 000
- Π’ΠΎΠΊΠ΅Π½ΠΎΠ²: ~1 000 000
- ΠΠ΅ΡΡΠΈΡ: 0.92 (revision 417260)
- ΠΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ: 2025-09-15
from mawo_pymorphy3 import MAWOMorphAnalyzer
# ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ DAWG ΡΠ»ΠΎΠ²Π°ΡΠΈ (13M)
m = MAWOMorphAnalyzer()
print(m.parse('ΠΏΡΠΈΠ²Π΅Ρ'))
# [MAWOParse(word='ΠΏΡΠΈΠ²Π΅Ρ', normal_form='ΠΏΡΠΈΠ²Π΅Ρ', tag=OpencorporaTag('INTJ'), score=1.0, methods_stack=(...))]
# ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ OpenCorpora ΠΊΠΎΡΠΏΡΡ (69M)
m_full = MAWOMorphAnalyzer(opencorpora_path='~/.mawo-pymorphy3/opencorpora_2025')from mawo_slovnet import NER, Morph, Syntax
# ΠΠΎΠ΄Π΅Π»ΠΈ ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΠΏΠ°ΠΊΠ΅Ρ (6.9M)
ner = NER()
morph = Morph()
syntax = Syntax()
text = "ΠΠ»Π°Π΄ΠΈΠΌΠΈΡ ΠΡΡΠΈΠ½ Π²ΡΡΡΡΠΏΠΈΠ» Π² ΠΠΎΡΠΊΠ²Π΅"
print(ner(text))
# [Span(start=0, stop=14, type='PER', text='ΠΠ»Π°Π΄ΠΈΠΌΠΈΡ ΠΡΡΠΈΠ½'),
# Span(start=26, stop=32, type='LOC', text='ΠΠΎΡΠΊΠ²Π΅')]from mawo_natasha import Doc
# ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΠ°ΡΠ°Π΅Ρ natasha-data-v1.0.0.tar.gz (34M) ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅
# ΠΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ~/.mawo-natasha/
doc = Doc("ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ Π‘Π΅ΡΠ³Π΅Π΅Π²ΠΈΡ ΠΡΡΠΊΠΈΠ½ ΡΠΎΠ΄ΠΈΠ»ΡΡ Π² ΠΠΎΡΠΊΠ²Π΅ Π² 1799 Π³ΠΎΠ΄Ρ")
print(doc.tokens) # Π’ΠΎΠΊΠ΅Π½Ρ
print(doc.sents) # ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ
print(doc.spans) # ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ
# [Span(start=0, stop=29, type='PER', text='ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ Π‘Π΅ΡΠ³Π΅Π΅Π²ΠΈΡ ΠΡΡΠΊΠΈΠ½'),
# Span(start=41, stop=47, type='LOC', text='ΠΠΎΡΠΊΠ²Π΅')]from mawo_razdel import sentenize, tokenize
# ΠΠΎΡΠΏΡΡΠ° ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΠΏΠ°ΠΊΠ΅Ρ (21M)
text = "ΠΡΠΈΠ²Π΅Ρ! ΠΠ°ΠΊ Π΄Π΅Π»Π°? ΠΡΡ Ρ
ΠΎΡΠΎΡΠΎ."
sents = list(sentenize(text))
print(sents)
# [Substring(start=0, stop=7, text='ΠΡΠΈΠ²Π΅Ρ!'),
# Substring(start=8, stop=17, text='ΠΠ°ΠΊ Π΄Π΅Π»Π°?'),
# Substring(start=18, stop=29, text='ΠΡΡ Ρ
ΠΎΡΠΎΡΠΎ.')]
tokens = list(tokenize(text))
print(tokens)
# [Substring(..., text='ΠΡΠΈΠ²Π΅Ρ'), Substring(..., text='!'), ...]ΠΠΎΠ»Π½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ:
# 1. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅
mkdir -p releases/v1.1.0/
# 2. Π£ΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ
tar -czf releases/v1.1.0/natasha-data-v1.1.0.tar.gz \
embeddings/ dictionaries/ models/
# 3. Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΡΠΌΠΌΡ
cd releases/v1.1.0/
sha256sum *.tar.gz > checksums.txt
# 4. Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ΅Π»ΠΈΠ· Π½Π° GitHub
gh release create v1.1.0 \
--title "MAWO NLP Data v1.1.0" \
--notes "ΠΠ±Π½ΠΎΠ²Π»ΡΠ½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ MAWO" \
*.tar.gz checksums.txt# Π‘ΠΊΠ°ΡΠ°ΡΡ checksums.txt
wget https://github.com/mawo-ru/mawo-nlp-data/releases/download/v1.0.0/checksums.txt
# ΠΡΠΎΠ²Π΅ΡΠΈΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
sha256sum -c checksums.txtΠΡ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΠ΅ΠΌ Π²ΠΊΠ»Π°Π΄ Π² ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π΄Π°Π½Π½ΡΡ MAWO!
- ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»ΠΎΠ²Π°ΡΠΈ ΠΈΠΌΡΠ½ - Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, ΡΠ°ΠΌΠΈΠ»ΠΈΠΈ, ΠΎΡΡΠ΅ΡΡΠ²Π°
- ΠΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΊΠΎΡΠΏΡΡΠ° - Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ
- Π£Π»ΡΡΡΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ - Π΄ΠΎΠΎΠ±ΡΡΠΈΡΡ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄ΠΎΠΌΠ΅Π½Π°Ρ
- ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ - ΡΠ»ΡΡΡΠΈΡΡ ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ
- Fork ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
- Π‘ΠΎΠ·Π΄Π°ΡΡ feature branch (
git checkout -b feature/new-names-dict) - Commit ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (
git commit -am 'ΠΠΎΠ±Π°Π²ΠΈΡΡ 1000 Π½ΠΎΠ²ΡΡ ΠΈΠΌΡΠ½') - Push Π² branch (
git push origin feature/new-names-dict) - Π‘ΠΎΠ·Π΄Π°ΡΡ Pull Request
- GitHub: github.com/mawo-ru
- Issues: github.com/mawo-ru/mawo-nlp-data/issues
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ΅Π»ΠΈΠ· Π΄Π°Π½Π½ΡΡ MAWO
- β Navec ΡΠΌΠ±Π΅Π΄Π΄ΠΈΠ½Π³ΠΈ (250K ΡΠ»ΠΎΠ², 300D)
- β Π‘Π»ΠΎΠ²Π°ΡΠΈ ΠΈΠΌΡΠ½ (113K Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ 2025)
- β SlovNet ΠΌΠΎΠ΄Π΅Π»ΠΈ (NER, ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡ, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ)
- β OpenCorpora ΠΊΠΎΡΠΏΡΡ (391K Π»Π΅ΠΊΡΠ΅ΠΌ)
- β ΠΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΡΠΌΠΌΡ SHA256
ΠΠ±ΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ: 110M (ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ 83.7% ΠΎΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ 881M)