DeepPavlov fun awọn olupilẹṣẹ: # 1 Awọn irinṣẹ NLP ati ṣiṣẹda chatbot

Bawo ni gbogbo eniyan! A n ṣii lẹsẹsẹ awọn nkan ti o yasọtọ lati yanju awọn iṣoro ilowo ti o ni ibatan si sisẹ ede abinibi (Ṣiṣe Ede Adayeba tabi NLP ni irọrun) ati ṣiṣẹda awọn aṣoju ifọrọranṣẹ (chatbots) ni lilo ile-ikawe orisun-ìmọ DeepPavlov, eyi ti o ti wa ni idagbasoke nipasẹ wa egbe ni MIPT yàrá ti Neural Systems ati Jin Learning. Ibi-afẹde akọkọ ti jara ni lati ṣafihan DeepPavlov si ọpọlọpọ awọn olupilẹṣẹ ati ṣafihan bi o ṣe le yanju awọn iṣoro NLP ti a lo laisi imọ-jinlẹ ni Ẹkọ ẹrọ ati PhD ni Iṣiro.

Awọn iṣẹ-ṣiṣe NLP pẹlu ṣiṣe ipinnu imọ-ọrọ ti ọrọ naa, sisọ awọn nkan ti a darukọ, ṣiṣe ipinnu kini interlocutor fẹ lati bot rẹ: paṣẹ pizza tabi gba alaye lẹhin, ati pupọ diẹ sii. O le ka diẹ sii nipa awọn iṣẹ ṣiṣe NLP ati awọn ọna nibi.

Ninu nkan yii, a yoo fihan ọ bi o ṣe le ṣiṣẹ olupin REST pẹlu awọn awoṣe NLP ti a ti kọ tẹlẹ, ti ṣetan lati lo laisi iṣeto ni afikun tabi ikẹkọ.

DeepPavlov fun awọn olupilẹṣẹ: # 1 Awọn irinṣẹ NLP ati ṣiṣẹda chatbot

Fifi sori ẹrọ ti DeepPavlov

Nibi ati ni isalẹ, awọn ilana fun Linux yoo fun. Fun Windows, wo wa iwe aṣẹ

  • Ṣẹda ati mu agbegbe foju ṣiṣẹ pẹlu ẹya atilẹyin lọwọlọwọ ti Python:
    virtualelnv env -p python3.7
    source env/bin/activate
  • Fi DeepPavlov sori ẹrọ ni agbegbe foju kan:
    pip install deeppavlov
    

Ifilọlẹ olupin REST pẹlu awoṣe DeepPavlov

Ṣaaju ki a to ṣe ifilọlẹ olupin kan pẹlu awoṣe DeepPavlov fun igba akọkọ, yoo wulo lati sọrọ nipa diẹ ninu awọn ẹya ti faaji ile-ikawe naa.

Eyikeyi awoṣe ni DP ni:

  • Python koodu;
  • Awọn ohun elo ti a ṣe igbasilẹ - awọn abajade ikẹkọ lẹsẹsẹ lori data kan pato (awọn ifibọ, awọn iwuwo ti awọn nẹtiwọọki nkankikan, ati bẹbẹ lọ);
  • Faili iṣeto ni (lẹhin ti a tọka si bi atunto), eyiti o ni alaye nipa awọn kilasi ti awoṣe lo, URL ti awọn paati ti a ṣe igbasilẹ, awọn igbẹkẹle Python, ati bẹbẹ lọ.

A yoo sọ fun ọ diẹ sii nipa ohun ti o wa labẹ Hood ti DeepPavlov ninu awọn nkan wọnyi, fun bayi o to fun wa lati mọ pe:

  • Eyikeyi awoṣe ni DeepPavlov jẹ idanimọ nipasẹ orukọ atunto rẹ;
  • Lati ṣiṣẹ awoṣe, o nilo lati ṣe igbasilẹ awọn paati rẹ lati awọn olupin DeepPavlov;
  • Pẹlupẹlu, lati ṣiṣẹ awoṣe, o nilo lati fi sori ẹrọ awọn ile-ikawe Python ti o nlo.

Awoṣe akọkọ ti a yoo ṣe ifilọlẹ yoo jẹ idanimọ Ẹda Oniru-ede pupọ (NER). Awoṣe naa ṣe ipinlẹ awọn ọrọ ọrọ ni ibamu si iru awọn nkan ti a darukọ eyiti wọn jẹ (awọn orukọ to tọ, awọn orukọ agbegbe, awọn orukọ ti awọn owo nina, ati awọn miiran). Ṣe atunto orukọ fun ẹya tuntun ti NER lọwọlọwọ:

ner_ontonotes_bert_mult

A ṣe ifilọlẹ olupin REST pẹlu awoṣe:

  1. A fi sori ẹrọ awọn igbẹkẹle awoṣe ti a sọ pato ninu atunto rẹ sinu agbegbe foju ti nṣiṣe lọwọ:
    python -m deeppavlov install ner_ontonotes_bert_mult
    
  2. Ṣe igbasilẹ awọn paati awoṣe lẹsẹsẹ lati awọn olupin DeepPavlov:
    python -m deeppavlov download ner_ontonotes_bert_mult
    

    Awọn paati ti a ṣe lẹsẹsẹ yoo ṣe igbasilẹ si itọsọna ile DeepPavlov, eyiti o wa nipasẹ aiyipada

    ~/.deeppavlov

    Nigbati o ba ṣe igbasilẹ, hash ti awọn paati ti o ti gbasilẹ tẹlẹ jẹ ayẹwo lodi si awọn hashes ti awọn paati ti o wa lori olupin naa. Ti ibaamu kan ba wa, igbasilẹ naa ti fo ati awọn faili ti o wa tẹlẹ lo. Awọn iwọn ti awọn paati igbasilẹ le yatọ ni apapọ lati 0.5 si 8 Gb, ni awọn igba miiran de 20 Gb lẹhin ṣiṣi silẹ.

  3. A ṣe ifilọlẹ olupin REST pẹlu awoṣe:
    python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
    

Bi abajade ti pipaṣẹ aṣẹ yii, olupin REST pẹlu awoṣe yoo ṣe ifilọlẹ lori ibudo 5005 ti ẹrọ agbalejo (ibudo aiyipada jẹ 5000).

Lẹhin ipilẹṣẹ awoṣe, Swagger pẹlu iwe API ati agbara lati ṣe idanwo ni URL naa http://127.0.0.1:5005. Jẹ ki a ṣe idanwo awoṣe nipa fifiranṣẹ si aaye ipari http://127.0.0.1:5005/model Ibere ​​POST pẹlu akoonu JSON wọnyi:

{
  "x": [
    "В МФТИ можно добраться на электричке с Савёловского Вокзала.",
    "В юго-западной Руси стог жита оценен в 15 гривен"
  ]
}

Ni idahun a yẹ ki o gba JSON atẹle:

[
  [
    ["В", "МФТИ", "можно", "добраться", "на", "электричке", "с", "Савёловского", "Вокзала", "."],
    ["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"]
  ]
]

Lilo awọn apẹẹrẹ wọnyi, a yoo ṣe itupalẹ DeepPavlov REST API.

API DeepPavlov

Awoṣe DeepPavlov kọọkan ni o kere ju ariyanjiyan titẹ sii kan. Ninu API REST, awọn ariyanjiyan ni orukọ, orukọ wọn jẹ awọn bọtini ti iwe-itumọ ti nwọle. Ni ọpọlọpọ igba, ariyanjiyan jẹ ọrọ ti o nilo lati ni ilọsiwaju. Alaye diẹ sii nipa awọn ariyanjiyan ati awọn iye ti o pada nipasẹ awọn awoṣe ni a le rii ni apakan MODELS ti iwe naa DeepPavlov

Ninu apẹẹrẹ, atokọ ti awọn okun meji ti kọja si ariyanjiyan x, ọkọọkan eyiti a fun ni isamisi lọtọ. Ni DeepPavlov, gbogbo awọn awoṣe gba bi titẹ sii atokọ kan (ipele) ti awọn iye ti o ni ilọsiwaju ni ominira.

Ọrọ naa “ipele” tọka si aaye ti ẹkọ ẹrọ ati tọka si ipele kan ti awọn iye titẹ sii ominira ti a ṣe ilana nipasẹ algorithm tabi nẹtiwọọki nkankikan ni nigbakannaa. Ọna yii ngbanilaaye lati dinku (nigbagbogbo ni pataki) akoko ti awoṣe ṣe ilana ipin kan ti ipele kan ni akawe si iye kanna ti o kọja si titẹ sii lọtọ. Ṣugbọn abajade sisẹ ti wa ni idasilẹ nikan lẹhin gbogbo awọn eroja ti ni ilọsiwaju. Nitorinaa, nigbati o ba ṣẹda ipele ti nwọle, yoo jẹ pataki lati ṣe akiyesi iyara ti awoṣe ati akoko sisẹ ti o nilo fun ọkọọkan awọn eroja tirẹ.

Ti awọn ariyanjiyan pupọ ba wa si awoṣe DeepPavlov, ọkọọkan wọn gba ipele tirẹ ti awọn iye, ati ni iṣelọpọ awoṣe nigbagbogbo n gbe awọn ipele kan ti awọn idahun. Awọn eroja ti ipele ti njade ni awọn abajade ti sisẹ awọn eroja ti awọn ipele ti nwọle pẹlu atọka kanna.

Ninu apẹẹrẹ ti o wa loke, abajade awoṣe naa ni lati fọ okun kọọkan si awọn ami ami (awọn ọrọ ati awọn ami ifamisi) ati ṣe iyasọtọ aami ti o ni ibatan si nkan ti a npè ni (orukọ agbari, owo) ti o duro. Lọwọlọwọ awoṣe ner_ontonotes_bert_mult ti o lagbara lati ṣe idanimọ awọn oriṣi 18 ti awọn nkan ti a darukọ, apejuwe alaye le ṣee rii nibi.

Awọn awoṣe ti o jade kuro ni apoti nipasẹ DeepPavlov

Ni afikun si NER, awọn awoṣe jade-ti-apoti wọnyi wa ni DeepPavlov ni akoko kikọ:

Idahun Ọrọ

Dahun ibeere naa si ọrọ pẹlu ajẹkù ti ọrọ yii. Iṣeto awoṣe: squad_ru_bert_infer

Ibere ​​fun apẹẹrẹ:

{
  "context_raw": [
    "DeepPavlov разрабатывается лабораторией МФТИ.",
    "В юго-западной Руси стог жита оценен в 15 гривен."
  ],
  "question_raw": [
    "Кем разрабатывается DeepPavlov?",
    "Сколько стоил стог жита на Руси?"
  ]
}

Esi:

[
  ["лабораторией МФТИ", 27, 31042.484375],
  ["15 гривен", 39, 1049.598876953125]
]

Wiwa ẹgan

Wiwa wiwa ti ẹgan si eniyan ti a koju ọrọ si (ni akoko kikọ - nikan fun Gẹẹsi). Awoṣe atunto: insults_kaggle_conv_bert

Ibere ​​fun apẹẹrẹ:


{
  "x": [
    "Money talks, bullshit walks.",
    "You are not the brightest one."
  ]
}

Esi:

[
  ["Not Insult"],
  ["Insult"]
]

Itupalẹ Sentiment

Pipin ti itara ọrọ (rere, didoju, odi). Iṣeto awoṣe: rusentiment_elmo_twitter_cnn

Ibere ​​fun apẹẹrẹ:

{
  "x": [
    "Мне нравится библиотека DeepPavlov.",
    "Я слышал о библиотеке DeepPavlov.",
    "Меня бесят тролли и анонимусы."
  ]
}

Esi:

[
  ["positive"],
  ["neutral"],
  ["negative"]
]

Wiwa Asọsọ

Ṣiṣe ipinnu boya awọn ọrọ oriṣiriṣi meji ni itumọ kanna. Iṣeto awoṣe: imurasilẹ_paraphraser_ru

Ibere:

{
  "text_a": [
    "Город погружается в сон, просыпается Мафия.",
    "Президент США пригрозил расторжением договора с Германией."
  ],
  "text_b": [
    "Наступает ночь, все жители города пошли спать, а преступники проснулись.",
    "Германия не собирается поддаваться угрозам со стороны США."
  ]
}

Esi:

[
  [1],
  [0]
]

Atokọ lọwọlọwọ ti gbogbo awọn awoṣe DeepPavlov ti ita-jade ni a le rii nigbagbogbo nibi.

ipari

Ninu nkan yii, a ti mọ DeepPavlov API ati diẹ ninu awọn agbara ṣiṣe ọrọ ti ile-ikawe ti a pese lati inu apoti. O yẹ ki o gbe ni lokan pe fun eyikeyi iṣẹ NLP, abajade ti o dara julọ yoo waye nigbati ikẹkọ awoṣe lori eto data ti o baamu si agbegbe koko-ọrọ (agbegbe) ti iṣẹ-ṣiṣe naa. Ni afikun, paapaa awọn awoṣe diẹ sii ko le, ni ipilẹ, ni ikẹkọ fun gbogbo awọn ipo.

Ninu awọn nkan atẹle a yoo wo awọn eto afikun ti ile-ikawe, ifilọlẹ DeepPavlov lati Docker, ati lẹhinna a yoo lọ si awọn awoṣe ikẹkọ. Maṣe gbagbe pe DeepPavlov ni apero - beere awọn ibeere rẹ nipa ile-ikawe ati awọn awoṣe. Mo dupe fun ifetisile re!

orisun: www.habr.com

Fi ọrọìwòye kun