DeepPavlov ለገንቢዎች፡#1 NLP መሳሪያዎች እና የቻትቦት ፈጠራ

ሰላም ሁላችሁም! ከተፈጥሮ ቋንቋ አቀነባበር ጋር የተያያዙ ተግባራዊ ችግሮችን ለመፍታት (Natural Language Processing ወይም በቀላሉ NLP) እና ክፍት ምንጭ ላይብረሪ በመጠቀም የንግግር ወኪሎችን (ቻትቦቶች) ለመፍጠር ያተኮሩ ተከታታይ መጣጥፎችን እየከፈትን ነው። DeepPavlovበ MIPT የነርቭ ሥርዓት እና ጥልቅ ትምህርት ላብራቶሪ በቡድናችን እየተዘጋጀ ነው። የተከታታዩ ዋና አላማ DeepPavlovን ለተለያዩ ገንቢዎች ማስተዋወቅ እና በማሽን መማር እና ፒኤችዲ በሂሳብ ጥልቅ እውቀት ሳያገኙ የተተገበሩ የ NLP ችግሮችን እንዴት መፍታት እንደሚችሉ ማሳየት ነው።

NLP ተግባራት የጽሁፉን ስሜት መወሰን፣ የተሰየሙ አካላትን መተንተን፣ ኢንተርሎኩተር ከእርስዎ ቦት ምን እንደሚፈልግ መወሰን፡ ፒዛን ማዘዝ ወይም የጀርባ መረጃ ማግኘት እና ሌሎችንም ያካትታሉ። ስለ NLP ተግባራት እና ዘዴዎች የበለጠ ማንበብ ይችላሉ እዚህ.

በዚህ ጽሑፍ ውስጥ፣ ያለ ተጨማሪ ውቅር ወይም ስልጠና ለመጠቀም ዝግጁ የሆነ ቅድመ-የሠለጠኑ NLP ሞዴሎችን የ REST አገልጋይን እንዴት እንደሚያሄዱ እናሳይዎታለን።

DeepPavlov ለገንቢዎች፡#1 NLP መሳሪያዎች እና የቻትቦት ፈጠራ

የ 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 አገልጋይን በአምሳያው እናስጀምረዋለን፡-

  1. በእሱ ውቅረት ውስጥ የተገለጹትን የሞዴል ጥገኛዎች ወደ ንቁ ምናባዊ አካባቢ እንጭነዋለን-
    python -m deeppavlov install ner_ontonotes_bert_mult
    
  2. ተከታታይ ሞዴል ክፍሎችን ከ DeepPavlov አገልጋዮች አውርድ፡
    python -m deeppavlov download ner_ontonotes_bert_mult
    

    የተከታታይ ክፍሎች በነባሪ ወደ ሚገኘው የ DeepPavlov መነሻ ማውጫ ይወርዳሉ

    ~/.deeppavlov

    በማውረድ ጊዜ አስቀድሞ የወረዱ አካላት ሃሽ በአገልጋዩ ላይ ከሚገኙት የንጥረ ነገሮች ሃሽ ጋር ይጣራል። ግጥሚያ ካለ ማውረዱ ተዘልሏል እና ነባር ፋይሎች ጥቅም ላይ ይውላሉ። የወረዱ አካላት መጠኖች በአማካይ ከ 0.5 እስከ 8 ጊባ ሊለያዩ ይችላሉ፣ በአንዳንድ አጋጣሚዎች ዚፕ ከከፈቱ በኋላ 20 Gb ይደርሳሉ።

  3. በአምሳያው የ 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 ክፍል ውስጥ ይገኛል። DeepPavlov

በምሳሌው ውስጥ፣ የሁለት ሕብረቁምፊዎች ዝርዝር ወደ ክርክር 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

አስተያየት ያክሉ