DeepPavlov maka ndị mmepe: ngwaọrụ #1 NLP na okike chatbot

Ndewo, unu niile! Anyị na-emepe usoro edemede ewepụtara iji dozie nsogbu ndị bara uru metụtara nhazi asụsụ okike (Nhazi Asụsụ Eke ma ọ bụ naanị NLP) yana mepụta ndị nnọchi anya mkparịta ụka (chatbots) site na iji ọba akwụkwọ mepere emepe. Deeplov, nke ndị otu anyị na-emepụta na MIPT Laboratory of Neural Systems and Deep Learning. Ebumnuche bụ isi nke usoro a bụ ịmebata DeepPavlov n'ọtụtụ ndị mmepe ma gosipụta otu ị ga-esi dozie nsogbu NLP etinyere na-enweghị ihe ọmụma miri emi na Machine Learning na PhD na Mathematics.

Ọrụ NLP gụnyere ịchọpụta mmetụta nke ederede, ịkọwapụta aha aha, ikpebi ihe onye na-emekọrịta ihe chọrọ n'aka bot gị: tụọ pizza ma ọ bụ nweta ozi ndabere na ọtụtụ ndị ọzọ. Ị nwere ike ịgụkwu gbasara ọrụ na ụzọ NLP ebe a.

N'isiokwu a, anyị ga-egosi gị otu esi agba ọsọ REST nke nwere ụdị NLP a zụrụ azụ, dị njikere iji na-enweghị nhazi ma ọ bụ ọzụzụ ọ bụla.

DeepPavlov maka ndị mmepe: ngwaọrụ #1 NLP na okike chatbot

Ntinye nke DeepPavlov

N'ebe a na n'okpuru, a ga-enye ntụziaka maka Linux. Maka Windows, lee anyị akwụkwọ

  • Mepụta ma rụọ ọrụ mebere gburugburu site na iji ụdị Python akwado ugbu a:
    virtualelnv env -p python3.7
    source env/bin/activate
  • Wụnye DeepPavlov na mpaghara mebere:
    pip install deeppavlov
    

Iji ụdị DeepPavlov wepụta sava REST

Tupu anyị amalite ihe nkesa na ụdị DeepPavlov maka oge mbụ, ọ ga-aba uru ikwu banyere ụfọdụ atụmatụ nke ụlọ akwụkwọ ọbá akwụkwọ.

Ụdị ọ bụla na DP nwere:

  • Koodu Python;
  • Ihe ndị a na-ebudata - nsonaazụ ọzụzụ usoro na data akọwapụtara (ihe ntinye, nha nke netwọkụ akwara, wdg);
  • Faịlụ nhazi (nke a na-akpọ config), nke nwere ozi gbasara klaasị nke ụdị ahụ na-eji, URL nke akụrụngwa ebudatara, ndabere Python, wdg.

Anyị ga-agwa gị ihe ndị ọzọ banyere ihe dị n'okpuru mkpuchi nke DeepPavlov n'isiokwu ndị na-esonụ, n'ihi na ugbu a, ọ ga-ezuru anyị ịmata na:

  • A na-amata ụdị ọ bụla dị na DeepPavlov site na aha nhazi ya;
  • Iji mee ihe nlereanya ahụ, ịkwesịrị ibudata ihe mejupụtara ya na sava DeepPavlov;
  • Ọzọkwa, iji mee ihe nlereanya ahụ, ịkwesịrị ịwụnye ọba akwụkwọ Python ọ na-eji.

Nlereanya mbụ anyị ga-ewepụta ga-abụ nnabata ọtụtụ asụsụ akpọrọ aha (NER). Ihe nlereanya a na-ekewa mkpụrụokwu ederede dabere n'ụdị ụlọ ọrụ akpọrọ aha (aha kwesịrị ekwesị, aha mpaghara, aha ego, na ndị ọzọ). Hazie aha maka ụdị NER kacha ọhụrụ ugbu a:

ner_ontonotes_bert_mult

Anyị na-eji ihe nlereanya ahụ malite ihe nkesa REST:

  1. Anyị na-etinye ndabere ihe nlereanya akọwapụtara na nhazi ya n'ime ebe mebere arụ ọrụ:
    python -m deeppavlov install ner_ontonotes_bert_mult
    
  2. Budata ihe nlere anya n'usoro sitere na sava DeepPavlov:
    python -m deeppavlov download ner_ontonotes_bert_mult
    

    A ga-ebudata ihe ndị ahụ serialized na ndekọ ụlọ DeepPavlov, nke dị na ndabara

    ~/.deeppavlov

    Mgbe ị na-ebudata, a na-enyocha hash nke akụrụngwa ebudatara na hashes nke akụrụngwa dị na sava ahụ. Ọ bụrụ na enwere egwuregwu, a na-amafe nbudata ahụ, a na-eji faịlụ ndị dị adị. Ogo nke ngwa ebudatara nwere ike ịdịgasị iche na nkezi site na 0.5 ruo 8 Gb, n'ọnọdụ ụfọdụ na-eru 20 Gb mgbe ịmepechara ya.

  3. Anyị na-ebupụta ihe nkesa REST nwere ụdị:
    python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
    

N'ihi imezu iwu a, a ga-ewepụta ihe nkesa REST nwere ihe nlereanya na ọdụ ụgbọ mmiri 5005 nke igwe nnabata (ọdụ ụgbọ mmiri bụ 5000).

Mgbe ịmalitechara ihe nlereanya ahụ, Swagger nwere akwụkwọ API yana ikike ịnwale na URL http://127.0.0.1:5005. Ka anyị nwalee ihe nlereanya site na izipu ya na njedebe http://127.0.0.1:5005/model Arịrịọ POST nwere ọdịnaya JSON ndị a:

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

Na nzaghachi anyị kwesịrị ịnata JSON ndị a:

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

Iji ihe atụ ndị a, anyị ga-enyocha DeepPavlov REST API.

API DeepPavlov

Ụdị DeepPavlov ọ bụla nwere opekata mpe otu arụmụka ntinye. Na REST API, a na-akpọ arụmụka, aha ha bụ igodo nke akwụkwọ ọkọwa okwu na-abata. Ọtụtụ mgbe, arụmụka bụ ederede nke kwesịrị ịhazi ya. Enwere ike ịhụ ozi ndị ọzọ gbasara arụmụka na ụkpụrụ nke ụdị weghachiri eweghachi na ngalaba MODELS nke akwụkwọ ahụ Deeplov

N'ihe atụ, ndepụta nke eriri abụọ ka agafere na arụmụka x, nke ọ bụla n'ime ha nyere akara dị iche iche. Na DeepPavlov, ụdị niile na-ewere dị ka ndenye ndepụta (batch) nke ụkpụrụ ndị a na-ahazi n'onwe ha.

Okwu "batch" na-ezo aka na ngalaba mmụta igwe ma na-ezo aka na batch nke ụkpụrụ ntinye onwe ya nke algọridim ma ọ bụ netwọk neural na-ahazi n'otu oge. Usoro a na-enye gị ohere ibelata (na-abụkarị nke ukwuu) oge ihe nlereanya ahụ na-ahazi otu akụkụ nke otu ogbe ma e jiri ya tụnyere otu uru a gafere na ntinye iche. Ma a na-enye nsonaazụ nhazi naanị mgbe emechara ihe niile. Ya mere, mgbe ị na-emepụta batch na-abata, ọ ga-adị mkpa iburu n'uche ọsọ nke ihe nlereanya ahụ na oge nhazi achọrọ maka ihe ọ bụla nke ya.

Ọ bụrụ na e nwere ọtụtụ arụmụka na ụdị DeepPavlov, onye ọ bụla n'ime ha na-enweta ụkpụrụ nke ya, na mmepụta ihe nlereanya ahụ na-emepụta otu azịza. Ihe ndị dị na batch na-apụ apụ bụ nsonaazụ nke nhazi ihe nke batches na-abata na otu ndeksi.

N'ihe atụ a dị n'elu, ihe si na ihe nlereanya ahụ pụta bụ ịkụda eriri nke ọ bụla n'ime akara (okwu na akara edemede) wee kewaa akara n'ihe metụtara aha (aha nzukọ, ego) nke ọ na-anọchi anya ya. Ugbu a ihe nlereanya ner_ontonotes_bert_mult nwere ike ịmata ụdị ụlọ ọrụ 18 aha, enwere ike ịchọta nkọwa zuru ezu ebe a.

Ụdị ndị ọzọ na-adịghị na igbe nke DeepPavlov

Na mgbakwunye na NER, ụdị ndị a na-esi na igbe dị na DeepPavlov n'oge ederede:

Azịza ajụjụ ederede

Jiri iberibe ederede zaa ajụjụ a na ederede. Nhazi ụdị: squad_ru_bert_infer

Arịrịọ ihe atụ:

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

Nsonaazụ:

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

Nchọpụta mkparị

Nchọpụta nke ọnụnọ nke mkparị nye onye a na-edegara ederede (n'oge ederede - naanị maka Bekee). Nhazi ụdị: insults_kaggle_conv_bert

Arịrịọ ihe atụ:


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

Nsonaazụ:

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

Analysis Sentiment

Nhazi nke mmetụta ederede (nke ọma, nnọpụiche, adịghị mma). Nhazi ụdị: rusentiment_elmo_twitter_cnn

Arịrịọ ihe atụ:

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

Nsonaazụ:

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

Nchọpụta nkọwapụta

Na-ekpebi ma ederede abụọ dị iche iche nwere otu ihe ọ pụtara. Nhazi ụdị: guzo_paraphraser_ru

Arịrịọ:

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

Nsonaazụ:

[
  [1],
  [0]
]

Enwere ike ịchọta ndepụta nke ụdị DeepPavlov niile dị ugbu a ebe a.

nkwubi

N'isiokwu a, anyị maara nke ọma na DeepPavlov API na ụfọdụ ikike nhazi ederede nke ọbá akwụkwọ nyere site na igbe. Ekwesiri iburu n'uche na maka ọrụ NLP ọ bụla, a ga-enweta nsonaazụ kacha mma mgbe ị na-azụ ihe nlereanya na nhazi data kwekọrọ na mpaghara isiokwu (ngalaba) nke ọrụ ahụ. Na mgbakwunye, ọbụna ụdịdị ndị ọzọ enweghị ike, n'ụkpụrụ, a zụrụ maka ọnọdụ niile.

N'isiokwu ndị na-esonụ, anyị ga-eleba anya na ntọala ndị ọzọ nke ụlọ akwụkwọ ahụ, na-ebupụta DeepPavlov site na Docker, mgbe ahụ anyị ga-aga n'ihu na ụdị ọzụzụ. Ma echefula na DeepPavlov nwere ngbako ahu - jụọ ajụjụ gị gbasara ọba akwụkwọ na ụdị. Daalụ maka itinye uche gị!

isi: www.habr.com

Tinye a comment