DeepPavlov no nā mea hoʻomohala: #1 NLP mea hana a me ka hana chatbot

Aloha kākou! Ke wehe nei mākou i nā ʻatikala i hoʻolaʻa ʻia i ka hoʻoponopono ʻana i nā pilikia kūpono e pili ana i ka hoʻoponopono ʻōlelo kūlohelohe (Natural Language Processing a i ʻole NLP wale nō) a me ka hoʻokumu ʻana i nā ʻelele kamaʻilio (chatbots) me ka hoʻohana ʻana i kahi waihona waihona open-source. DeepPavlov, i hoʻomohala ʻia e kā mākou hui ma ka MIPT Laboratory of Neural Systems and Deep Learning. ʻO ka pahuhopu nui o ka pūʻulu ka hoʻolauna ʻana iā DeepPavlov i kahi ākea o nā mea hoʻomohala a hōʻike pehea e hiki ai iā ʻoe ke hoʻoponopono i nā pilikia NLP i noi ʻia me ka ʻole o ka ʻike hohonu i ka Machine Learning a me ka PhD i ka Matematika.

ʻO nā hana NLP e pili ana i ka hoʻoholo ʻana i ka manaʻo o ka kikokikona, ka hoʻopaʻa ʻana i nā mea i kapa ʻia, ka hoʻoholo ʻana i ka mea a ka interlocutor e makemake ai mai kāu bot: kauoha i ka pizza a loaʻa i ka ʻike hope, a ʻoi aku ka nui. Hiki iā ʻoe ke heluhelu hou aʻe e pili ana i nā hana a me nā ala NLP maanei.

Ma kēia ʻatikala, e hōʻike mākou iā ʻoe pehea e holo ai i kahi kikowaena REST me nā hiʻohiʻona NLP i hoʻomaʻamaʻa mua ʻia, mākaukau e hoʻohana me ka ʻole o ka hoʻonohonoho ʻana a i ʻole ke aʻo ʻana.

DeepPavlov no nā mea hoʻomohala: #1 NLP mea hana a me ka hana chatbot

Hoʻokomo ʻia ʻo DeepPavlov

Ma ʻaneʻi a ma lalo, e hāʻawi ʻia nā ʻōlelo kuhikuhi no Linux. No Windows, e ʻike i kā mākou palapala

  • E hana a ho'ā i kahi kaiapuni virtual me ka mana kākoʻo o Python i kēia manawa:
    virtualelnv env -p python3.7
    source env/bin/activate
  • E hoʻouka iā DeepPavlov i kahi kaiapuni virtual:
    pip install deeppavlov
    

Ke hoʻomaka nei i kahi kikowaena REST me ka hiʻohiʻona DeepPavlov

Ma mua o ka hoʻomaka ʻana i kahi kikowaena me ka hiʻohiʻona DeepPavlov no ka manawa mua, pono e kamaʻilio e pili ana i kekahi mau hiʻohiʻona o ka hale waihona puke.

ʻO kēlā me kēia hiʻohiʻona ma DP he:

  • Code Python;
  • Nā ʻāpana hiki ke hoʻoiho - nā hopena hoʻomaʻamaʻa serialized ma nā ʻikepili kikoʻī (nā hoʻokomo ʻana, nā paona o nā neural network, etc.);
  • He faila hoʻonohonoho (i kapa ʻia ʻo ia ka config), aia ka ʻike e pili ana i nā papa i hoʻohana ʻia e ke kumu hoʻohālike, nā URL o nā mea i hoʻoiho ʻia, nā hilinaʻi Python, etc.

E haʻi hou aku mākou iā ʻoe e pili ana i ka mea ma lalo o ka puʻupuʻu o DeepPavlov ma nā ʻatikala aʻe, no kēia manawa ua lawa mākou e ʻike i kēlā:

  • ʻO kēlā me kēia kumu hoʻohālike ma DeepPavlov e ʻike ʻia e ka inoa o kāna config;
  • No ka holo ʻana i ke kumu hoʻohālike, pono ʻoe e hoʻoiho i kāna mau ʻāpana mai nā kikowaena DeepPavlov;
  • Eia kekahi, no ka holo ʻana i ke kumu hoʻohālike, pono ʻoe e hoʻokomo i nā hale waihona puke Python e hoʻohana ai.

ʻO ka hiʻohiʻona mua a mākou e hoʻomaka ai, ʻo ia ka ʻōlelo hoʻomaopopo ʻana i nā ʻano lehulehu (NER). Hoʻokaʻawale ke kumu hoʻohālike i nā huaʻōlelo e like me ke ʻano o nā mea i kapa ʻia (nā inoa kūpono, nā inoa ʻāina, nā inoa o nā kālā, a me nā mea ʻē aʻe). Hoʻopaʻa inoa no ka mana hou loa o NER:

ner_ontonotes_bert_mult

Hoʻomaka mākou i ka server REST me ke kumu hoʻohālike:

  1. Hoʻokomo mākou i nā hilinaʻi kumu hoʻohālike i ʻōlelo ʻia i loko o kāna config i loko o ke kaiapuni virtual hana:
    python -m deeppavlov install ner_ontonotes_bert_mult
    
  2. Hoʻoiho i nā ʻāpana hoʻohālike serialized mai nā kikowaena DeepPavlov:
    python -m deeppavlov download ner_ontonotes_bert_mult
    

    E hoʻoiho ʻia nā ʻāpana serialized i ka papa kuhikuhi home DeepPavlov, aia ma ka paʻamau

    ~/.deeppavlov

    I ka hoʻoiho ʻana, nānā ʻia ka hash o nā ʻāpana i hoʻoiho mua ʻia i nā hashes o nā ʻāpana i loaʻa ma ka kikowaena. Inā loaʻa kahi pāʻani, lele ʻia ka hoʻoiho a hoʻohana ʻia nā faila i loaʻa. Hiki ke ʻokoʻa ka nui o nā ʻāpana i hoʻoiho ʻia ma ka awelika mai ka 0.5 a i ka 8 Gb, i kekahi mau hihia a hiki i 20 Gb ma hope o ka wehe ʻana.

  3. Hoʻomaka mākou i ka server REST me ke kumu hoʻohālike:
    python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
    

Ma muli o ka hoʻokō ʻana i kēia kauoha, e hoʻokuʻu ʻia kahi kikowaena REST me kahi kumu hoʻohālike ma ke awa 5005 o ka mīkini hoʻokipa (ʻo 5000 ke awa paʻamau).

Ma hope o ka hoʻomaka ʻana i ke kumu hoʻohālike, ʻike ʻia ʻo Swagger me ka palapala API a me ka hiki ke hoʻāʻo ma ka URL http://127.0.0.1:5005. E hoʻāʻo kākou i ke kumu hoʻohālike ma ka hoʻouna ʻana iā ia i ka hopena http://127.0.0.1:5005/model Noi POST me kēia ʻike JSON:

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

I ka pane ʻana, pono mākou e loaʻa i kēia 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"]
  ]
]

Ke hoʻohana nei i kēia mau hiʻohiʻona, e nānā mākou i ka DeepPavlov REST API.

API DeepPavlov

Loaʻa i kēlā me kēia hiʻohiʻona DeepPavlov hoʻokahi hoʻopaʻapaʻa hoʻokomo. Ma ka REST API, ua kapa ʻia nā manaʻo hoʻopaʻapaʻa, ʻo ko lākou mau inoa nā kī o ka puke wehewehe. I ka hapanui o nā hihia, ʻo ka hoʻopaʻapaʻa ʻo ia ka kikokikona e pono e hoʻoponopono ʻia. Hiki ke loaʻa ka ʻike hou aku e pili ana i nā hoʻopaʻapaʻa a me nā waiwai i hoʻihoʻi ʻia e nā hiʻohiʻona ma ka ʻāpana MODELS o ka palapala. DeepPavlov

I ka laʻana, ua hāʻawi ʻia kahi papa inoa o nā kaula ʻelua i ka hoʻopaʻapaʻa x, ua hāʻawi ʻia kēlā me kēia mea i kahi māka kaʻawale. Ma DeepPavlov, lawe ʻia nā hiʻohiʻona a pau i kahi papa inoa (batch) o nā waiwai i hana kūʻokoʻa.

ʻO ka huaʻōlelo "batch" e pili ana i ke kula o ka mīkini aʻo a pili i kahi pūʻulu o nā waiwai hoʻokomo kūʻokoʻa i hana ʻia e kahi algorithm a i ʻole neural network i ka manawa like. ʻO kēia ala e hiki ai iā ʻoe ke hōʻemi (pinepine nui ʻia) i ka manawa e hana ai ke kumu hoʻohālike i hoʻokahi mea o ka pūʻulu i hoʻohālikelike ʻia me ka waiwai like i hāʻawi ʻia i ka mea hoʻokomo. Akā, hoʻopuka ʻia ka hopena o ka hoʻoili ʻana ma hope o ka hana ʻana o nā mea āpau. No laila, i ka wā e hana ai i kahi pūʻulu e hiki mai ana, pono e noʻonoʻo i ka wikiwiki o ke kumu hoʻohālike a me ka manawa hana e pono ai no kēlā me kēia o kāna mau mea ponoʻī.

Inā he nui nā manaʻo hoʻopaʻapaʻa i ka model DeepPavlov, loaʻa i kēlā me kēia o lākou kona pūʻulu waiwai ponoʻī, a ma ka hoʻopuka e hoʻopuka mau ke kumu hoʻohālike i hoʻokahi pūʻulu pane. ʻO nā mea o ka puʻupuʻu puka i nā hopena o ka hoʻoponopono ʻana i nā mea o nā pūʻulu e hiki mai ana me ka index hoʻokahi.

Ma ka la'ana i luna, 'o ka hopena o ke kŘkohu, 'o ia ka wawahi 'ana i kēlā me kēia kaula i mau hō'ailona (hua'ōlelo a me nā kaha kaha) a ho'oka'awale i ka hō'ailona e pili ana i ka hui i kapa 'ia (inoa hui, kālā) i hō'ike 'ia ai. I kēia manawa ke kumu hoʻohālike ner_ontonotes_bert_mult hiki iā ia ke ʻike i nā ʻano 18 o nā mea i kapa ʻia, hiki ke loaʻa kahi wehewehe kikoʻī maanei.

Nā hiʻohiʻona ʻē aʻe o waho o ka pahu e DeepPavlov

Ma waho aʻe o NER, loaʻa nā hiʻohiʻona o waho o ka pahu ma DeepPavlov i ka manawa kākau:

Pane i ka ninau kikokikona

E pane i ka nīnau i ka kikokikona me kahi ʻāpana o kēia kikokikona. Ke kumu hoʻohālike: squad_ru_bert_infer

Noi laʻana:

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

Hualoaʻa:

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

ʻIke ʻino

ʻO ka ʻike ʻana i ke ʻano o ka hōʻino ʻana i ke kanaka i kamaʻilio ʻia ai ka kikokikona (i ka manawa kākau - no ka ʻōlelo Pelekania wale nō). Ke kumu hoʻohālike: insults_kaggle_conv_bert

Noi laʻana:


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

Hualoaʻa:

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

Palapala ʻaʻano

Ka hoʻokaʻawale ʻana o ka manaʻo kikokikona (maikaʻi, kū ʻole, ʻinoʻino). Ke kumu hoʻohālike: rusentiment_elmo_twitter_cnn

Noi laʻana:

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

Hualoaʻa:

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

ʻImi ʻōlelo hoʻohālikelike

ʻO ka hoʻoholo ʻana inā he like ke ʻano o nā kikokikona ʻelua. Ke kumu hoʻohālike: stand_paraphraser_en

Noi:

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

Hualoaʻa:

[
  [1],
  [0]
]

Hiki ke loaʻa mau ka papa inoa o nā hiʻohiʻona DeepPavlov waho o ka pahu maanei.

hopena

Ma kēia ʻatikala, ua kamaʻāina mākou i ka DeepPavlov API a me kekahi o nā mana hoʻoponopono kikokikona o ka waihona i hāʻawi ʻia ma waho o ka pahu. Pono e hoʻomanaʻo ʻia no kēlā me kēia hana NLP, e loaʻa ka hopena maikaʻi loa i ke aʻo ʻana i ke kumu hoʻohālike ma kahi hoʻonohonoho ʻikepili e pili ana i ke kumuhana kumuhana (domain) o ka hana. Eia kekahi, ʻoi aku ka nui o nā hiʻohiʻona ʻaʻole hiki ke aʻo ʻia no nā kūlana āpau.

Ma nā ʻatikala aʻe e nānā mākou i nā hoʻonohonoho hou o ka hale waihona puke, e hoʻokuʻu ana iā DeepPavlov mai Docker, a laila e neʻe mākou i nā kumu hoʻomaʻamaʻa. A mai poina iā DeepPavlov ka hui - e nīnau i kāu mau nīnau e pili ana i ka waihona a me nā hiʻohiʻona. Mahalo i kou nānā ʻana!

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka