DeepPavlov para sa mga developers: #1 NLP tools ug chatbot creation

Kumusta tanan! Nag-abli kami og serye sa mga artikulo nga gipahinungod sa pagsulbad sa praktikal nga mga problema nga may kalabutan sa pagproseso sa natural nga pinulongan (Natural Language Processing o yanong NLP) ug paghimo og mga dialog agent (chatbots) gamit ang open-source library DeepPavlov, nga gipalambo sa among team sa MIPT Laboratory of Neural Systems ug Deep Learning. Ang panguna nga katuyoan sa serye mao ang pagpaila sa DeepPavlov sa usa ka halapad nga mga developer ug ipakita kung giunsa nimo masulbad ang mga problema sa NLP nga wala’y lawom nga kahibalo sa Machine Learning ug PhD sa Matematika.

Ang mga buluhaton sa NLP naglakip sa pagtino sa sentimento sa teksto, pag-parse sa ginganlan nga mga entidad, pagtino kung unsa ang gusto sa interlocutor gikan sa imong bot: pag-order og pizza o pagkuha og impormasyon sa background, ug daghan pa. Mahimo nimong mabasa ang dugang bahin sa mga buluhaton ug pamaagi sa NLP dinhi.

Sa kini nga artikulo, ipakita namon kanimo kung giunsa ang pagpadagan sa usa ka REST server nga adunay mga pre-trained nga modelo sa NLP, andam gamiton nga wala’y dugang nga pag-configure o pagbansay.

DeepPavlov para sa mga developers: #1 NLP tools ug chatbot creation

Pag-instalar sa DeepPavlov

Dinhi ug sa ubos, ang mga panudlo alang sa Linux ihatag. Alang sa Windows, tan-awa ang among dokumentasyon

  • Paghimo ug pagpaaktibo sa usa ka virtual nga palibot nga adunay karon nga gisuportahan nga bersyon sa Python:
    virtualelnv env -p python3.7
    source env/bin/activate
  • I-install ang DeepPavlov sa usa ka virtual nga palibot:
    pip install deeppavlov
    

Paglansad sa usa ka REST server nga adunay modelo nga DeepPavlov

Sa wala pa kami maglunsad og server nga adunay modelo sa DeepPavlov sa unang higayon, mapuslanon ang paghisgot bahin sa pipila ka bahin sa arkitektura sa librarya.

Ang bisan unsang modelo sa DP naglangkob sa:

  • Python code;
  • Ma-download nga mga sangkap - serialized nga mga resulta sa pagbansay sa piho nga datos (mga pag-embed, gibug-aton sa mga neural network, ug uban pa);
  • Usa ka file sa pag-configure (gitawag dinhi nga config), nga adunay kasayuran bahin sa mga klase nga gigamit sa modelo, mga URL sa na-download nga mga sangkap, dependency sa Python, ug uban pa.

Isulti namon kanimo ang labi pa bahin sa kung unsa ang naa sa ilawom sa DeepPavlov sa mga mosunud nga artikulo, sa pagkakaron igo na nga mahibal-an namon kana:

  • Ang bisan unsang modelo sa DeepPavlov giila sa ngalan sa config niini;
  • Aron mapadagan ang modelo, kinahanglan nimo nga i-download ang mga sangkap niini gikan sa mga server sa DeepPavlov;
  • Usab, aron mapadagan ang modelo, kinahanglan nimo nga i-install ang mga librarya sa Python nga gigamit niini.

Ang unang modelo nga atong ilusad mao ang multilingual nga Named Entity Recognition (NER). Giklasipikar sa modelo ang mga pulong nga teksto sumala sa tipo sa mga gihinganlan nga entidad diin sila nahisakop (proper names, geographical names, names of currencies, ug uban pa). I-configure ang ngalan para sa pinakabag-o nga bersyon sa NER:

ner_ontonotes_bert_mult

Gilunsad namo ang REST server nga adunay modelo:

  1. Gi-install namon ang mga dependency sa modelo nga gitakda sa config niini sa aktibo nga virtual nga palibot:
    python -m deeppavlov install ner_ontonotes_bert_mult
    
  2. Pag-download sa serialized nga mga sangkap sa modelo gikan sa mga server sa DeepPavlov:
    python -m deeppavlov download ner_ontonotes_bert_mult
    

    Ang mga serialized nga sangkap ma-download sa DeepPavlov home directory, nga nahimutang sa default

    ~/.deeppavlov

    Kung nag-download, ang hash sa na-download na nga mga sangkap gisusi batok sa mga hash sa mga sangkap nga nahimutang sa server. Kung adunay usa ka tugma, ang pag-download laktawan ug ang mga kasamtangan nga mga file gigamit. Ang mga gidak-on sa na-download nga mga sangkap mahimong magkalahi sa aberids gikan sa 0.5 ngadto sa 8 Gb, sa pipila ka mga kaso moabot sa 20 Gb human sa pag-unzip.

  3. Gilunsad namo ang REST server nga adunay modelo:
    python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
    

Isip resulta sa pagpatuman niini nga sugo, usa ka REST server nga adunay modelo ang ilunsad sa port 5005 sa host machine (ang default port mao ang 5000).

Pagkahuman sa pagsugod sa modelo, ang Swagger nga adunay dokumentasyon sa API ug ang abilidad sa pagsulay makita sa URL http://127.0.0.1:5005. Atong sulayan ang modelo pinaagi sa pagpadala niini sa endpoint http://127.0.0.1:5005/model POST hangyo uban sa mosunod nga JSON sulod:

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

Agig tubag kinahanglan natong madawat ang mosunod nga 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"]
  ]
]

Gamit kini nga mga pananglitan, atong analisahon ang DeepPavlov REST API.

API DeepPavlov

Ang matag modelo sa DeepPavlov adunay labing menos usa ka argumento sa input. Sa REST API, ang mga argumento ginganlan, ang ilang mga ngalan mao ang mga yawe sa umaabot nga diksyonaryo. Sa kadaghanan nga mga kaso, ang argumento mao ang teksto nga kinahanglan iproseso. Ang dugang nga kasayuran bahin sa mga argumento ug mga kantidad nga gibalik sa mga modelo makita sa seksyon sa MODELS sa dokumentasyon DeepPavlov

Sa pananglitan, usa ka lista sa duha ka mga kuldas ang gipasa sa argumento x, nga ang matag usa gihatagan og bulag nga marka. Sa DeepPavlov, ang tanan nga mga modelo nagkuha ingon input usa ka lista (batch) sa mga kantidad nga giproseso nga independente.

Ang termino nga "batch" nagtumong sa natad sa pagkat-on sa makina ug nagtumong sa usa ka hugpong sa mga independente nga kantidad sa input nga giproseso sa usa ka algorithm o neural network nga dungan. Kini nga pamaagi nagtugot kanimo sa pagpakunhod (sa kasagaran mahinungdanon) sa panahon nga ang modelo nagproseso sa usa ka elemento sa usa ka batch kon itandi sa parehas nga kantidad nga gipasa sa input nga gilain. Apan ang resulta sa pagproseso gi-isyu lamang human maproseso ang tanang elemento. Busa, kung maghimo usa ka umaabot nga batch, kinahanglan nga tagdon ang katulin sa modelo ug ang gikinahanglan nga oras sa pagproseso alang sa matag usa sa mga indibidwal nga elemento niini.

Kung adunay daghang mga argumento sa modelo sa DeepPavlov, ang matag usa kanila makadawat sa kaugalingon nga batch sa mga kantidad, ug sa output ang modelo kanunay nga nagpatunghag usa ka hugpong sa mga tubag. Ang mga elemento sa outgoing batch mao ang mga resulta sa pagproseso sa mga elemento sa umaabot nga mga batch nga adunay parehas nga indeks.

Sa pananglitan sa ibabaw, ang resulta sa modelo mao ang pagbungkag sa matag hilo ngadto sa mga token (mga pulong ug punctuation marks) ug pagklasipikar sa token nga may kalabotan sa ginganlan nga entidad (ngalan sa organisasyon, currency) nga girepresentar niini. Sa pagkakaron ang modelo ner_ontonotes_bert_mult makahimo sa pag-ila sa 18 ka matang sa ginganlan nga mga entidad, usa ka detalyado nga paghulagway makita dinhi.

Ang ubang mga out-of-the-box nga mga modelo ni DeepPavlov

Dugang pa sa NER, ang mosunod nga mga out-of-the-box nga mga modelo anaa sa DeepPavlov sa panahon sa pagsulat:

Pagtubag sa Pangutana sa Teksto

Tubaga ang pangutana sa teksto gamit ang usa ka tipik niini nga teksto. Model config: squad_ru_bert_infer

Pananglitan nga hangyo:

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

Resulta:

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

Pagsusi sa Insulto

Detection sa presensya sa usa ka insulto sa tawo nga ang teksto gitumong (sa panahon sa pagsulat - alang lamang sa Iningles). Model config: insults_kaggle_conv_bert

Pananglitan nga hangyo:


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

Resulta:

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

Pagtuki sa sentimento

Klasipikasyon sa sentimento sa teksto (positibo, neyutral, negatibo). Model config: rusentiment_elmo_twitter_cnn

Pananglitan nga hangyo:

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

Resulta:

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

Paraphrase Detection

Pagtino kon ang duha ka lain-laing mga teksto adunay managsama nga kahulogan. Model config: stand_paraphraser_en

hangyo:

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

Resulta:

[
  [1],
  [0]
]

Ang kasamtangang listahan sa tanang out-of-the-box nga DeepPavlov nga mga modelo kanunay makita dinhi.

konklusyon

Niini nga artikulo, nahibal-an namon ang DeepPavlov API ug pipila sa mga kapabilidad sa pagproseso sa teksto sa librarya nga gihatag sa gawas sa kahon. Kinahanglan nga hinumdoman nga alang sa bisan unsang buluhaton sa NLP, ang labing kaayo nga sangputanan makab-ot kung gibansay ang modelo sa usa ka set sa datos nga katumbas sa hilisgutan nga lugar (domain) sa buluhaton. Dugang pa, bisan ang daghang mga modelo dili, sa prinsipyo, mabansay alang sa tanan nga mga sitwasyon.

Sa mosunod nga mga artikulo atong tan-awon ang dugang nga mga setting sa librarya, paglansad sa DeepPavlov gikan sa Docker, ug dayon kita magpadayon sa mga modelo sa pagbansay. Ug ayaw kalimti nga ang DeepPavlov adunay ang forum - pangutana sa imong mga pangutana bahin sa librarya ug mga modelo. Salamat sa imong pagtagad!

Source: www.habr.com

Idugang sa usa ka comment