Helo pawb! Rydym yn agor cyfres o erthyglau wedi'u neilltuo i ddatrys problemau ymarferol sy'n ymwneud â phrosesu iaith naturiol (Prosesu Iaith Naturiol neu'n syml NLP) a chreu asiantau deialog (chatbots) gan ddefnyddio llyfrgell ffynhonnell agored
Mae tasgau NLP yn cynnwys pennu teimlad y testun, dosrannu endidau a enwir, penderfynu beth mae'r cydgysylltydd ei eisiau gan eich bot: archebu pizza neu gael gwybodaeth gefndir, a llawer mwy. Gallwch ddarllen mwy am dasgau a dulliau NLP
Yn yr erthygl hon, byddwn yn dangos i chi sut i redeg gweinydd REST gyda modelau NLP sydd wedi'u hyfforddi ymlaen llaw, yn barod i'w defnyddio heb unrhyw ffurfweddiad na hyfforddiant ychwanegol.
Gosod DeepPavlov
Yma ac isod, rhoddir cyfarwyddiadau ar gyfer Linux. Ar gyfer Windows, gweler ein
- Creu ac actifadu amgylchedd rhithwir gyda'r fersiwn gyfredol o Python a gefnogir:
virtualelnv env -p python3.7 source env/bin/activate
- Gosod DeepPavlov mewn amgylchedd rhithwir:
pip install deeppavlov
Lansio gweinydd REST gyda'r model DeepPavlov
Cyn i ni lansio gweinydd gyda'r model DeepPavlov am y tro cyntaf, bydd yn ddefnyddiol siarad am rai o nodweddion pensaernïaeth y llyfrgell.
Mae unrhyw fodel yn DP yn cynnwys:
- cod Python;
- Cydrannau y gellir eu lawrlwytho - canlyniadau hyfforddiant cyfresol ar ddata penodol (ymgorfforiadau, pwysau rhwydweithiau niwral, ac ati);
- Ffeil ffurfweddu (y cyfeirir ati o hyn ymlaen fel y config), sy'n cynnwys gwybodaeth am y dosbarthiadau a ddefnyddir gan y model, URLau cydrannau wedi'u llwytho i lawr, dibyniaethau Python, ac ati.
Byddwn yn dweud mwy wrthych am yr hyn sydd o dan gwfl DeepPavlov yn yr erthyglau canlynol, am y tro mae'n ddigon inni wybod hynny:
- Mae unrhyw fodel yn DeepPavlov yn cael ei nodi gan enw ei ffurfwedd;
- I redeg y model, mae angen i chi lawrlwytho ei gydrannau o'r gweinyddwyr DeepPavlov;
- Hefyd, i redeg y model, mae angen i chi osod y llyfrgelloedd Python y mae'n eu defnyddio.
Y model cyntaf y byddwn yn ei lansio fydd Cydnabod Endid a Enwir (NER) amlieithog. Mae'r model yn dosbarthu geiriau testun yn ôl y math o endidau a enwir y maent yn perthyn iddynt (enwau priodol, enwau daearyddol, enwau arian cyfred, ac eraill). Enw ffurfweddu ar gyfer y fersiwn diweddaraf o NER:
ner_ontonotes_bert_mult
Rydym yn lansio'r gweinydd REST gyda'r model:
- Rydym yn gosod y dibyniaethau model a nodir yn ei ffurfweddiad yn yr amgylchedd rhithwir gweithredol:
python -m deeppavlov install ner_ontonotes_bert_mult
- Dadlwythwch gydrannau model cyfresol o weinyddion DeepPavlov:
python -m deeppavlov download ner_ontonotes_bert_mult
Bydd y cydrannau cyfresol yn cael eu llwytho i lawr i gyfeiriadur cartref DeepPavlov, sydd wedi'i leoli yn ddiofyn
~/.deeppavlov
Wrth lwytho i lawr, mae'r hash o gydrannau sydd eisoes wedi'u llwytho i lawr yn cael ei wirio yn erbyn y hashes o gydrannau sydd wedi'u lleoli ar y gweinydd. Os oes cyfatebiaeth, caiff y lawrlwythiad ei hepgor a defnyddir ffeiliau sy'n bodoli eisoes. Gall maint y cydrannau a lawrlwythwyd amrywio ar gyfartaledd o 0.5 i 8 Gb, gan gyrraedd 20 Gb mewn rhai achosion ar ôl dadsipio.
- Rydym yn lansio'r gweinydd REST gyda'r model:
python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
O ganlyniad i weithredu'r gorchymyn hwn, bydd gweinydd REST gyda model yn cael ei lansio ar borthladd 5005 y peiriant gwesteiwr (y porthladd rhagosodedig yw 5000).
Ar ôl cychwyn y model, mae Swagger gyda dogfennaeth API a'r gallu i brofi i'w gweld yn yr URL http://127.0.0.1:5005
. Gadewch i ni brofi'r model trwy ei anfon at y diweddbwynt http://127.0.0.1:5005/model
Cais POST gyda'r cynnwys JSON canlynol:
{
"x": [
"В МФТИ можно добраться на электричке с Савёловского Вокзала.",
"В юго-западной Руси стог жита оценен в 15 гривен"
]
}
Mewn ymateb dylem dderbyn y JSON canlynol:
[
[
["В", "МФТИ", "можно", "добраться", "на", "электричке", "с", "Савёловского", "Вокзала", "."],
["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"]
]
]
Gan ddefnyddio'r enghreifftiau hyn, byddwn yn dadansoddi API REST DeepPavlov.
API DeepPavlov
Mae gan bob model DeepPavlov o leiaf un ddadl mewnbwn. Yn yr API REST, enwir dadleuon, eu henwau yw allweddi'r geiriadur sy'n dod i mewn. Yn y rhan fwyaf o achosion, y ddadl yw'r testun y mae angen ei brosesu. Ceir rhagor o wybodaeth am ddadleuon a gwerthoedd a ddychwelwyd gan fodelau yn adran MODELS y ddogfennaeth
Yn yr enghraifft, trosglwyddwyd rhestr o ddau linyn i ddadl x, a rhoddwyd marcio ar wahân i bob un ohonynt. Yn DeepPavlov, mae pob model yn cymryd rhestr (swp) o werthoedd sy'n cael eu prosesu'n annibynnol fel mewnbwn.
Mae'r term "swp" yn cyfeirio at faes dysgu peirianyddol ac yn cyfeirio at swp o werthoedd mewnbwn annibynnol a brosesir gan algorithm neu rwydwaith niwral ar yr un pryd. Mae'r dull hwn yn caniatáu ichi leihau (yn aml yn sylweddol) yr amser y mae'r model yn prosesu un elfen o swp o'i gymharu â'r un gwerth a drosglwyddir i'r mewnbwn ar wahân. Ond dim ond ar ôl i'r holl elfennau gael eu prosesu y cyhoeddir y canlyniad prosesu. Felly, wrth gynhyrchu swp sy'n dod i mewn, bydd angen ystyried cyflymder y model a'r amser prosesu gofynnol ar gyfer pob un o'i elfennau unigol.
Os oes sawl dadl i fodel DeepPavlov, mae pob un ohonynt yn derbyn ei swp ei hun o werthoedd, ac ar yr allbwn mae'r model bob amser yn cynhyrchu un swp o atebion. Mae elfennau'r swp sy'n mynd allan yn ganlyniadau prosesu elfennau'r sypiau sy'n dod i mewn gyda'r un mynegai.
Yn yr enghraifft uchod, canlyniad y model oedd torri pob llinyn yn docynnau (geiriau a marciau atalnodi) a dosbarthu'r tocyn mewn perthynas â'r endid a enwir (enw'r sefydliad, arian cyfred) y mae'n ei gynrychioli. Ar hyn o bryd y model ner_ontonotes_bert_mult gallu adnabod 18 math o endidau a enwir, gellir dod o hyd i ddisgrifiad manwl
Modelau eraill y tu allan i'r bocs gan DeepPavlov
Yn ogystal â NER, mae'r modelau tu allan i'r bocs canlynol ar gael yn DeepPavlov ar adeg ysgrifennu:
Ateb Cwestiwn Testun
Atebwch y cwestiwn i'r testun gyda darn o'r testun hwn. Cyfluniad model: sgwad_ru_bert_infer
Cais enghraifft:
{
"context_raw": [
"DeepPavlov разрабатывается лабораторией МФТИ.",
"В юго-западной Руси стог жита оценен в 15 гривен."
],
"question_raw": [
"Кем разрабатывается DeepPavlov?",
"Сколько стоил стог жита на Руси?"
]
}
Canlyniad:
[
["лабораторией МФТИ", 27, 31042.484375],
["15 гривен", 39, 1049.598876953125]
]
Canfod Sarhad
Canfod presenoldeb sarhad ar y person y cyfeiriwyd y testun ato (ar adeg ysgrifennu - dim ond ar gyfer Saesneg). Ffurfwedd y model: insults_kaggle_conv_bert
Cais enghraifft:
{
"x": [
"Money talks, bullshit walks.",
"You are not the brightest one."
]
}
Canlyniad:
[
["Not Insult"],
["Insult"]
]
Dadansoddiad Sentiment
Dosbarthiad teimlad testun (cadarnhaol, niwtral, negyddol). Cyfluniad model: rusentiment_elmo_twitter_cnn
Cais enghraifft:
{
"x": [
"Мне нравится библиотека DeepPavlov.",
"Я слышал о библиотеке DeepPavlov.",
"Меня бесят тролли и анонимусы."
]
}
Canlyniad:
[
["positive"],
["neutral"],
["negative"]
]
Canfod Aralleiriad
Penderfynu a oes gan ddau destun gwahanol yr un ystyr. Cyfluniad model: stand_paraphraser_cy
Cais:
{
"text_a": [
"Город погружается в сон, просыпается Мафия.",
"Президент США пригрозил расторжением договора с Германией."
],
"text_b": [
"Наступает ночь, все жители города пошли спать, а преступники проснулись.",
"Германия не собирается поддаваться угрозам со стороны США."
]
}
Canlyniad:
[
[1],
[0]
]
Gellir dod o hyd i'r rhestr gyfredol o'r holl fodelau DeepPavlov allan-o-y-bocs bob amser
Casgliad
Yn yr erthygl hon, daethom yn gyfarwydd ag API DeepPavlov a rhai o alluoedd prosesu testun y llyfrgell a ddarparwyd allan o'r bocs. Dylid cofio, ar gyfer unrhyw dasg NLP, y ceir y canlyniad gorau wrth hyfforddi'r model ar set ddata sy'n cyfateb i faes pwnc (parth) y dasg. Yn ogystal, ni all hyd yn oed mwy o fodelau, mewn egwyddor, gael eu hyfforddi ar gyfer pob sefyllfa.
Yn yr erthyglau canlynol byddwn yn edrych ar leoliadau ychwanegol y llyfrgell, gan lansio DeepPavlov o Docker, ac yna byddwn yn symud ymlaen i fodelau hyfforddi. A pheidiwch ag anghofio bod gan DeepPavlov
Ffynhonnell: hab.com