ሰላም ሁላችሁም! ከተፈጥሮ ቋንቋ አቀነባበር ጋር የተያያዙ ተግባራዊ ችግሮችን ለመፍታት (Natural Language Processing ወይም በቀላሉ NLP) እና ክፍት ምንጭ ላይብረሪ በመጠቀም የንግግር ወኪሎችን (ቻትቦቶች) ለመፍጠር ያተኮሩ ተከታታይ መጣጥፎችን እየከፈትን ነው።
NLP ተግባራት የጽሁፉን ስሜት መወሰን፣ የተሰየሙ አካላትን መተንተን፣ ኢንተርሎኩተር ከእርስዎ ቦት ምን እንደሚፈልግ መወሰን፡ ፒዛን ማዘዝ ወይም የጀርባ መረጃ ማግኘት እና ሌሎችንም ያካትታሉ። ስለ NLP ተግባራት እና ዘዴዎች የበለጠ ማንበብ ይችላሉ
በዚህ ጽሑፍ ውስጥ፣ ያለ ተጨማሪ ውቅር ወይም ስልጠና ለመጠቀም ዝግጁ የሆነ ቅድመ-የሠለጠኑ NLP ሞዴሎችን የ REST አገልጋይን እንዴት እንደሚያሄዱ እናሳይዎታለን።
የ DeepPavlov ጭነት
እዚህ እና ከታች ለሊኑክስ መመሪያዎች ይሰጣል። ለዊንዶውስ የእኛን ይመልከቱ
- አሁን ባለው የሚደገፍ የፓይዘን ሥሪት ምናባዊ አካባቢን ይፍጠሩ እና ያግብሩ፡
virtualelnv env -p python3.7 source env/bin/activate
- DeepPavlovን በምናባዊ አካባቢ ጫን
pip install deeppavlov
የREST አገልጋይን በ DeepPavlov ሞዴል በማስጀመር ላይ
ለመጀመሪያ ጊዜ ከዲፕፓቭሎቭ ሞዴል ጋር ሰርቨር ከመክፈታችን በፊት ስለ ቤተ መፃህፍቱ አርክቴክቸር አንዳንድ ገፅታዎች መነጋገር ጠቃሚ ይሆናል።
በዲፒ ውስጥ ያለ ማንኛውም ሞዴል የሚከተሉትን ያጠቃልላል
- የፓይዘን ኮድ;
- ሊወርዱ የሚችሉ አካላት - በተወሰኑ መረጃዎች ላይ ተከታታይ የሥልጠና ውጤቶች (መክተቻዎች ፣ የነርቭ አውታረ መረቦች ክብደቶች ፣ ወዘተ.);
- በአምሳያው ስለሚጠቀሙባቸው ክፍሎች፣ የወረዱ አካላት ዩአርኤሎች፣ የፓይዘን ጥገኞች፣ ወዘተ መረጃ የያዘ የማዋቀሪያ ፋይል (ከዚህ በኋላ ውቅር ተብሎ ይጠራል)።
በሚቀጥሉት መጣጥፎች ውስጥ በ DeepPavlov ስር ስላለው ነገር የበለጠ እንነግራችኋለን ፣ለአሁን ይህንን ማወቅ በቂ ነው-
- በ DeepPavlov ውስጥ ያለ ማንኛውም ሞዴል በአወቃቀሩ ስም ተለይቷል;
- ሞዴሉን ለማሄድ ክፍሎቹን ከ DeepPavlov አገልጋዮች ማውረድ ያስፈልግዎታል;
- እንዲሁም ሞዴሉን ለማስኬድ የሚጠቀመውን የ Python ቤተ-መጽሐፍት መጫን ያስፈልግዎታል።
የምንጀምረው የመጀመሪያው ሞዴል ባለብዙ ቋንቋ ስም ያለው አካል እውቅና (NER) ይሆናል። ሞዴሉ የጽሑፍ ቃላቶችን በሚመለከታቸው አካላት ዓይነት (ትክክለኛ ስሞች ፣ የጂኦግራፊያዊ ስሞች ፣ የምንዛሬ ስሞች እና ሌሎች) ይመድባል። ለአሁኑ በጣም የቅርብ ጊዜ የNER ስሪት ስም ያዋቅሩ፡
ner_ontonotes_bert_mult
የ REST አገልጋይን በአምሳያው እናስጀምረዋለን፡-
- በእሱ ውቅረት ውስጥ የተገለጹትን የሞዴል ጥገኛዎች ወደ ንቁ ምናባዊ አካባቢ እንጭነዋለን-
python -m deeppavlov install ner_ontonotes_bert_mult
- ተከታታይ ሞዴል ክፍሎችን ከ DeepPavlov አገልጋዮች አውርድ፡
python -m deeppavlov download ner_ontonotes_bert_mult
የተከታታይ ክፍሎች በነባሪ ወደ ሚገኘው የ DeepPavlov መነሻ ማውጫ ይወርዳሉ
~/.deeppavlov
በማውረድ ጊዜ አስቀድሞ የወረዱ አካላት ሃሽ በአገልጋዩ ላይ ከሚገኙት የንጥረ ነገሮች ሃሽ ጋር ይጣራል። ግጥሚያ ካለ ማውረዱ ተዘልሏል እና ነባር ፋይሎች ጥቅም ላይ ይውላሉ። የወረዱ አካላት መጠኖች በአማካይ ከ 0.5 እስከ 8 ጊባ ሊለያዩ ይችላሉ፣ በአንዳንድ አጋጣሚዎች ዚፕ ከከፈቱ በኋላ 20 Gb ይደርሳሉ።
- በአምሳያው የ REST አገልጋይ እንጀምራለን፡-
python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
ይህንን ትእዛዝ በመፈፀም ምክንያት፣ ሞዴል ያለው የ REST አገልጋይ በአስተናጋጅ ማሽን ወደብ 5005 (ነባሪው ወደብ 5000 ነው) ላይ ይጀምራል።
ሞዴሉን ካስጀመርክ በኋላ Swagger ከኤፒአይ ሰነድ ጋር እና የመሞከር ችሎታ በዩአርኤል ላይ ይገኛል። http://127.0.0.1:5005
. ሞዴሉን ወደ መጨረሻው ነጥብ በመላክ እንፈትነው http://127.0.0.1:5005/model
ከሚከተለው የJSON ይዘት ጋር ልጥፍ ጥያቄ፡-
{
"x": [
"В МФТИ можно добраться на электричке с Савёловского Вокзала.",
"В юго-западной Руси стог жита оценен в 15 гривен"
]
}
በምላሹ የሚከተለውን 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"]
]
]
እነዚህን ምሳሌዎች በመጠቀም DeepPavlov REST API እንመረምራለን።
ኤፒአይ DeepPavlov
እያንዳንዱ የ DeepPavlov ሞዴል ቢያንስ አንድ የግቤት ነጋሪ እሴት አለው። በ REST ኤፒአይ ውስጥ ክርክሮች ተሰይመዋል ፣ ስማቸው የመጪው መዝገበ-ቃላት ቁልፎች ናቸው። በአብዛኛዎቹ ሁኔታዎች ክርክሩ መስተካከል ያለበት ጽሑፍ ነው። በአምሳያዎች የተመለሱ ስለ ክርክሮች እና እሴቶች ተጨማሪ መረጃ በሰነዱ ውስጥ በMODELS ክፍል ውስጥ ይገኛል።
በምሳሌው ውስጥ፣ የሁለት ሕብረቁምፊዎች ዝርዝር ወደ ክርክር x ተላልፏል፣ እያንዳንዱም የተለየ ምልክት ተሰጥቷል። በ DeepPavlov ውስጥ ሁሉም ሞዴሎች በተናጥል የሚሰሩ የእሴቶችን ዝርዝር (ባች) እንደ ግብአት ይወስዳሉ።
“ባች” የሚለው ቃል የማሽን መማሪያ መስክን የሚያመለክት ሲሆን በአንድ ጊዜ በአልጎሪዝም ወይም በነርቭ አውታረመረብ የሚሰሩ ገለልተኛ የግብዓት ዋጋዎችን ያመለክታል። ይህ አቀራረብ ሞዴሉ የአንድን ክፍል አንድ አካል ለብቻው ወደ ግቤት ከተላለፈው ተመሳሳይ እሴት ጋር ሲወዳደር (ብዙውን ጊዜ በከፍተኛ ሁኔታ) እንዲቀንሱ ያስችልዎታል። ነገር ግን የማቀነባበሪያው ውጤት የሚወጣው ሁሉም ንጥረ ነገሮች ከተደረጉ በኋላ ብቻ ነው. ስለዚህ, መጪውን ስብስብ በሚፈጥሩበት ጊዜ, የአምሳያው ፍጥነት እና ለእያንዳንዳቸው እያንዳንዱ ንጥረ ነገር አስፈላጊውን ሂደት ጊዜ ግምት ውስጥ ማስገባት አስፈላጊ ይሆናል.
ለ DeepPavlov ሞዴል ብዙ ክርክሮች ካሉ እያንዳንዳቸው የራሳቸው የሆነ እሴት ይቀበላሉ, እና በውጤቱ ላይ ሞዴሉ ሁልጊዜ አንድ መልስ ይሰጣል. የወጪው ስብስብ ንጥረ ነገሮች የመጪዎቹን ክፍሎች ተመሳሳይ ኢንዴክስ የማቀናበር ውጤቶች ናቸው።
ከላይ ባለው ምሳሌ፣ የአምሳያው ውጤት እያንዳንዱን ሕብረቁምፊ ወደ ቶከኖች (ቃላቶች እና ሥርዓተ-ነጥብ ምልክቶች) መከፋፈል እና ማስመሰያውን ከሚወክለው አካል (የድርጅት ስም ፣ ምንዛሬ) አንፃር መከፋፈል ነበር። በአሁኑ ጊዜ ሞዴል ner_ontonotes_bert_mult 18 የተሰየሙ አካላትን መለየት የሚችል ፣ ዝርዝር መግለጫ ማግኘት ይቻላል
ሌሎች ከሳጥን ውጪ የሆኑ ሞዴሎች በ DeepPavlov
ከ NER በተጨማሪ የሚከተሉት ከሳጥን ውጪ የሆኑ ሞዴሎች በሚጽፉበት ጊዜ በ DeepPavlov ውስጥ ይገኛሉ፡-
የጽሑፍ ጥያቄ መልስ
በዚህ ጽሑፍ ቁርጥራጭ ለጽሑፉ ጥያቄውን ይመልሱ። የሞዴል ውቅር: squad_ru_bert_infer
ምሳሌ ጠይቅ፡-
{
"context_raw": [
"DeepPavlov разрабатывается лабораторией МФТИ.",
"В юго-западной Руси стог жита оценен в 15 гривен."
],
"question_raw": [
"Кем разрабатывается DeepPavlov?",
"Сколько стоил стог жита на Руси?"
]
}
ውጤት:
[
["лабораторией МФТИ", 27, 31042.484375],
["15 гривен", 39, 1049.598876953125]
]
የስድብ ማወቂያ
ጽሁፉ የተላከለትን ሰው ስድብ መኖሩን ማወቅ (በሚጽፉበት ጊዜ - ለእንግሊዘኛ ብቻ). የሞዴል ውቅር፡ ስድብ_ካggle_conv_bert
ምሳሌ ጠይቅ፡-
{
"x": [
"Money talks, bullshit walks.",
"You are not the brightest one."
]
}
ውጤት:
[
["Not Insult"],
["Insult"]
]
የምስል ትንታኔ
የጽሑፍ ስሜትን መመደብ (አዎንታዊ, ገለልተኛ, አሉታዊ). የሞዴል ውቅር: rusentiment_elmo_twitter_cnn
ምሳሌ ጠይቅ፡-
{
"x": [
"Мне нравится библиотека DeepPavlov.",
"Я слышал о библиотеке DeepPavlov.",
"Меня бесят тролли и анонимусы."
]
}
ውጤት:
[
["positive"],
["neutral"],
["negative"]
]
የቃላት ፍቺ ማወቂያ
ሁለት የተለያዩ ጽሑፎች ተመሳሳይ ትርጉም እንዳላቸው መወሰን. የሞዴል ውቅር: ቁም_አብራራዘር_ሩ
ጥያቄ፡-
{
"text_a": [
"Город погружается в сон, просыпается Мафия.",
"Президент США пригрозил расторжением договора с Германией."
],
"text_b": [
"Наступает ночь, все жители города пошли спать, а преступники проснулись.",
"Германия не собирается поддаваться угрозам со стороны США."
]
}
ውጤት:
[
[1],
[0]
]
ከሳጥን ውጪ ያሉት የ DeepPavlov ሞዴሎች ሁሉ አሁን ያለው ዝርዝር ሁል ጊዜ ሊገኙ ይችላሉ።
መደምደሚያ
በዚህ ጽሑፍ ውስጥ ከዲፕፓቭሎቭ ኤፒአይ እና ከሳጥኑ ውስጥ ከቀረቡት የቤተ-መጻህፍት የጽሑፍ ማቀነባበሪያ ችሎታዎች ጋር ተዋወቅን። ለማንኛውም የ NLP ተግባር ሞዴሉን ከተግባሩ ርዕሰ-ጉዳይ (ጎራ) ጋር በተዛመደ የውሂብ ስብስብ ላይ ሲያሰለጥኑ የተሻለው ውጤት እንደሚገኝ ግምት ውስጥ ማስገባት ይገባል. በተጨማሪም, ተጨማሪ ሞዴሎች እንኳን, በመርህ ደረጃ, ለሁሉም ሁኔታዎች ሊሰለጥኑ አይችሉም.
በሚቀጥሉት ጽሁፎች ውስጥ DeepPavlov ን ከዶከር በማስጀመር የላይብረሪውን ተጨማሪ መቼቶች እንመለከታለን ከዚያም ወደ ስልጠና ሞዴሎች እንሸጋገራለን. እና DeepPavlov እንዳለው አይርሱ
ምንጭ: hab.com