டெவலப்பர்களுக்கான DeepPavlov: #1 NLP கருவிகள் மற்றும் சாட்பாட் உருவாக்கம்

அனைவருக்கும் வணக்கம்! இயற்கையான மொழி செயலாக்கம் (இயற்கை மொழி செயலாக்கம் அல்லது வெறுமனே NLP) தொடர்பான நடைமுறை சிக்கல்களைத் தீர்ப்பதற்கும், திறந்த மூல நூலகத்தைப் பயன்படுத்தி உரையாடல் முகவர்களை (சாட்போட்கள்) உருவாக்குவதற்கும் அர்ப்பணிக்கப்பட்ட கட்டுரைகளின் வரிசையைத் திறக்கிறோம். டீப் பாவ்லோவ், இது எம்ஐபிடி நியூரல் சிஸ்டம்ஸ் மற்றும் டீப் லேர்னிங் ஆய்வகத்தில் எங்கள் குழுவால் உருவாக்கப்படுகிறது. டீப் பாவ்லோவை பரந்த அளவிலான டெவலப்பர்களுக்கு அறிமுகப்படுத்துவதும், மெஷின் லேர்னிங் மற்றும் கணிதத்தில் பிஎச்டி ஆகியவற்றில் ஆழ்ந்த அறிவு இல்லாமல், என்எல்பி சிக்கல்களை எவ்வாறு தீர்க்கலாம் என்பதைக் காண்பிப்பதும் தொடரின் முக்கிய குறிக்கோள்.

NLP பணிகளில் உரையின் உணர்வைத் தீர்மானித்தல், பெயரிடப்பட்ட நிறுவனங்களைப் பாகுபடுத்துதல், உரையாசிரியர் உங்கள் போட்டிலிருந்து என்ன விரும்புகிறார் என்பதைத் தீர்மானித்தல்: பீட்சாவை ஆர்டர் செய்தல் அல்லது பின்னணித் தகவலைப் பெறுதல் மற்றும் பல. NLP பணிகள் மற்றும் முறைகள் பற்றி மேலும் படிக்கலாம் இங்கே.

இந்தக் கட்டுரையில், கூடுதல் உள்ளமைவு அல்லது பயிற்சி இல்லாமல் பயன்படுத்தத் தயாராக இருக்கும் முன் பயிற்சி பெற்ற NLP மாதிரிகளுடன் REST சேவையகத்தை எவ்வாறு இயக்குவது என்பதை நாங்கள் உங்களுக்குக் காண்பிப்போம்.

டெவலப்பர்களுக்கான DeepPavlov: #1 NLP கருவிகள் மற்றும் சாட்பாட் உருவாக்கம்

DeepPavlov இன் நிறுவல்

இங்கேயும் கீழேயும், Linux க்கான வழிமுறைகள் கொடுக்கப்படும். விண்டோஸுக்கு, எங்களுடையதைப் பார்க்கவும் ஆவணங்கள்

  • பைத்தானின் தற்போதைய ஆதரிக்கப்படும் பதிப்பைக் கொண்டு மெய்நிகர் சூழலை உருவாக்கி செயல்படுத்தவும்:
    virtualelnv env -p python3.7
    source env/bin/activate
  • மெய்நிகர் சூழலில் DeepPavlov ஐ நிறுவவும்:
    pip install deeppavlov
    

DeepPavlov மாதிரியுடன் REST சேவையகத்தைத் தொடங்குதல்

டீப் பாவ்லோவ் மாடலுடன் சேவையகத்தை முதன்முறையாகத் தொடங்குவதற்கு முன், நூலகத்தின் கட்டமைப்பின் சில அம்சங்களைப் பற்றி பேசுவது பயனுள்ளதாக இருக்கும்.

DP இல் உள்ள எந்த மாதிரியும் பின்வருவனவற்றைக் கொண்டுள்ளது:

  • பைதான் குறியீடு;
  • தரவிறக்கம் செய்யக்கூடிய கூறுகள் - குறிப்பிட்ட தரவுகளின் தொடர் பயிற்சி முடிவுகள் (உட்பொதிப்புகள், நரம்பியல் நெட்வொர்க்குகளின் எடைகள் போன்றவை);
  • ஒரு உள்ளமைவு கோப்பு (இனி config என குறிப்பிடப்படுகிறது), இது மாதிரியால் பயன்படுத்தப்படும் வகுப்புகள், பதிவிறக்கம் செய்யப்பட்ட கூறுகளின் URLகள், பைதான் சார்புகள் போன்றவை பற்றிய தகவல்களைக் கொண்டுள்ளது.

பின்வரும் கட்டுரைகளில் டீப்பாவ்லோவின் பேட்டைக்குக் கீழ் இருப்பதைப் பற்றி நாங்கள் உங்களுக்கு மேலும் கூறுவோம், இப்போதைக்கு அதைத் தெரிந்துகொண்டால் போதும்:

  • DeepPavlov இல் உள்ள எந்த மாதிரியும் அதன் கட்டமைப்பின் பெயரால் அடையாளம் காணப்படுகிறது;
  • மாதிரியை இயக்க, நீங்கள் அதன் கூறுகளை DeepPavlov சேவையகங்களிலிருந்து பதிவிறக்கம் செய்ய வேண்டும்;
  • மேலும், மாதிரியை இயக்க, அது பயன்படுத்தும் பைதான் நூலகங்களை நிறுவ வேண்டும்.

நாங்கள் அறிமுகப்படுத்தும் முதல் மாடல் பன்மொழி பெயரிடப்பட்ட நிறுவன அங்கீகாரம் (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 ஜிபியை எட்டும்.

  3. மாதிரியுடன் REST சேவையகத்தைத் தொடங்குகிறோம்:
    python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
    

இந்த கட்டளையை செயல்படுத்துவதன் விளைவாக, ஹோஸ்ட் இயந்திரத்தின் போர்ட் 5005 இல் ஒரு மாதிரியுடன் கூடிய REST சேவையகம் தொடங்கப்படும் (இயல்புநிலை போர்ட் 5000).

மாதிரியை துவக்கிய பிறகு, ஸ்வாகர் உடன் API ஆவணங்கள் மற்றும் சோதனை செய்யும் திறனை URL இல் காணலாம் http://127.0.0.1:5005. இறுதிப் புள்ளிக்கு அனுப்புவதன் மூலம் மாதிரியை சோதிப்போம் http://127.0.0.1:5005/model பின்வரும் JSON உள்ளடக்கத்துடன் POST கோரிக்கை:

{
  "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 ஐ பகுப்பாய்வு செய்வோம்.

ஏபிஐ டீப்பாவ்லோவ்

ஒவ்வொரு டீப் பாவ்லோவ் மாதிரியும் குறைந்தது ஒரு உள்ளீட்டு வாதமாவது இருக்கும். REST API இல், வாதங்கள் பெயரிடப்பட்டுள்ளன, அவற்றின் பெயர்கள் உள்வரும் அகராதியின் விசைகளாகும். பெரும்பாலான சந்தர்ப்பங்களில், வாதம் என்பது செயலாக்கப்பட வேண்டிய உரை. மாதிரிகள் மூலம் திருப்பியளிக்கப்பட்ட வாதங்கள் மற்றும் மதிப்புகள் பற்றிய கூடுதல் தகவல்களை ஆவணத்தின் மாதிரிகள் பிரிவில் காணலாம் டீப் பாவ்லோவ்

எடுத்துக்காட்டில், இரண்டு சரங்களின் பட்டியல் வாதம் x க்கு அனுப்பப்பட்டது, ஒவ்வொன்றும் தனித்தனி மார்க்அப் கொடுக்கப்பட்டது. DeepPavlov இல், அனைத்து மாதிரிகளும் சுயாதீனமாக செயலாக்கப்படும் மதிப்புகளின் பட்டியலை (தொகுதி) உள்ளீடாக எடுத்துக்கொள்கின்றன.

"தொகுதி" என்ற சொல் இயந்திர கற்றல் துறையைக் குறிக்கிறது மற்றும் ஒரே நேரத்தில் அல்காரிதம் அல்லது நரம்பியல் நெட்வொர்க் மூலம் செயலாக்கப்பட்ட சுயாதீன உள்ளீட்டு மதிப்புகளின் தொகுப்பைக் குறிக்கிறது. உள்ளீட்டிற்குத் தனித்தனியாக அனுப்பப்பட்ட அதே மதிப்புடன் ஒப்பிடும்போது, ​​ஒரு தொகுப்பின் ஒரு உறுப்பை மாதிரி செயலாக்கும் நேரத்தை (பெரும்பாலும் கணிசமாக) குறைக்க இந்த அணுகுமுறை உங்களை அனுமதிக்கிறது. ஆனால் அனைத்து கூறுகளும் செயலாக்கப்பட்ட பின்னரே செயலாக்க முடிவு வழங்கப்படுகிறது. எனவே, உள்வரும் தொகுதியை உருவாக்கும் போது, ​​மாதிரியின் வேகம் மற்றும் அதன் ஒவ்வொரு தனி உறுப்புகளுக்கும் தேவையான செயலாக்க நேரத்தை கணக்கில் எடுத்துக்கொள்வது அவசியம்.

டீப் பாவ்லோவ் மாதிரிக்கு பல வாதங்கள் இருந்தால், அவை ஒவ்வொன்றும் அதன் சொந்த மதிப்புகளைப் பெறுகின்றன, மேலும் வெளியீட்டில் மாதிரி எப்போதும் ஒரு தொகுதி பதில்களை உருவாக்குகிறது. வெளிச்செல்லும் தொகுதியின் கூறுகள், உள்வரும் தொகுதிகளின் கூறுகளை அதே குறியீட்டுடன் செயலாக்குவதன் முடிவுகளாகும்.

மேலே உள்ள எடுத்துக்காட்டில், மாதிரியின் விளைவாக ஒவ்வொரு சரத்தையும் டோக்கன்களாக (சொற்கள் மற்றும் நிறுத்தற்குறிகள்) உடைத்து, அது குறிக்கும் பெயரிடப்பட்ட நிறுவனத்துடன் (நிறுவனத்தின் பெயர், நாணயம்) தொடர்புடைய டோக்கனை வகைப்படுத்த வேண்டும். தற்போது மாடல் ner_ontonotes_bert_mult 18 வகையான பெயரிடப்பட்ட நிறுவனங்களை அடையாளம் காணும் திறன் கொண்டது, விரிவான விளக்கத்தைக் காணலாம் இங்கே.

டீப் பாவ்லோவின் பிற அவுட்-ஆஃப்-பாக்ஸ் மாடல்கள்

NER ஐத் தவிர, பின்வரும் அவுட்-ஆஃப்-பாக்ஸ் மாதிரிகள் எழுதும் நேரத்தில் DeepPavlov இல் கிடைக்கின்றன:

உரை கேள்வி பதில்

இந்த உரையின் ஒரு பகுதியுடன் உரைக்கான கேள்விக்கு பதிலளிக்கவும். மாதிரி கட்டமைப்பு: squad_ru_bert_infer

எடுத்துக்காட்டு கோரிக்கை:

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

முடிவு:

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

அவமதிப்பு கண்டறிதல்

உரை உரையாற்றப்பட்ட நபருக்கு அவமானம் இருப்பதைக் கண்டறிதல் (எழுதும் நேரத்தில் - ஆங்கிலத்திற்கு மட்டுமே). மாதிரி கட்டமைப்பு: insults_kaggle_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 API மற்றும் நூலகத்தின் சில உரைச் செயலாக்கத் திறன்கள் பெட்டிக்கு வெளியே வழங்கப்பட்டன. எந்தவொரு என்எல்பி பணிக்கும், பணியின் பொருள் பகுதிக்கு (டொமைன்) தொடர்புடைய தரவு தொகுப்பில் மாதிரியைப் பயிற்றுவிக்கும் போது சிறந்த முடிவு அடையப்படும் என்பதை நினைவில் கொள்ள வேண்டும். கூடுதலாக, இன்னும் அதிகமான மாதிரிகள், கொள்கையளவில், எல்லா சூழ்நிலைகளுக்கும் பயிற்சியளிக்க முடியாது.

பின்வரும் கட்டுரைகளில் நூலகத்தின் கூடுதல் அமைப்புகளைப் பார்ப்போம், டோக்கரிலிருந்து டீப்பாவ்லோவைத் தொடங்குவோம், பின்னர் பயிற்சி மாதிரிகளுக்குச் செல்வோம். மற்றும் DeepPavlov உள்ளது என்பதை மறந்துவிடாதே மன்றம் - நூலகம் மற்றும் மாதிரிகள் தொடர்பான உங்கள் கேள்விகளைக் கேளுங்கள். உங்கள் கவனத்திற்கு நன்றி!

ஆதாரம்: www.habr.com

கருத்தைச் சேர்