DeepPavlov don masu haɓakawa: #1 kayan aikin NLP da ƙirƙirar chatbot

Sannu duka! Muna buɗe jerin kasidu da aka sadaukar don magance matsaloli masu amfani da suka shafi sarrafa harshe na halitta (Tsarin Harshen Halitta ko kuma kawai NLP) da ƙirƙirar wakilai na tattaunawa (chatbots) ta amfani da ɗakin karatu mai buɗewa. DeepPavlov, wanda ƙungiyarmu ke haɓakawa a dakin gwaje-gwaje na MIPT na Tsarin Jijiya da Ilimi mai zurfi. Babban makasudin jerin shine gabatar da DeepPavlov ga masu haɓakawa da yawa da kuma nuna yadda zaku iya magance matsalolin NLP da aka yi amfani da su ba tare da samun zurfin ilimin Injin Koyo da PhD a cikin Mathematics ba.

Ayyuka na NLP sun haɗa da tantance ra'ayin rubutun, tantance sunayen masu suna, ƙayyade abin da mai shiga tsakani ke so daga bot ɗin ku: oda pizza ko samun bayanan baya, da ƙari mai yawa. Kuna iya karanta ƙarin game da ayyuka da hanyoyin NLP a nan.

A cikin wannan labarin, za mu nuna muku yadda ake gudanar da sabar REST tare da ƙirar NLP da aka riga aka horar, a shirye don amfani ba tare da ƙarin tsari ko horo ba.

DeepPavlov don masu haɓakawa: #1 kayan aikin NLP da ƙirƙirar chatbot

Shigar da DeepPavlov

Anan da ƙasa, za a ba da umarnin Linux. Don Windows, duba mu takardun shaida

  • Ƙirƙiri kuma kunna yanayin kama-da-wane tare da sigar Python na yanzu mai goyan baya:
    virtualelnv env -p python3.7
    source env/bin/activate
  • Shigar DeepPavlov a cikin mahallin kama-da-wane:
    pip install deeppavlov
    

Ƙaddamar da uwar garken REST tare da samfurin DeepPavlov

Kafin mu kaddamar da uwar garken tare da samfurin DeepPavlov a karon farko, zai zama da amfani muyi magana game da wasu fasalulluka na gine-ginen ɗakin karatu.

Kowane samfurin a cikin DP ya ƙunshi:

  • Python code;
  • Abubuwan da za a iya saukewa - sakamakon horon da aka jera akan takamaiman bayanai (abin da aka saka, ma'aunin cibiyoyin sadarwa, da sauransu);
  • Fayil ɗin daidaitawa (wanda ake magana da shi azaman config), wanda ya ƙunshi bayani game da azuzuwan da samfurin ke amfani da shi, URLs na abubuwan da aka sauke, abubuwan dogaro da Python, da sauransu.

Za mu gaya muku ƙarin game da abin da ke ƙarƙashin hular DeepPavlov a cikin talifofin masu zuwa, don yanzu ya isa mu san cewa:

  • Kowane samfurin a cikin DeepPavlov an gano shi da sunan tsarin sa;
  • Don gudanar da samfurin, kuna buƙatar zazzage abubuwan da ke cikin sa daga sabar DeepPavlov;
  • Hakanan, don gudanar da ƙirar, kuna buƙatar shigar da ɗakunan karatu na Python da yake amfani da su.

Samfurin farko da za mu ƙaddamar da shi zai zama Fahimtar Harsuna da yawa (NER). Samfurin yana rarraba kalmomin rubutu bisa ga nau'in sunan sunan da suke cikin (sunaye masu dacewa, sunayen yanki, sunayen kuɗi, da sauransu). Sanya suna don sigar NER ta kwanan nan:

ner_ontonotes_bert_mult

Mun ƙaddamar da uwar garken REST tare da samfurin:

  1. Mun shigar da abin dogara samfurin da aka kayyade a cikin tsarin sa zuwa cikin mahalli mai aiki:
    python -m deeppavlov install ner_ontonotes_bert_mult
    
  2. Zazzage abubuwan ƙirar ƙira daga sabar DeepPavlov:
    python -m deeppavlov download ner_ontonotes_bert_mult
    

    Za a zazzage abubuwan da aka jera a cikin kundin gidan DeepPavlov, wanda aka samo ta tsohuwa

    ~/.deeppavlov

    Lokacin zazzagewa, zaton abubuwan da aka riga aka sauke ana duba su akan hashes na abubuwan da ke kan uwar garken. Idan akwai wasa, an tsallake zazzagewar kuma ana amfani da fayilolin da ke akwai. Girman abubuwan da aka zazzage na iya bambanta akan matsakaita daga 0.5 zuwa 8 Gb, a wasu lokuta suna kaiwa 20 Gb bayan cirewa.

  3. Mun ƙaddamar da uwar garken REST tare da samfurin:
    python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
    

Sakamakon aiwatar da wannan umarni, za a ƙaddamar da uwar garken REST tare da samfurin akan tashar jiragen ruwa 5005 na na'ura mai watsa shiri (tsohuwar tashar jiragen ruwa ita ce 5000).

Bayan ƙaddamar da ƙirar, Swagger tare da takaddun API da ikon gwadawa ana iya samun su a URL http://127.0.0.1:5005. Bari mu gwada samfurin ta hanyar aika shi zuwa ƙarshen ƙarshen http://127.0.0.1:5005/model Buƙatar POST tare da abubuwan JSON masu zuwa:

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

Don amsa ya kamata mu sami JSON mai zuwa:

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

Yin amfani da waɗannan misalan, za mu bincika DeepPavlov REST API.

API ɗin DeepPavlov

Kowane samfurin DeepPavlov yana da aƙalla hujjar shigarwa ɗaya. A cikin REST API, ana kiran gardama, sunayensu shine maɓallan ƙamus mai shigowa. A mafi yawan lokuta, hujjar ita ce rubutun da ake buƙatar sarrafa shi. Ana iya samun ƙarin bayani game da gardama da ƙima da ƙima suka dawo a cikin sashin MODELS na takaddun DeepPavlov

A cikin misali, an ƙaddamar da jerin kirtani biyu zuwa gardama x, kowannensu an ba shi alama daban. A cikin DeepPavlov, duk samfuran suna ɗaukar jerin abubuwan ƙima (batch) waɗanda aka sarrafa su da kansu.

Kalmar “batch” tana nufin fannin koyan inji kuma tana nufin ɗimbin ƙimar shigar da kai ta hanyar hanyar sadarwa na algorithm ko jijiya a lokaci guda. Wannan tsarin yana ba ku damar rage (sau da yawa mahimmanci) lokacin samfurin yana aiwatar da kashi ɗaya na tsari idan aka kwatanta da ƙimar ɗaya da aka wuce zuwa shigarwa daban. Amma sakamakon sarrafawa yana fitowa ne kawai bayan an sarrafa dukkan abubuwa. Sabili da haka, lokacin samar da tsari mai shigowa, zai zama dole don la'akari da saurin samfurin da lokacin aiki da ake buƙata don kowane abubuwan da ke cikin sa.

Idan akwai muhawara da yawa ga tsarin DeepPavlov, kowannensu yana karɓar nau'ikan dabi'u, kuma a cikin fitarwa samfurin koyaushe yana samar da nau'ikan amsoshi ɗaya. Abubuwan da ke cikin batch mai fita sune sakamakon sarrafa abubuwan da ke cikin batches masu shigowa tare da ma'auni iri ɗaya.

A cikin misalin da ke sama, sakamakon samfurin shine ya rushe kowane kirtani zuwa alamomi (kalmomi da alamomin rubutu) da kuma rarraba alamar dangane da mahaɗan mai suna (sunan ƙungiya, kuɗi) wanda yake wakilta. A halin yanzu model ner_ontonotes_bert_mult iya gane nau'ikan ƙungiyoyi 18 masu suna, ana iya samun cikakken bayanin a nan.

Sauran samfuran daga-da-akwatin ta DeepPavlov

Baya ga NER, ana samun waɗannan samfuran daga cikin akwatin a DeepPavlov a lokacin rubutawa:

Amsar Tambayar Rubutu

Amsa tambaya ga rubutun tare da guntun wannan rubutun. Tsarin tsari: squad_ru_bert_infer

Misali nema:

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

Sakamako:

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

Gane Zagi

Gano kasancewar cin mutunci ga wanda aka yi wa rubutun (a lokacin rubutawa - don Ingilishi kawai). Tsarin tsari: zagi_kaggle_conv_bert

Misali nema:


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

Sakamako:

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

Binciken Sentiment

Rarraba tunanin rubutu (tabbatacce, tsaka tsaki, korau). Tsarin tsari: rusentiment_elmo_twitter_cnn

Misali nema:

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

Sakamako:

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

Gane Fassarar Magana

Ƙayyade ko nassosi daban-daban guda biyu suna da ma'ana iri ɗaya. Tsarin tsari: tsaye_paraphraser_ha

nema:

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

Sakamako:

[
  [1],
  [0]
]

Jerin na yanzu na duk samfuran DeepPavlov na waje koyaushe ana iya samun su a nan.

ƙarshe

A cikin wannan labarin, mun saba da DeepPavlov API da wasu damar sarrafa rubutu na ɗakin karatu da aka bayar daga cikin akwatin. Ya kamata a la'akari da cewa ga kowane aikin NLP, za a sami sakamako mafi kyau lokacin horar da samfurin akan saitin bayanan da ya dace da yanki (yankin) na aikin. Bugu da ƙari, ko da ƙarin ƙira ba za a iya horar da su ba, bisa manufa, don kowane yanayi.

A cikin labarai masu zuwa za mu kalli ƙarin saitunan ɗakin karatu, ƙaddamar da DeepPavlov daga Docker, sannan za mu ci gaba zuwa samfuran horo. Kuma kar ka manta cewa DeepPavlov yana da taron – Yi tambayoyinku game da ɗakin karatu da samfura. Na gode da kulawar ku!

source: www.habr.com

Add a comment