DeepPavlov mo tagata atiaʻe: #1 NLP meafaigaluega ma talatalanoaga fatuina

Talofa uma! O loʻo matou tatalaina se faasologa o tala faʻapitoa e foia ai faʻafitauli faʻapitoa e fesoʻotaʻi ma le faʻaogaina o le gagana faʻale-natura (Natural Language Processing poʻo le NLP) ma le fatuina o faʻasalalauga faʻatalanoaga (chatbots) e faʻaaoga ai se faletusi tatala. DeepPavlov, lea o loʻo atiaʻe e la matou 'au i le MIPT Laboratory of Neural Systems and Deep Learning. O le sini autu o le faasologa o le faʻalauiloaina lea o DeepPavlov i le tele o atinaʻe ma faʻaalia le auala e mafai ai ona e foia faʻafitauli NLP faʻaaogaina e aunoa ma le loloto o le malamalama i le Machine Learning ma le PhD i le Matematika.

O galuega a le NLP e aofia ai le fuafuaina o lagona o le tusitusiga, faʻavasega igoa o faʻalapotopotoga, fuafua mea e manaʻo ai le tagata faʻafesoʻotaʻi mai lau bot: oka pizza pe maua faʻamatalaga faʻamatalaga, ma sili atu. E mafai ona e faitau atili e uiga i galuega ma metotia NLP iinei.

I lenei tusiga, matou te faʻaali atu ia te oe le faʻaogaina o se REST server ma faʻataʻitaʻiga NLP muaʻi aʻoaʻoina, sauni e faʻaoga e aunoa ma se faʻaopoopoga poʻo se aʻoaʻoga.

DeepPavlov mo tagata atiaʻe: #1 NLP meafaigaluega ma talatalanoaga fatuina

Fa'atuina o DeepPavlov

O iinei ma lalo, o faʻatonuga mo Linux o le a tuʻuina atu. Mo Windows, va'ai la matou fa'amaumauga

  • Fausia ma fa'agaoioia se si'osi'omaga fa'apitoa fa'atasi ai ma le lomiga o lo'o lagolagoina nei o le Python:
    virtualelnv env -p python3.7
    source env/bin/activate
  • Faʻapipiʻi DeepPavlov i se siosiomaga faʻapitoa:
    pip install deeppavlov
    

Tatalaina se server REST ma le faʻataʻitaʻiga DeepPavlov

Ae tatou te leʻi faʻalauiloaina se 'auʻaunaga ma le DeepPavlov faʻataʻitaʻiga mo le taimi muamua, o le a aoga le talanoa e uiga i nisi o vaega o le fausaga faletusi.

So'o se fa'ata'ita'iga ile DP e aofia ai:

  • Python code;
  • Vaega e mafai ona sii mai - fa'asologa fa'asologa o a'oa'oga i fa'amaumauga fa'apitoa (fa'apipi'i, mamafa o feso'ota'iga neural, ma isi);
  • O se faila faʻatulagaina (o loʻo taʻua mulimuli ane o le config), o loʻo i ai faʻamatalaga e uiga i vasega o loʻo faʻaaogaina e le faʻataʻitaʻiga, URL o vaega na sii mai, Python faʻalagolago, ma isi.

O le a matou faʻamatalaina atili e uiga i mea o loʻo i lalo o le pulou o DeepPavlov i tala o loʻo mulimuli mai, mo le taimi nei ua lava mo i matou e iloa ai:

  • Soʻo se faʻataʻitaʻiga i DeepPavlov e iloa i le igoa o lona config;
  • Ina ia faʻataʻitaʻiina le faʻataʻitaʻiga, e tatau ona e sii maia ona vaega mai le DeepPavlov servers;
  • E le gata i lea, e faʻataʻitaʻi le faʻataʻitaʻiga, e tatau ona e faʻapipiʻi le Python faletusi o loʻo faʻaaogaina.

O le fa'ata'ita'iga muamua o le a matou fa'alauiloaina o le a fa'aigoaina Fa'aigoaina Fa'aigoaina (NER). O le fa'ata'ita'iga e fa'avasegaina upu tusitusia e tusa ai ma le ituaiga o fa'aigoa igoa o lo'o i ai (igoa talafeagai, igoa fa'afanua, igoa o tupe, ma isi). Su'ega igoa mo le lomiga lata mai nei o le NER:

ner_ontonotes_bert_mult

Matou te faʻalauiloaina le REST server ma le faʻataʻitaʻiga:

  1. Matou te faʻapipiʻiina le faʻalagolago i faʻataʻitaʻiga o loʻo faʻamaoti mai i lona config i totonu o le siʻosiʻomaga faʻamalosi tino:
    python -m deeppavlov install ner_ontonotes_bert_mult
    
  2. La'u maia vaega fa'ata'ita'i fa'asologa mai 'au'aunaga DeepPavlov:
    python -m deeppavlov download ner_ontonotes_bert_mult
    

    O vaega fa'asologa o le a la'uina i lalo i le DeepPavlov home directory, lea o lo'o i ai ona o le faaletonu

    ~/.deeppavlov

    Pe a sii mai, o le hash o vaega ua uma ona sii mai e siaki e faasaga i hash o vaega o loʻo i luga o le server. Afai e iai se fetaui, e misi le download ma faʻaaoga faila o loʻo iai. Ole lapopoa o vaega na sii mai e mafai ona fesuisuiai ile averesi mai le 0.5 i le 8 Gb, i nisi tulaga e oʻo atu i le 20 Gb pe a uma ona tatala.

  3. Matou te faʻalauiloaina le REST server ma le faʻataʻitaʻiga:
    python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
    

O se taunuuga o le faʻatinoina o lenei faʻatonuga, o le REST server ma se faʻataʻitaʻiga o le a faʻalauiloaina i luga o le taulaga 5005 o le masini talimalo (o le faʻaogaina o le taulaga o le 5000).

A maeʻa ona amataina le faʻataʻitaʻiga, Swagger ma faʻamaumauga API ma le mafai ona suʻeina e mafai ona maua ile URL http://127.0.0.1:5005. Se'i o tatou fa'ata'ita'i le fa'ata'ita'iga e ala ile tu'u atu ile pito http://127.0.0.1:5005/model POST talosaga fa'atasi ai ma le anotusi JSON nei:

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

I le tali e tatau ona tatou mauaina le JSON nei:

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

I le faʻaaogaina o nei faʻataʻitaʻiga, o le a matou suʻesuʻeina le DeepPavlov REST API.

API DeepPavlov

O fa'ata'ita'iga DeepPavlov ta'itasi e iai a itiiti ifo ma le tasi le finauga fa'aulu. I le REST API, ua faaigoa ai finauga, o latou igoa o ki o le lomifefiloi o sau. I le tele o tulaga, o le finauga o le tusitusiga e manaʻomia ona faʻatautaia. O nisi faʻamatalaga e uiga i finauga ma tulaga taua na toe faʻafoʻi mai e faʻataʻitaʻiga e mafai ona maua i le vaega MODELS o faʻamaumauga DeepPavlov

I le faʻataʻitaʻiga, o se lisi o manoa e lua na tuʻuina atu i le finauga x, o ia mea na tuʻuina atu i ai faʻailoga eseese. I DeepPavlov, o faʻataʻitaʻiga uma e faʻaaogaina se lisi (vaega) o tau o loʻo faʻatinoina tutoatasi.

O le faaupuga "batch" e faʻatatau i le matata o le aʻoaʻoina o masini ma e faʻatatau i se vaega o tuʻufaʻatasiga tutoʻatasi tau faʻaogaina e faʻatautaia e se algorithm poʻo se neural network i le taimi e tasi. O lenei faiga e mafai ai e oe ona faʻaitiitia (masani tele) le taimi e faʻatino ai e le faʻataʻitaʻiga se tasi elemene o se vaega faʻatusatusa i le tau tutusa na tuʻuina atu i le faʻaoga eseese. Ae o le taunuuga o le gaioiga e tuʻuina atu pe a maeʻa uma elemene uma. O le mea lea, pe a faʻatupuina se vaega o loʻo oʻo mai, e tatau ona amanaʻia le saoasaoa o le faʻataʻitaʻiga ma le taimi e manaʻomia ai le gaioiga mo ona elemene taʻitasi.

Afai e tele ni finauga i le DeepPavlov fa'ata'ita'iga, e maua e i latou ta'ito'atasi a latou lava vaega taua, ma i le fa'atinoga o le fa'ata'ita'iga e maua mai ai i taimi uma le tasi vaega o tali. O elemene o le vaega o loʻo alu i fafo o taunuʻuga ia o le faʻaogaina o elemene o vaega o loʻo oʻo mai ma le faasino igoa tutusa.

I le faʻataʻitaʻiga o loʻo i luga, o le taunuuga o le faʻataʻitaʻiga o le talepeina lea o manoa taʻitasi i faʻailoga (upu ma faʻailoga) ma faʻavasega le faʻailoga e fesoʻotaʻi ma le faʻaigoa igoa (igoa faʻalapotopotoga, tupe) o loʻo faʻatusalia. I le taimi nei o le faʻataʻitaʻiga ner_ontonotes_bert_mult mafai ona iloa 18 ituaiga o igoa faʻapitoa, e mafai ona maua se faʻamatalaga auiliili iinei.

O isi fa'ata'ita'iga i fafo atu o le pusa na saunia e DeepPavlov

I le faʻaopoopoga i le NER, o faʻataʻitaʻiga o loʻo i fafo o le pusa o loʻo maua i DeepPavlov i le taimi o le tusitusi:

Taliina o Fesili i Tusitusiga

Tali le fesili i le tusitusiga i se vaega o lenei tusitusiga. Fa'ata'ita'iga fa'atusa: squad_ru_bert_infer

Fa'ata'ita'iga talosaga:

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

Taunuʻuga:

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

Su'esu'ega Fa'aleaga

Su'esu'eina o le i ai o se fa'alumaina i le tagata o lo'o fa'asino i ai le tusitusiga (i le taimi o le tusitusi - na'o le Igilisi). Fa'ata'ita'iga fa'atusa: insults_kaggle_conv_bert

Fa'ata'ita'iga talosaga:


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

Taunuʻuga:

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

Manatu Iloiloga

Fa'avasegaina o lagona o tusitusiga (lelei, fa'aituau, leaga). Fa'ata'ita'iga fa'atusa: rusentiment_elmo_twitter_cnn

Fa'ata'ita'iga talosaga:

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

Taunuʻuga:

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

Su'esu'ega Fa'amatala

Fuafuaina pe tutusa le uiga o tusitusiga eseese e lua. Fa'ata'ita'iga fa'atusa: stand_paraphraser_en

Talosaga:

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

Taunuʻuga:

[
  [1],
  [0]
]

O le lisi o loʻo iai nei o faʻataʻitaʻiga DeepPavlov i fafo atu o le pusa e mafai ona maua i taimi uma iinei.

iʻuga

I totonu o lenei tusiga, na matou masani i le DeepPavlov API ma nisi o mea e mafai ona faʻaogaina ai tusitusiga o le faletusi na tuʻuina atu mai le pusa. E tatau ona manatua mo soʻo se galuega a le NLP, o le a maua le iʻuga sili pe a aʻoaʻoina le faʻataʻitaʻiga i luga o se seti faʻamaumauga e fetaui ma le mataupu autu (domain) o le galuega. E le gata i lea, e sili atu faʻataʻitaʻiga e le mafai, i le mataupu faavae, ona aʻoaʻoina mo tulaga uma.

I tala o loʻo mulimuli mai o le a tatou vaʻavaʻai i faʻaopoopoga faʻaopoopo o le faletusi, faʻalauiloa DeepPavlov mai Docker, ona tatou agai atu lea i faʻataʻitaʻiga aʻoaʻoga. Ma aua neʻi galo o loʻo i ai DeepPavlov le fonotaga - fai au fesili e uiga i le faletusi ma faʻataʻitaʻiga. Faafetai mo lou gauai mai!

puna: www.habr.com

Faaopoopo i ai se faamatalaga