DeepPavlov для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²: #1 инструмСнты NLP ΠΈ создания Ρ‡Π°Ρ‚-Π±ΠΎΡ‚ΠΎΠ²

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚! ΠœΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ†ΠΈΠΊΠ» статСй, посвящСнных Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ практичСских Π·Π°Π΄Π°Ρ‡, связанных с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ СстСствСнного языка (Natural Language Processing ΠΈΠ»ΠΈ просто NLP) ΠΈ созданиСм Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Π°Π³Π΅Π½Ρ‚ΠΎΠ² (Ρ‡Π°Ρ‚-Π±ΠΎΡ‚ΠΎΠ²) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ open-source Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ DeepPavlov, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ наша ΠΊΠΎΠΌΠ°Π½Π΄Π° Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΈΠΈ НСйронных систСм ΠΈ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ обучСния МЀВИ. Главная Ρ†Π΅Π»ΡŒ Ρ†ΠΈΠΊΠ»Π° β€” ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ ΠΊΡ€ΡƒΠ³ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² с DeepPavlov ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ NLP, Π½Π΅ обладая ΠΏΡ€ΠΈ этом Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΌΠΈ познаниями Π² Machine Learning ΠΈ PhD in Mathematics.

К NLP Π·Π°Π΄Π°Ρ‡Π°ΠΌ относят ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ тСкста, парсинг ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сущностСй, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΡ‚ вашСго Π±ΠΎΡ‚Π° собСсСдник: Π·Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΈΡ†Ρ†Ρƒ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ NLP Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ расскаТСм, ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ REST сСвСр с ΠΏΡ€Π΅Π΄ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ модСлями NLP, Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΊ использованию Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ настройки ΠΈΠ»ΠΈ обучСния.

DeepPavlov для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²: #1 инструмСнты 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 сСрвСр с модСлью:

  1. УстанавливаСм Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ зависимости ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² Π΅Ρ‘ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅:
    python -m deeppavlov install ner_ontonotes_bert_mult
    
  2. Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ сСриализованныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈ с сСрвСров DeepPavlov:
    python -m deeppavlov download ner_ontonotes_bert_mult
    

    Π‘Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ скачаны Π² домашнюю Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ DeepPavlov, которая ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ находится

    ~/.deeppavlov

    ΠŸΡ€ΠΈ скачивании Ρ…ΡΡˆ ΡƒΠΆΠ΅ скачСнных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² свСряСтся с Ρ…ΡΡˆΠ°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², находящихся Π½Π° сСрвСрС. Π’ случаС совпадСния скачиваниС пропускаСтся ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ„Π°ΠΉΠ»Ρ‹. Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ скачиваСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² срСднСм ΠΎΡ‚ 0.5 Π΄ΠΎ 8 Gb, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях послС разархивирования достигая 20 Gb.

  3. ЗапускаСм 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 Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ DeepPavlov

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ 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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ