ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ! ΠΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠΈΠΊΠ» ΡΡΠ°ΡΠ΅ΠΉ, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΡΡ
ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ
Π·Π°Π΄Π°Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° (Natural Language Processing ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ NLP) ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΡ
Π°Π³Π΅Π½ΡΠΎΠ² (ΡΠ°Ρ-Π±ΠΎΡΠΎΠ²) Ρ ΠΏΠΎΠΌΠΎΡΡΡ open-source Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
Π NLP Π·Π°Π΄Π°ΡΠ°ΠΌ ΠΎΡΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΠΊΡΡΠ°, ΠΏΠ°ΡΡΠΈΠ½Π³ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ
ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ
ΠΎΡΠ΅Ρ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ Π±ΠΎΡΠ° ΡΠΎΠ±Π΅ΡΠ΅Π΄Π½ΠΈΠΊ: Π·Π°ΠΊΠ°Π·Π°ΡΡ ΠΏΠΈΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΡΠΎ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ NLP Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡΡΡΠΈΡΡ REST ΡΠ΅Π²Π΅Ρ Ρ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΡΠ΅Π½Π½ΡΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ NLP, Π³ΠΎΡΠΎΠ²ΡΠΌΠΈ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° DeepPavlov
ΠΠ΄Π΅ΡΡ ΠΈ Π΄Π°Π»Π΅Π΅ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ Linux. ΠΠ»Ρ Windows ΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π°ΡΡ
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Python:
virtualelnv env -p python3.7 source env/bin/activate
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ DeepPavlov Π² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅:
pip install deeppavlov
ΠΠ°ΠΏΡΡΠΊ REST ΡΠ΅ΡΠ²Π΅ΡΠ° Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ DeepPavlov
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· Π·Π°ΠΏΡΡΡΠΈΠΌ ΡΠ΅ΡΠ²Π΅Ρ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ DeepPavlov, Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΡΠ±Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π² DP ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ·:
- ΠΠΎΠ΄Π° Π½Π° Python;
- Π‘ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ β ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ (ΡΠΌΠ±Π΅Π΄Π΄ΠΈΠ½Π³ΠΈ, Π²Π΅ΡΠ° Π½Π΅ΠΉΡΠΎΠ½Π½ΡΡ ΡΠ΅ΡΠ΅ΠΉ ΠΈ ΠΏΡΠΎΡ.);
- ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° (Π΄Π°Π»Π΅Π΅ β ΠΊΠΎΠ½ΡΠΈΠ³Π°), Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ , URL ΡΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ Python ΠΈ ΠΏΡΠΎΡΠ΅ΠΌ.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ DeepPavlov ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ°ΡΡΡΡ , ΠΏΠΎΠΊΠ° ΡΡΠΎ Π½Π°ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π½Π°ΡΡ, ΡΡΠΎ:
- ΠΡΠ±Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π² DeepPavlov ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³Π°;
- ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°ΡΠ°ΡΡ Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² DeepPavlov;
- Π’Π°ΠΊ ΠΆΠ΅ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Python.
ΠΠ΅ΡΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΠΌ, Π±ΡΠ΄Π΅Ρ ΠΌΡΠ»ΡΡΠΈΡΠ·ΡΡΠ½ΡΠΉ Named Entity Recognition (NER). ΠΠΎΠ΄Π΅Π»Ρ ΠΊΠ»Π°ΡΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΡΠ»ΠΎΠ²Π° ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎ ΡΠΈΠΏΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ (ΠΈΠΌΠ΅Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅, Π³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ, Π½Π°Π·Π²Π°Π½ΠΈΡ Π²Π°Π»ΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅). ΠΠΌΡ ΠΊΠΎΠ½ΡΠΈΠ³Π° Π΄Π»Ρ ΡΠ°ΠΌΠΎΠΉ ΡΠ²Π΅ΠΆΠ΅ΠΉ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²Π΅ΡΡΠΈΠΈ NER:
ner_ontonotes_bert_mult
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ REST ΡΠ΅ΡΠ²Π΅Ρ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ:
- Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π² Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² Π΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³Π΅:
python -m deeppavlov install ner_ontonotes_bert_mult
- Π‘ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² DeepPavlov:
python -m deeppavlov download ner_ontonotes_bert_mult
Π‘Π΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π±ΡΠ΄ΡΡ ΡΠΊΠ°ΡΠ°Π½Ρ Π² Π΄ΠΎΠΌΠ°ΡΠ½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ DeepPavlov, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ
~/.deeppavlov
ΠΡΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠΈ Ρ ΡΡ ΡΠΆΠ΅ ΡΠΊΠ°ΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠ²Π΅ΡΡΠ΅ΡΡΡ Ρ Ρ ΡΡΠ°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. Π ΡΠ»ΡΡΠ°Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΆΠ΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ ΡΠ°ΠΉΠ»Ρ. Π Π°Π·ΠΌΠ΅ΡΡ ΡΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΌΠΎΠ³ΡΡ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ ΠΎΡ 0.5 Π΄ΠΎ 8 Gb, Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ°Π·Π°ΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΡΡΠΈΠ³Π°Ρ 20 Gb.
- ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ REST-ΡΠ΅ΡΠ²Π΅Ρ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ:
python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ REST ΡΠ΅ΡΠ²Π΅Ρ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ Π½Π° 5005 ΠΏΠΎΡΡΡ Ρ ΠΎΡΡ-ΠΌΠ°ΡΠΈΠ½Ρ (ΠΏΠΎΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β 5000).
ΠΠΎΡΠ»Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Swagger Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ API ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΡΠΈ ΠΏΠΎ URL http://127.0.0.1:5005
. ΠΡΠΎΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΎΡΠΏΡΠ°Π²ΠΈΠ² Π½Π° ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ http://127.0.0.1:5005/model
POST Π·Π°ΠΏΡΠΎΡ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ JSON ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ:
{
"x": [
"Π ΠΠ€Π’Π ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΡΠ°ΡΡΡΡ Π½Π° ΡΠ»Π΅ΠΊΡΡΠΈΡΠΊΠ΅ Ρ Π‘Π°Π²ΡΠ»ΠΎΠ²ΡΠΊΠΎΠ³ΠΎ ΠΠΎΠΊΠ·Π°Π»Π°.",
"Π ΡΠ³ΠΎ-Π·Π°ΠΏΠ°Π΄Π½ΠΎΠΉ Π ΡΡΠΈ ΡΡΠΎΠ³ ΠΆΠΈΡΠ° ΠΎΡΠ΅Π½Π΅Π½ Π² 15 Π³ΡΠΈΠ²Π΅Π½"
]
}
Π ΠΎΡΠ²Π΅Ρ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΊΠΎΠΉ JSON:
[
[
["Π", "ΠΠ€Π’Π", "ΠΌΠΎΠΆΠ½ΠΎ", "Π΄ΠΎΠ±ΡΠ°ΡΡΡΡ", "Π½Π°", "ΡΠ»Π΅ΠΊΡΡΠΈΡΠΊΠ΅", "Ρ", "Π‘Π°Π²ΡΠ»ΠΎΠ²ΡΠΊΠΎΠ³ΠΎ", "ΠΠΎΠΊΠ·Π°Π»Π°", "."],
["O", "B-FAC", "O", "O", "O", "O", "O", "B-FAC", "I-FAC", "O"]
],
[
["Π", "ΡΠ³ΠΎ", "-", "Π·Π°ΠΏΠ°Π΄Π½ΠΎΠΉ", "Π ΡΡΠΈ", "ΡΡΠΎΠ³", "ΠΆΠΈΡΠ°", "ΠΎΡΠ΅Π½Π΅Π½", "Π²", "15", "Π³ΡΠΈΠ²Π΅Π½"],
["O", "B-LOC", "I-LOC", "I-LOC", "I-LOC", "O", "O", "O", "O", "B-MONEY", "I-MONEY"]
]
]
ΠΠ° ΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΡΠ°Π·Π±Π΅ΡΡΠΌ REST API DeepPavlov.
API DeepPavlov
ΠΠ°ΠΆΠ΄Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ DeepPavlov ΠΈΠΌΠ΅Π΅Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄ΠΈΠ½ Π²Ρ
ΠΎΠ΄ΡΡΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. Π REST API Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅, ΠΈΡ
ΠΈΠΌΠ΅Π½Π° β ΠΊΠ»ΡΡΠΈ Π²Ρ
ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π°ΡΠ³ΡΠΌΠ΅Π½Ρ β ΡΡΠΎ ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ MODELS Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π² Π°ΡΠ³ΡΠΌΠ΅Π½Ρ x Π±ΡΠ» ΠΏΠ΅ΡΠ΅Π΄Π°Π½ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· Π΄Π²ΡΡ ΡΡΡΠΎΠΊ, Π½Π° ΠΊΠ°ΠΆΠ΄ΡΡ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ»Π° Π²ΡΠ΄Π°Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠ°. Π DeepPavlov Π²ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π½Π° Π²Ρ ΠΎΠ΄ ΡΠΏΠΈΡΠΎΠΊ (Π±Π°ΡΡ) Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ.
Π’Π΅ΡΠΌΠΈΠ½ βΠ±Π°ΡΡβ (batch) ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΠΏΠΎΠ΄ ΡΠΎΠ±ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠ· Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ ΠΈΠ»ΠΈ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ (Π·Π°ΡΠ°ΡΡΡΡ β ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ) Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π±Π°ΡΡΠ° ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΡΠΈΠΌ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌ Π½Π° Π²Ρ ΠΎΠ΄ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. ΠΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΠ΄Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π±Π°ΡΡΠ° Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΅Π³ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°.
Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ DeepPavlov Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΡΠ²ΠΎΠΉ Π±Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π° Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΠΌΠΎΠ΄Π΅Π»Ρ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠ΄Π°ΡΡ ΠΎΠ΄ΠΈΠ½ Π±Π°ΡΡ ΠΎΡΠ²Π΅ΡΠΎΠ². ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΡΡ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π±Π°ΡΡΠ° ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π±Π°ΡΡΠ΅ΠΉ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ.
Π ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±ΡΠ»Π° ΡΠ°Π·Π±ΠΈΠ²ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½Π° ΡΠΎΠΊΠ΅Π½Ρ (ΡΠ»ΠΎΠ²Π° ΠΈ Π·Π½Π°ΠΊΠΈ ΠΏΡΠ΅ΠΏΠΈΠ½Π°Π½ΠΈΡ) ΠΈ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠΎΠΊΠ΅Π½Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ (Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ, Π²Π°Π»ΡΡΠ°), ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ. ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ner_ontonotes_bert_mult ΡΠΏΠΎΡΠΎΠ±Π½Π° ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ 18 ΡΠΈΠΏΠΎΠ² ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ
ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ
ΠΡΡΠ³ΠΈΠ΅ out-of-the-box ΠΌΠΎΠ΄Π΅Π»ΠΈ DeepPavlov
ΠΠΎΠΌΠΈΠΌΠΎ NER Π² DeepPavlov Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ out-of the-box ΠΌΠΎΠ΄Π΅Π»ΠΈ:
Text Question Answering
ΠΡΠ²Π΅Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡ ΠΊ ΡΠ΅ΠΊΡΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°. ΠΠΎΠ½ΡΠΈΠ³ ΠΌΠΎΠ΄Π΅Π»ΠΈ: squad_ru_bert_infer
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ°:
{
"context_raw": [
"DeepPavlov ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΠ΅ΠΉ ΠΠ€Π’Π.",
"Π ΡΠ³ΠΎ-Π·Π°ΠΏΠ°Π΄Π½ΠΎΠΉ Π ΡΡΠΈ ΡΡΠΎΠ³ ΠΆΠΈΡΠ° ΠΎΡΠ΅Π½Π΅Π½ Π² 15 Π³ΡΠΈΠ²Π΅Π½."
],
"question_raw": [
"ΠΠ΅ΠΌ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ DeepPavlov?",
"Π‘ΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠΈΠ» ΡΡΠΎΠ³ ΠΆΠΈΡΠ° Π½Π° Π ΡΡΠΈ?"
]
}
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
[
["Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΠ΅ΠΉ ΠΠ€Π’Π", 27, 31042.484375],
["15 Π³ΡΠΈΠ²Π΅Π½", 39, 1049.598876953125]
]
Insult Detection
ΠΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π°Π»ΠΈΡΠΈΡ ΠΎΡΠΊΠΎΡΠ±Π»Π΅Π½ΠΈΡ Π»ΠΈΡΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΠΎΠ²Π°Π½ ΡΠ΅ΠΊΡΡ (Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ β ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°). ΠΠΎΠ½ΡΠΈΠ³ ΠΌΠΎΠ΄Π΅Π»ΠΈ: insults_kaggle_conv_bert
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ°:
{
"x": [
"Money talks, bullshit walks.",
"You are not the brightest one."
]
}
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
[
["Not Insult"],
["Insult"]
]
Sentiment Analysis
ΠΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΠΊΡΡΠ° (ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½Π°Ρ, Π½Π΅ΠΉΡΡΠ°Π»ΡΠ½Π°Ρ, Π½Π΅Π³Π°ΡΠΈΠ²Π½Π°Ρ). ΠΠΎΠ½ΡΠΈΠ³ ΠΌΠΎΠ΄Π΅Π»ΠΈ: rusentiment_elmo_twitter_cnn
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ°:
{
"x": [
"ΠΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° DeepPavlov.",
"Π― ΡΠ»ΡΡΠ°Π» ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ DeepPavlov.",
"ΠΠ΅Π½Ρ Π±Π΅ΡΡΡ ΡΡΠΎΠ»Π»ΠΈ ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΡΡΡ."
]
}
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
[
["positive"],
["neutral"],
["negative"]
]
Paraphrase Detection
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΈΠΌΠ΅ΡΡ Π»ΠΈ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ ΡΠ΅ΠΊΡΡΠ° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΠ½ΡΠΈΠ³ ΠΌΠΎΠ΄Π΅Π»ΠΈ: stand_paraphraser_ru
ΠΠ°ΠΏΡΠΎΡ:
{
"text_a": [
"ΠΠΎΡΠΎΠ΄ ΠΏΠΎΠ³ΡΡΠΆΠ°Π΅ΡΡΡ Π² ΡΠΎΠ½, ΠΏΡΠΎΡΡΠΏΠ°Π΅ΡΡΡ ΠΠ°ΡΠΈΡ.",
"ΠΡΠ΅Π·ΠΈΠ΄Π΅Π½Ρ Π‘Π¨Π ΠΏΡΠΈΠ³ΡΠΎΠ·ΠΈΠ» ΡΠ°ΡΡΠΎΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ° Ρ ΠΠ΅ΡΠΌΠ°Π½ΠΈΠ΅ΠΉ."
],
"text_b": [
"ΠΠ°ΡΡΡΠΏΠ°Π΅Ρ Π½ΠΎΡΡ, Π²ΡΠ΅ ΠΆΠΈΡΠ΅Π»ΠΈ Π³ΠΎΡΠΎΠ΄Π° ΠΏΠΎΡΠ»ΠΈ ΡΠΏΠ°ΡΡ, Π° ΠΏΡΠ΅ΡΡΡΠΏΠ½ΠΈΠΊΠΈ ΠΏΡΠΎΡΠ½ΡΠ»ΠΈΡΡ.",
"ΠΠ΅ΡΠΌΠ°Π½ΠΈΡ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π°Π²Π°ΡΡΡΡ ΡΠ³ΡΠΎΠ·Π°ΠΌ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Π‘Π¨Π."
]
}
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
[
[1],
[0]
]
ΠΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
out-of-the-box ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ DeepPavlov ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΅Π³Π΄Π° Π½Π°ΠΉΡΠΈ
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ API DeepPavlov ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ΅ΠΊΡΡΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ βΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈβ. ΠΡΠΈ ΡΡΠΎΠΌ Π½Π°Π΄ΠΎ ΠΈΠΌΠ΅ΡΡ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Π΄Π»Ρ Π»ΡΠ±ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ NLP Π½Π°ΠΈΠ»ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠΈΠ³Π°ΡΡΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ , ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ (Π΄ΠΎΠΌΠ΅Π½Ρ) Π·Π°Π΄Π°ΡΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Π½Π΅Π»ΡΠ·Ρ ΠΎΠ±ΡΡΠΈΡΡ Π½Π° Π²ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ ΠΆΠΈΠ·Π½ΠΈ.
Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΡΠ°ΡΡΡΡ
ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π·Π°ΠΏΡΡΠΊ DeepPavlov ΠΈΠ· Docker, Π° ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Π Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ Ρ DeepPavlov Π΅ΡΡΡ
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com