DeepPavlov bakeng sa bahlahisi: #1 lisebelisoa tsa NLP le popo ea chatbot

Lumelang bohle! Re bula letoto la lingoliloeng tse etselitsoeng ho rarolla mathata a sebetsang a amanang le ts'ebetso ea puo ea tlhaho (Natural Language Processing kapa feela NLP) le ho theha liakhente tsa lipuisano (chatbots) re sebelisa laeborari ea mohloli o bulehileng. DeepPavlov, e ntseng e ntlafatsoa ke sehlopha sa rona ho MIPT Laboratory ea Neural Systems le Thuto e Tebileng. Sepheo se seholo sa letoto ke ho tsebisa DeepPavlov ho batho ba bangata ba ntlafatsang le ho bontša kamoo u ka rarollang mathata a NLP a sebelisitsoeng ntle le ho ba le tsebo e tebileng ea ho Ithuta Mochini le PhD ho Mathematics.

Mesebetsi ea NLP e kenyelletsa ho tseba maikutlo a sengoloa, ho arola mekhatlo e nang le mabitso, ho khetha hore na motho ea buisanang le eena o batla eng ho bot ea hau: odara pizza kapa u fumane lintlha tsa morao-rao, le tse ling tse ngata. U ka bala haholoanyane ka mesebetsi le mekhoa ea NLP mona.

Sehloohong sena, re tla u bontša mokhoa oa ho tsamaisa seva sa REST ka mefuta ea NLP e koetlisitsoeng pele, e ikemiselitseng ho sebelisoa ntle le tlhophiso kapa koetliso e eketsehileng.

DeepPavlov bakeng sa bahlahisi: #1 lisebelisoa tsa NLP le popo ea chatbot

Ho kenngoa ha DeepPavlov

Mona le ka tlase, litaelo tsa Linux li tla fanoa. Bakeng sa Windows, sheba rona litokomane

  • Theha le ho kenya tšebetsong tikoloho e fumanehang ka mofuta oa hajoale o tšehetsoeng oa Python:
    virtualelnv env -p python3.7
    source env/bin/activate
  • Kenya DeepPavlov sebakeng se fumanehang:
    pip install deeppavlov
    

Ho hlahisa seva sa REST ka mohlala oa DeepPavlov

Pele re qala seva ka mohlala oa DeepPavlov ka lekhetlo la pele, ho tla ba molemo ho bua ka likarolo tse ling tsa meralo ea laeborari.

Mofuta ofe kapa ofe ho DP o na le:

  • Python khoutu;
  • Likarolo tse ka jarolloang - liphetho tsa koetliso tse hlophisitsoeng ka data e ikhethileng (tse kenyellelitsoeng, boima ba marang-rang a neural, jj.);
  • Faele ea tlhophiso (eo ka mor'a moo e bitsoang config), e nang le tlhahisoleseling mabapi le lihlopha tse sebelisoang ke mohlala, li-URL tsa likarolo tse jarollotsoeng, litšepiso tsa Python, joalo-joalo.

Re tla u bolella ho eketsehileng ka se tlas'a hood ea DeepPavlov lihloohong tse latelang, kaha joale ho lekane hore re tsebe hore:

  • Mohlala ofe kapa ofe ho DeepPavlov o khetholloa ka lebitso la config ea oona;
  • Ho tsamaisa mohlala, o hloka ho jarolla likarolo tsa eona ho li-server tsa DeepPavlov;
  • Hape, ho tsamaisa mohlala, o hloka ho kenya lilaebrari tsa Python tseo o li sebelisang.

Moetso oa pele oo re tla o thakhola e tla ba Multilingual Named Entity Recognition (NER) ka lipuo tse ngata. Moetso o hlophisa mantsoe a mongolo ho latela mofuta oa mekhatlo e reheletsoeng eo e leng ho eona (mabitso a nepahetseng, mabitso a libaka, mabitso a lichelete le tse ling). Hlophisa lebitso la mofuta oa hajoale oa NER:

ner_ontonotes_bert_mult

Re qala seva sa REST ka mohlala:

  1. Re kenya litšepeho tsa mohlala tse boletsoeng ho tlhophiso ea eona tikolohong e sebetsang e sebetsang:
    python -m deeppavlov install ner_ontonotes_bert_mult
    
  2. Khoasolla likarolo tsa mofuta oa serialized ho tsoa ho li-server tsa DeepPavlov:
    python -m deeppavlov download ner_ontonotes_bert_mult
    

    Likarolo tsa serialized li tla kopitsoa bukeng ea lehae ea DeepPavlov, e fumanehang ka ho sa feleng

    ~/.deeppavlov

    Ha o khoasolla, hash ea likarolo tse seng li jarollotsoe e hlahlojoa khahlano le li-hashe tsa likarolo tse fumanehang ho seva. Haeba ho na le papali, download ea tloloa 'me lifaele tse teng lia sebelisoa. Bophahamo ba likarolo tse jarollotsoeng bo ka fapana ka karolelano ho tloha ho 0.5 ho isa ho 8 Gb, maemong a mang e fihla ho 20 Gb kamora ho notlolla.

  3. Re qala seva sa REST ka mohlala:
    python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
    

Ka lebaka la ho phethahatsa taelo ena, seva sa REST se nang le mohlala se tla hlahisoa boema-kepeng ba 5005 ba mochini o amohelang (sebaka sa kamehla ke 5000).

Kamora ho qala mohlala, Swagger e nang le litokomane tsa API le bokhoni ba ho etsa liteko li ka fumanoa ho URL http://127.0.0.1:5005. Ha re lekeng mohlala ka ho o romella pheletsong http://127.0.0.1:5005/model POST Kopo e nang le litaba tse latelang tsa JSON:

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

Ho arabela re lokela ho amohela JSON e latelang:

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

Re sebelisa mehlala ena, re tla sekaseka DeepPavlov REST API.

API DeepPavlov

Mohlala o mong le o mong oa DeepPavlov o na le bonyane khang e le 'ngoe ea ho kenya. Ho REST API, likhang li bitsoa, ​​mabitso a tsona ke linotlolo tsa bukantswe e kenang. Hangata, khang ke taba e ngotsoeng e lokelang ho sebetsoa. Lintlha tse ling mabapi le likhang le boleng bo khutlisitsoeng ke mehlala li ka fumanoa karolong ea MODELS ea litokomane DeepPavlov

Mohlala, lethathamo la likhoele tse peli le ile la fetisetsoa khang x, e 'ngoe le e 'ngoe ea tsona e fuoe markup e arohaneng. Ho DeepPavlov, mefuta eohle e nka lethathamo la litekanyetso (batch) la litekanyetso tse sebetsoang ka boithaopo.

Poleloana "batch" e bolela sebaka sa ho ithuta ka mochini mme e bua ka bongata ba litekanyetso tse ikemetseng tse kentsoeng ke algorithm kapa neural network ka nako e le 'ngoe. Mokhoa ona o u lumella ho fokotsa (hangata haholo) nako eo mohlala o sebetsanang le karolo e le 'ngoe ea sehlopha ha e bapisoa le boleng bo tšoanang bo fetiselitsoeng ho kenyelletsong ka thoko. Empa sephetho sa ts'ebetso se fanoa feela ka mor'a hore likarolo tsohle li sebetsoe. Ka hona, ha u hlahisa sehlopha se kenang, ho tla hlokahala ho ela hloko lebelo la mohlala le nako e hlokahalang ea ho sebetsa bakeng sa e 'ngoe le e' ngoe ea likarolo tsa eona ka bomong.

Haeba ho na le likhang tse 'maloa ho mohlala oa DeepPavlov, e' ngoe le e 'ngoe ea tsona e fumana litekanyetso tsa eona,' me ka tlhahiso ea mohlala kamehla o hlahisa sehlopha se le seng sa likarabo. Likarolo tsa sehlopha se tsoang ke liphetho tsa ho sebetsana le likarolo tsa lihlopha tse kenang ka index e tšoanang.

Mohlala o ka holimo, phello ea mohlala e ne e le ho senya khoele e 'ngoe le e' ngoe ka li-tokens (mantsoe le matšoao a matšoao) le ho arola letšoao le amanang le mokhatlo o bitsoang (lebitso la mokhatlo, chelete) oo o o emelang. Hona joale mohlala ner_ontonotes_bert_mult e khonang ho lemoha mefuta e 18 ea mekhatlo e nang le mabitso, tlhaloso e qaqileng e ka fumanoa mona.

Mefuta e meng e tsoang ka ntle ho lebokose ka DeepPavlov

Ntle le NER, mehlala e latelang e ka ntle ho lebokose e fumaneha ho DeepPavlov ka nako ea ho ngola:

Ho Araba Lipotso Tsa Mongolo

Araba potso ea mongolo ka sekhechana sa tema ena. Sebopeho sa mohlala: squad_ru_bert_infer

Kopo ea mohlala:

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

Sephetho:

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

Ho Fumana Nyeliso

Ho lemoha ho ba teng ha thohako ho motho eo temana e lebisitsoeng ho eena (ka nako ea ho ngola - feela bakeng sa Senyesemane). Sebopeho sa mohlala: insults_kaggle_conv_bert

Kopo ea mohlala:


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

Sephetho:

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

Tlhahlobo ea maikutlo

Tlhophiso ea maikutlo a mongolo (e ntle, e sa nke lehlakore, e mpe). Sebopeho sa mohlala: rusentiment_elmo_twitter_cnn

Kopo ea mohlala:

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

Sephetho:

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

Tlhaloso ea Paraphrase

Ho fumana hore na litemana tse peli tse fapaneng li na le moelelo o tšoanang. Sebopeho sa mohlala: stand_paraphraser_ru

Kopo:

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

Sephetho:

[
  [1],
  [0]
]

Lethathamo la hajoale la mefuta eohle ea DeepPavlov e tsoang kantle ho lebokose le ka fumaneha kamehla mona.

fihlela qeto e

Sehloohong sena, re ile ra tloaelana le DeepPavlov API le tse ling tsa bokhoni ba ho sebetsana le mongolo oa laeborari e fanoeng ka ntle ho lebokose. E lokela ho hopoloa hore bakeng sa mosebetsi ofe kapa ofe oa NLP, sephetho se setle ka ho fetisisa se tla finyelloa ha ho koetlisoa mohlala ho sete ea data e tsamaellanang le sebaka sa sehlooho (domain) sa mosebetsi. Ho feta moo, mehlala e mengata le ho feta e ke ke ea koetlisetsoa maemo ohle.

Lihloohong tse latelang re tla sheba litlhophiso tse eketsehileng tsa laeborari, ho qala DeepPavlov ho tloha Docker, ebe re fetela ho mehlala ea koetliso. Hape u se ke ua lebala hore DeepPavlov o na le eona foramo - botsa lipotso tsa hau mabapi le laeborari le mehlala. Kea leboha ha u mametse!

Source: www.habr.com

Eketsa ka tlhaloso