DeepPavlov ee Horumarinta: #1 Qalabka NLP iyo Abuurista Chatbot

Salaamu caleykum Waxaan furaynaa maqaallo taxane ah oo u heellan xallinta mashaakilaadka la taaban karo ee la xiriira habaynta luqadda dabiiciga ah (Habitaanka Luqadda Dabiiciga ah ama NLP oo keliya) iyo abuurista wakiillo wada-sheekeysi (bots-ka-sheekeysiga) iyadoo la adeegsanayo maktabad il furan DeepPavlov, kaas oo ay soo saarayaan kooxdayada MIPT Shaybaadhka Nidaamyada Neural iyo Barashada qoto dheer. Hadafka ugu weyn ee wareegga waa in la soo bandhigo horumarinta ballaaran ee DeepPavlov oo tus sida aad u xallin karto dhibaatooyinka NLP ee la dabaqay adiga oo aan aqoon qoto dheer u lahayn Barashada Mashiinka iyo PhD ee Xisaabta.

Hawlaha NLP waxaa ka mid ah go'aaminta dhawaaqa qoraalka, kala saarista hay'adaha magacaaban, go'aaminta waxa dhexgaluhu ka rabo bot-kaaga: dalbo pizza ama hel macluumaadka asalka, iyo wax ka badan. Waxaad wax badan ka akhrisan kartaa hawlaha iyo hababka NLP halkan.

Maqaalkan, waxaan ku tusi doonaa sida loo maamulo server-ka REST oo leh moodooyin NLP horay loo tababaray oo diyaar u ah in la isticmaalo iyada oo aan la helin qaabayn dheeri ah ama tababar.

DeepPavlov ee Horumarinta: #1 Qalabka NLP iyo Abuurista Chatbot

Ku rakibidda DeepPavlov

Tilmaamaha Linux waxaa lagu siin doonaa halkan iyo hoos. Daaqadaha eeg our dukumeenti

  • Abuur oo ku kici jawi macmal ah oo wata nooca hadda la taageeray ee Python:
    virtualelnv env -p python3.7
    source env/bin/activate
  • Ku rakib DeepPavlov jawi macmal ah:
    pip install deeppavlov
    

Bilaabida server-ka REST ee leh qaabka DeepPavlov

Kahor intaanan bilaabin serverka qaabka DeepPavlov markii ugu horeysay, waxay noqon doontaa mid faa'iido leh inaan ka hadalno qaar ka mid ah sifooyinka dhismaha maktabadda.

Nooc kasta oo DP ah wuxuu ka kooban yahay:

  • Python code;
  • Qaybaha la soo dejisan karo - natiijooyinka waxbarasho ee taxanaha ah ee xogta gaarka ah (ku-xidhka, miisaanka shabakada neerfaha, iwm.);
  • Faylka qaabeynta (kan ka dib loo tixraacayo qaabaynta), kaas oo ka kooban macluumaadka ku saabsan fasallada uu isticmaalo moodeelka, URL-yada qaybaha la soo dejiyey, ku tiirsanaanta Python, iyo in ka badan.

Waxaan kuu sheegi doonaa wax badan oo ku saabsan waxa hoos yimaada DeepPavlov ee maqaallada soo socda, hadda waxaa nagu filan inaan ogaano taas:

  • Nooc kasta oo DeepPavlov ah waxaa lagu aqoonsaday magaca qaabeynta;
  • Si aad u socodsiiso moodelka, waxaad u baahan tahay inaad ka soo dejiso qaybaheeda server-yada DeepPavlov;
  • Sidoo kale, si aad u socodsiiso qaabka, waxaad u baahan tahay inaad rakibto maktabadaha Python ee ay isticmaasho.

Qaabka ugu horeeya ee aanu maamuli doono waxa uu noqon doonaa luuqado badan oo lagu magacaabo Hay'adda Aqoonsiga (NER). Qaabku wuxuu u kala saarayaa erayada qoraalka iyadoo loo eegayo nooca hay'adaha la magacaabay ee ay ka tirsan yihiin (magacyada saxda ah, magacyada juqraafiga, magacyada lacagta, iyo kuwa kale). Ku xidh magaca noocii u dambeeyay ee NER:

ner_ontonotes_bert_mult

Waxaan ku bilownay server-ka REST oo wata moodeelka:

  1. Ku rakib ku-tiirsanaanta moodeelka ku qeexan qaab-dhismeedkeeda jawiga farsamada ee firfircoon:
    python -m deeppavlov install ner_ontonotes_bert_mult
    
  2. Ka soo deji qaybaha moodeelka taxanaha ah ee DeepPavlov servers:
    python -m deeppavlov download ner_ontonotes_bert_mult
    

    Qaybaha taxanaha ah waxaa lagu soo dejisan doonaa tusaha guriga ee DeepPavlov, kaas oo ku yaal si caadi ah

    ~/.deeppavlov

    Marka la soo dejinayo, xadhkaha qaybaha hore loo soo dejiyey ayaa la barbar dhigaya xashiishyada qaybaha ku yaal server-ka. Haddii ay jirto ciyaar, soo dejintu waa la booday oo faylasha jira ayaa la isticmaalaa. Cabbirrada qaybaha la soo dejiyey waxay ku kala duwanaan karaan celcelis ahaan 0.5 ilaa 8 Gb, xaaladaha qaarkood waxay gaadhaan 20 Gb ka dib marka la furo.

  3. Waxaan ku bilownay server-ka REST oo wata moodeelka:
    python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
    

Natiijadii fulinta amarkan, server-ka REST ee moodeelka leh ayaa lagu bilaabi doonaa dekedda 5005 ee mashiinka martida loo yahay (dekedda caadiga ah waa 5000).

Ka dib marka qaabka la bilaabo, Swagger oo wata dukumeenti API ah iyo awoodda tijaabinta waxaa laga heli karaa URL http://127.0.0.1:5005. Aan tijaabinno qaabka anagoo u dirayna meesha ugu dambeysa http://127.0.0.1:5005/model Codsiga POST oo wata nuxurka JSON ee soo socda:

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

Jawaabta, waa inaan helnaa JSON soo socota:

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

Isticmaalka tusaalooyinkan, waxaan falanqeyn doonaa DeepPavlov REST API.

DeepPavlov API

Nooc kasta oo DeepPavlov ah wuxuu leeyahay ugu yaraan hal dood gelin. Gudaha API REST, doodaha waa la magacaabay, magacyadoodu waa furayaasha qaamuuska soo socda. Inta badan, dooddu waa qoraalka la rabo in laga shaqeeyo. Macluumaad dheeraad ah oo ku saabsan doodaha iyo qiyamka ay soo celiyeen moodooyinka waxaa laga heli karaa qaybta MODELS ee dukumeentiga. DeepPavlov

Tusaalaha, liis laba xadhig ah ayaa loo gudbiyay dooda x, kuwaas oo mid walba la siiyay calaamad gaar ah. DeepPavlov, dhammaan moodooyinka waxay u qaataan sidii liis (dufcad) qiyam ah oo si madaxbanaan loo farsameeyo.

Erayga "dufcad" waxa loola jeedaa goobta barashada mishiinada oo waxa loola jeedaa dufcaddii qiyamka wax gelinta ee madax-banaan Habkani wuxuu kuu ogolaanayaa inaad hoos u dhigto (badanaa si weyn) wakhtiga habaynta ee hal dufcadood marka la barbar dhigo isla qiimihii loo gudbiyay gelinta si gooni ah. Laakiin natiijada processing waxaa la siiyaa oo kaliya ka dib markii processing dhammaan walxaha. Sidaa darteed, marka la abuurayo dufcaddii soo socota, waxay noqon doontaa lagama maarmaan in la tixgeliyo xawaaraha qaabka iyo wakhtiga loo baahan yahay ee mid kasta oo ka mid ah walxaha gaarka ah.

Haddii ay jiraan dhowr doodood oo ka mid ah qaabka DeepPavlov, mid kasta oo iyaga ka mid ah ayaa helaya dufcaddeeda qiyamka, iyo wax soo saarka qaabka had iyo jeer waxay soo saartaa hal jawaabo. Cunsurrada dufcadda baxaysaa waa natiijooyinka ka-habaynta walxaha dufcadaha soo socda oo leh index isku mid ah.

Tusaalaha kore, natiijadii tusaalaha waxay ahayd kala-goynta xariiq kasta oo calaamado ah (ereyo iyo calaamado xarakayn) iyo kala soocidda calaamadda marka loo eego cidda la magacaabay (magaca ururka, lacagta) ee uu matalo. Waqtigan xaadirka ah qaabka ner_ontonotes_bert_mult wuxuu awoodaa inuu aqoonsado 18 nooc oo ah hay'ado la magacaabay, sharaxaad faahfaahsan ayaa la heli karaa halkan.

Moodooyinka kale ee ka baxsan sanduuqa DeepPavlov

Marka lagu daro NER, moodooyinka soo socda ee ka baxsan sanduuqa ayaa laga heli karaa DeepPavlov wakhtiga qorista:

Jawaabta Su'aasha Qoraalka

Jawaabta su'aasha qoraalka waa qayb ka mid ah qoraalkan. Qaabka qaabka: kooxda_en_bert_infer

Codso tusaale:

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

Natiijada:

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

Ogaanshaha Faaliga

Aqoonsiga joogitaanka aflagaadada qofka qoraalka loo jeedinayo (waqtiga qoraalkan - kaliya Ingiriisiga). Qaabka qaabka: insults_kaggle_conv_bert

Codso tusaale:


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

Natiijada:

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

Falanqaynta Dareenka

Kala-soocidda dareenka qoraalka (togan, dhexdhexaad, taban). Qaabka qaabka: rusentiment_elmo_twitter_cnn

Codso tusaale:

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

Natiijada:

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

Ogaanshaha Faaqidaadda

Go'aaminta in laba qoraal oo kala duwani ay isku macno leeyihiin. Qaabka qaabka: istaag_paraphraser_en

Codsi:

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

Natiijada:

[
  [1],
  [0]
]

Liiska cusub ee dhammaan moodooyinka DeepPavlov ee ka baxsan sanduuqa ayaa had iyo jeer la heli karaa halkan.

gunaanad

Maqaalkan, waxaan ku baranay DeepPavlov API iyo qaar ka mid ah qaababka habaynta qoraalka ee maktabadda oo laga bixiyo sanduuqa. Isla mar ahaantaana, waa in maskaxda lagu hayaa in hawl kasta oo NLP ah, natiijada ugu fiican ayaa la gaari doonaa marka qaabka lagu tababaro xogta xogta ee u dhiganta mawduuca (Domain) ee hawsha. Intaa waxaa dheer, xitaa moodooyin badan, mabda'a ahaan, looma tababari karo dhammaan munaasabadaha.

Maqaallada soo socda, waxaan eegi doonaa goobaha maktabadaha dheeraadka ah, ka bilaabi DeepPavlov Docker, ka dibna u gudubno moodooyinka tababarka. Ha iloobin in DeepPavlov leeyahay kulanka - weydii su'aalahaaga ku saabsan maktabadda iyo moodooyinka. Waad ku mahadsan tahay dareenkaaga!

Source: www.habr.com

Add a comment