Hi uile! Tha sinn a’ fosgladh sreath de dh’ artaigilean a tha coisrigte ri bhith a’ fuasgladh dhuilgheadasan practaigeach co-cheangailte ri giullachd cànain nàdarrach (Gnìomh Cànain Nàdarra no dìreach NLP) agus a’ cruthachadh riochdairean còmhraidh (chatbots) a’ cleachdadh leabharlann stòr fosgailte.
Tha gnìomhan NLP a’ toirt a-steach a bhith a’ dearbhadh faireachdainn an teacsa, a’ parsadh bhuidhnean ainmichte, a’ dearbhadh dè a tha an neach-conaltraidh ag iarraidh bhon bhot agad: òrdaich piotsa no faigh cùl-fhiosrachadh, agus mòran a bharrachd. Faodaidh tu barrachd a leughadh mu ghnìomhan agus dhòighean NLP
San artaigil seo, seallaidh sinn dhut mar a ruitheas tu frithealaiche REST le modalan NLP ro-thrèanadh, deiseil airson a chleachdadh gun rèiteachadh no trèanadh a bharrachd.
Stàladh Deep Pavlov
An seo agus gu h-ìosal, thèid stiùireadh airson Linux a thoirt seachad. Airson Windows, faic ar
- Cruthaich agus cuir an gnìomh àrainneachd bhrìgheil leis an dreach làithreach de Python le taic:
virtualelnv env -p python3.7 source env/bin/activate
- Stàlaich DeepPavlov ann an àrainneachd bhrìgheil:
pip install deeppavlov
A 'cur air bhog frithealaiche REST leis a' mhodail DeepPavlov
Mus cuir sinn air bhog frithealaiche leis a 'mhodail DeepPavlov airson a' chiad uair, bidh e feumail bruidhinn mu chuid de fheartan ailtireachd an leabharlainn.
Tha modail sam bith ann an DP air a dhèanamh suas de:
- còd Python;
- Co-phàirtean a ghabhas luchdachadh a-nuas - toraidhean trèanaidh sreathach air dàta sònraichte (bun-stèidh, cuideaman lìonraidhean neural, msaa);
- Faidhle rèiteachaidh (ris an canar an config an-seo), anns a bheil fiosrachadh mu na clasaichean a chleachdas am modail, URLan de phàirtean a chaidh a luchdachadh sìos, eisimeileachd Python, msaa.
Innsidh sinn barrachd dhut mu na tha fo chochall DeepPavlov anns na h-artaigilean a leanas, airson a-nis tha e gu leòr dhuinn fios a bhith agad:
- Tha modail sam bith ann an DeepPavlov air a chomharrachadh leis an ainm a config;
- Gus am modail a ruith, feumaidh tu na co-phàirtean aige a luchdachadh sìos bho na frithealaichean DeepPavlov;
- Cuideachd, gus am modail a ruith, feumaidh tu na leabharlannan Python a chleachdas e a stàladh.
Bidh a’ chiad mhodail a chuireas sinn air bhog mar Aithneachadh Aonad Ainmichte ioma-chànanach (NER). Bidh am modail a’ seòrsachadh fhaclan teacsa a rèir an t-seòrsa de bhuidhnean ainmichte dham buin iad (ainmean ceart, ainmean cruinn-eòlasach, ainmean airgeadan, agus feadhainn eile). Ainm rèiteachaidh airson an dreach as ùire de NER:
ner_ontonotes_bert_mult
Bidh sinn a’ cur air bhog am frithealaiche REST leis a’ mhodail:
- Bidh sinn a’ stàladh na h-eisimeileachd modail a tha air an sònrachadh san rèiteachadh aige a-steach don àrainneachd bhrìgheil ghnìomhach:
python -m deeppavlov install ner_ontonotes_bert_mult
- Luchdaich sìos co-phàirtean modail sreathach bho luchd-frithealaidh DeepPavlov:
python -m deeppavlov download ner_ontonotes_bert_mult
Thèid na pàirtean sreathach a luchdachadh sìos gu eòlaire dachaigh DeepPavlov, a tha stèidhichte gu bunaiteach
~/.deeppavlov
Nuair a bhios tu a’ luchdachadh sìos, thèid an hash de cho-phàirtean a chaidh a luchdachadh sìos mu thràth a sgrùdadh an aghaidh hashes nan co-phàirtean a tha suidhichte air an fhrithealaiche. Ma tha maids ann, thèid an luchdachadh sìos a leum agus thèid na faidhlichean a tha ann mu thràth a chleachdadh. Faodaidh meudan phàirtean a chaidh a luchdachadh sìos atharrachadh gu cuibheasach bho 0.5 gu 8 Gb, ann an cuid de chùisean a’ ruighinn 20 Gb às deidh an unzipping.
- Bidh sinn a’ cur air bhog am frithealaiche REST leis a’ mhodail:
python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
Mar thoradh air an àithne seo a chuir an gnìomh, thèid frithealaiche REST le modail a chuir air bhog air port 5005 den inneal aoigheachd (is e am port bunaiteach 5000).
Às deidh dhut am modail a thòiseachadh, lorgar Swagger le sgrìobhainnean API agus an comas deuchainn aig an URL http://127.0.0.1:5005
. Feuch an dèan sinn deuchainn air a’ mhodail le bhith ga chuir chun phuing crìochnachaidh http://127.0.0.1:5005/model
Iarrtas POST leis an t-susbaint JSON a leanas:
{
"x": [
"В МФТИ можно добраться на электричке с Савёловского Вокзала.",
"В юго-западной Руси стог жита оценен в 15 гривен"
]
}
Mar fhreagairt bu chòir dhuinn an JSON a leanas fhaighinn:
[
[
["В", "МФТИ", "можно", "добраться", "на", "электричке", "с", "Савёловского", "Вокзала", "."],
["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"]
]
]
A’ cleachdadh nan eisimpleirean sin, nì sinn mion-sgrùdadh air an DeepPavlov REST API.
API DeepPavlov
Tha co-dhiù aon argamaid inntrigidh aig gach modail DeepPavlov. Anns an REST API, tha argamaidean air an ainmeachadh, is e na h-ainmean aca iuchraichean an fhaclair a tha a’ tighinn a-steach. Anns a 'mhòr-chuid de chùisean, is e an argamaid an teacsa a dh'fheumar a phròiseasadh. Gheibhear tuilleadh fiosrachaidh mu argamaidean agus luachan air an tilleadh le modailean anns an earrann MODELS de na sgrìobhainnean
Anns an eisimpleir, chaidh liosta de dhà shreath a chuir gu argamaid x, agus chaidh comharradh fa leth a thoirt do gach fear dhiubh. Ann an DeepPavlov, bidh a h-uile modal a ’toirt a-steach liosta (batch) de luachan a tha air an giullachd gu neo-eisimeileach.
Tha am facal “batch” a’ toirt iomradh air raon ionnsachadh innealan agus a’ toirt iomradh air baidse de luachan cuir a-steach neo-eisimeileach air an giullachd le algairim no lìonra neural aig an aon àm. Leigidh an dòigh-obrach seo leat an ùine a bhios am modail a’ pròiseasadh aon eileamaid de bhaidse a lughdachadh (gu tric gu mòr) an coimeas ris an aon luach a chaidh a thoirt don chur-a-steach fa leth. Ach chan eil an toradh giollachd air a thoirt seachad ach às deidh na h-eileamaidean uile a bhith air an giullachd. Mar sin, nuair a bhios tu a 'cruthachadh baidse a tha a' tighinn a-steach, feumar aire a thoirt do astar a 'mhodail agus an ùine giollachd a tha a dhìth airson gach aon de na h-eileamaidean fa leth aige.
Ma tha grunn argamaidean ann airson modal DeepPavlov, gheibh gach fear dhiubh a bhaidse fhèin de luachan, agus aig an toradh bidh am modail an-còmhnaidh a ’toirt a-mach aon bhaidse de fhreagairtean. Tha na h-eileamaidean den bhaidse a tha a’ dol a-mach mar thoradh air a bhith a’ giullachd nan eileamaidean de na batches a tha a’ tighinn a-steach leis an aon chlàr-amais.
Anns an eisimpleir gu h-àrd, b’ e toradh a’ mhodail gach sreang a bhriseadh sìos gu comharran (faclan agus comharran puingeachaidh) agus an comharradh a sheòrsachadh an coimeas ris an eintiteas ainmichte (ainm na buidhne, airgead-crìche) a tha e a’ riochdachadh. An-dràsta am modail ner_ontonotes_bert_mult comasach air 18 seòrsa de bhuidhnean ainmichte aithneachadh, gheibhear tuairisgeul mionaideach
Modalan taobh a-muigh eile le DeepPavlov
A bharrachd air NER, tha na modalan taobh a-muigh a’ bhogsa a leanas rim faighinn ann an DeepPavlov aig àm sgrìobhaidh:
Freagairt Ceist Text
Freagair a’ cheist don teacsa le criomag den teacsa seo. Modail config: squad_ru_bert_infer
Eisimpleir iarrtas:
{
"context_raw": [
"DeepPavlov разрабатывается лабораторией МФТИ.",
"В юго-западной Руси стог жита оценен в 15 гривен."
],
"question_raw": [
"Кем разрабатывается DeepPavlov?",
"Сколько стоил стог жита на Руси?"
]
}
Toradh:
[
["лабораторией МФТИ", 27, 31042.484375],
["15 гривен", 39, 1049.598876953125]
]
Dearbhadh Insult
A’ lorg làthaireachd masladh don neach ris a bheil an teacsa air a sheòladh (aig àm sgrìobhaidh - dìreach airson Beurla). Modail config: insults_kaggle_conv_bert
Eisimpleir iarrtas:
{
"x": [
"Money talks, bullshit walks.",
"You are not the brightest one."
]
}
Toradh:
[
["Not Insult"],
["Insult"]
]
Mion-sgrùdadh sentiment
Seòrsachadh faireachdainn teacsa (dearbhach, neodrach, àicheil). Modail config: rusentiment_elmo_twitter_cnn
Eisimpleir iarrtas:
{
"x": [
"Мне нравится библиотека DeepPavlov.",
"Я слышал о библиотеке DeepPavlov.",
"Меня бесят тролли и анонимусы."
]
}
Toradh:
[
["positive"],
["neutral"],
["negative"]
]
Dearbhadh paraphrase
Co-dhùnadh a bheil an aon chiall aig dà theacsa eadar-dhealaichte. Modail config: seasamh_paraphraser_ru
Iarrtas:
{
"text_a": [
"Город погружается в сон, просыпается Мафия.",
"Президент США пригрозил расторжением договора с Германией."
],
"text_b": [
"Наступает ночь, все жители города пошли спать, а преступники проснулись.",
"Германия не собирается поддаваться угрозам со стороны США."
]
}
Toradh:
[
[1],
[0]
]
Gheibhear an liosta gnàthach de na modalan DeepPavlov taobh a-muigh a ’bhogsa an-còmhnaidh
co-dhùnadh
San artaigil seo, fhuair sinn eòlas air API DeepPavlov agus cuid de na comasan giullachd teacsa san leabharlann a chaidh a thoirt seachad a-mach às a’ bhogsa. Bu chòir cuimhneachadh, airson gnìomh NLP sam bith, gun tèid an toradh as fheàrr a choileanadh nuair a bhios tu a’ trèanadh a’ mhodail air seata dàta a tha co-chosmhail ri raon cuspair (àrainn) na h-obrach. A bharrachd air an sin, chan urrainn eadhon barrachd mhodalan, ann am prionnsapal, a bhith air an trèanadh airson a h-uile suidheachadh.
Anns na h-artaigilean a leanas bheir sinn sùil air suidheachaidhean a bharrachd den leabharlann, a 'cur air bhog DeepPavlov bho Docker, agus an uairsin gluaisidh sinn air adhart gu modalan trèanaidh. Agus na dì-chuimhnich gu bheil DeepPavlov air
Source: www.habr.com