डेवलपर्स के लिए डीपपावलोव: #1 एनएलपी उपकरण और चैटबॉट निर्माण

नमस्ते! हम प्राकृतिक भाषा प्रसंस्करण (प्राकृतिक भाषा प्रसंस्करण या बस एनएलपी) से संबंधित व्यावहारिक समस्याओं को हल करने और एक ओपन-सोर्स लाइब्रेरी का उपयोग करके संवाद एजेंट (चैटबॉट) बनाने के लिए समर्पित लेखों की एक श्रृंखला खोल रहे हैं। डीपपावलोव, जिसे हमारी टीम द्वारा न्यूरल सिस्टम और डीप लर्निंग की एमआईपीटी प्रयोगशाला में विकसित किया जा रहा है। श्रृंखला का मुख्य लक्ष्य डीपपावलोव को डेवलपर्स की एक विस्तृत श्रृंखला से परिचित कराना है और यह दिखाना है कि आप मशीन लर्निंग और गणित में पीएचडी के गहन ज्ञान के बिना लागू एनएलपी समस्याओं को कैसे हल कर सकते हैं।

एनएलपी कार्यों में पाठ की भावना को निर्धारित करना, नामित संस्थाओं को पार्स करना, यह निर्धारित करना कि वार्ताकार आपके बॉट से क्या चाहता है: पिज्जा ऑर्डर करें या पृष्ठभूमि की जानकारी प्राप्त करें, और बहुत कुछ शामिल है। आप एनएलपी कार्यों और विधियों के बारे में अधिक पढ़ सकते हैं यहां.

इस लेख में, हम आपको दिखाएंगे कि पूर्व-प्रशिक्षित एनएलपी मॉडल के साथ एक REST सर्वर कैसे चलाया जाए, जो बिना किसी अतिरिक्त कॉन्फ़िगरेशन या प्रशिक्षण के उपयोग के लिए तैयार हो।

डेवलपर्स के लिए डीपपावलोव: #1 एनएलपी उपकरण और चैटबॉट निर्माण

डीपपावलोव की स्थापना

यहां और नीचे लिनक्स के लिए निर्देश दिए जाएंगे। विंडोज़ के लिए, हमारा देखें प्रलेखन

  • पायथन के वर्तमान समर्थित संस्करण के साथ एक आभासी वातावरण बनाएं और सक्रिय करें:
    virtualelnv env -p python3.7
    source env/bin/activate
  • वर्चुअल वातावरण में डीपपावलोव स्थापित करें:
    pip install deeppavlov
    

डीपपावलोव मॉडल के साथ एक REST सर्वर लॉन्च करना

इससे पहले कि हम पहली बार डीपपावलोव मॉडल के साथ एक सर्वर लॉन्च करें, लाइब्रेरी की वास्तुकला की कुछ विशेषताओं के बारे में बात करना उपयोगी होगा।

DP में किसी भी मॉडल में निम्न शामिल हैं:

  • पायथन कोड;
  • डाउनलोड करने योग्य घटक - विशिष्ट डेटा (एम्बेडिंग, तंत्रिका नेटवर्क का वजन, आदि) पर क्रमबद्ध प्रशिक्षण परिणाम;
  • एक कॉन्फ़िगरेशन फ़ाइल (इसके बाद कॉन्फ़िगरेशन के रूप में संदर्भित), जिसमें मॉडल द्वारा उपयोग की जाने वाली कक्षाओं, डाउनलोड किए गए घटकों के यूआरएल, पायथन निर्भरता आदि के बारे में जानकारी शामिल है।

हम आपको निम्नलिखित लेखों में डीपपावलोव के हुड के नीचे क्या है इसके बारे में अधिक बताएंगे, अभी के लिए हमारे लिए यह जानना पर्याप्त है:

  • डीपपावलोव में किसी भी मॉडल की पहचान उसके कॉन्फिगरेशन के नाम से की जाती है;
  • मॉडल को चलाने के लिए, आपको इसके घटकों को डीपपावलोव सर्वर से डाउनलोड करना होगा;
  • साथ ही, मॉडल को चलाने के लिए, आपको इसके द्वारा उपयोग की जाने वाली पायथन लाइब्रेरीज़ को स्थापित करना होगा।

पहला मॉडल जो हम लॉन्च करेंगे वह बहुभाषी नेम्ड एंटिटी रिकॉग्निशन (एनईआर) होगा। मॉडल पाठ शब्दों को उन नामित संस्थाओं के प्रकार के अनुसार वर्गीकृत करता है जिनसे वे संबंधित हैं (उचित नाम, भौगोलिक नाम, मुद्राओं के नाम और अन्य)। एनईआर के वर्तमान नवीनतम संस्करण के लिए कॉन्फ़िग नाम:

ner_ontonotes_bert_mult

हम मॉडल के साथ REST सर्वर लॉन्च करते हैं:

  1. हम इसके कॉन्फ़िगरेशन में निर्दिष्ट मॉडल निर्भरता को सक्रिय वर्चुअल वातावरण में स्थापित करते हैं:
    python -m deeppavlov install ner_ontonotes_bert_mult
    
  2. डीपपावलोव सर्वर से क्रमबद्ध मॉडल घटक डाउनलोड करें:
    python -m deeppavlov download ner_ontonotes_bert_mult
    

    क्रमबद्ध घटकों को डीपपावलोव होम निर्देशिका में डाउनलोड किया जाएगा, जो डिफ़ॉल्ट रूप से स्थित है

    ~/.deeppavlov

    डाउनलोड करते समय, पहले से डाउनलोड किए गए घटकों के हैश को सर्वर पर स्थित घटकों के हैश के विरुद्ध जांचा जाता है। यदि कोई मेल है, तो डाउनलोड छोड़ दिया जाता है और मौजूदा फ़ाइलों का उपयोग किया जाता है। डाउनलोड किए गए घटकों का आकार औसतन 0.5 से 8 जीबी तक भिन्न हो सकता है, कुछ मामलों में अनज़िप करने के बाद 20 जीबी तक पहुंच जाता है।

  3. हम मॉडल के साथ REST सर्वर लॉन्च करते हैं:
    python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
    

इस आदेश को निष्पादित करने के परिणामस्वरूप, एक मॉडल के साथ एक REST सर्वर होस्ट मशीन के पोर्ट 5005 पर लॉन्च किया जाएगा (डिफ़ॉल्ट पोर्ट 5000 है)।

मॉडल को आरंभ करने के बाद, स्वैगर एपीआई दस्तावेज़ीकरण और परीक्षण करने की क्षमता यूआरएल पर पाई जा सकती है 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 का विश्लेषण करेंगे।

एपीआई डीपपावलोव

प्रत्येक डीपपावलोव मॉडल में कम से कम एक इनपुट तर्क होता है। REST API में, तर्कों को नाम दिया गया है, उनके नाम आने वाले शब्दकोश की कुंजी हैं। अधिकांश मामलों में, तर्क वह पाठ है जिसे संसाधित करने की आवश्यकता होती है। मॉडलों द्वारा लौटाए गए तर्कों और मूल्यों के बारे में अधिक जानकारी दस्तावेज़ के मॉडल अनुभाग में पाई जा सकती है डीपपावलोव

उदाहरण में, दो स्ट्रिंग्स की एक सूची तर्क x को पास की गई थी, जिनमें से प्रत्येक को अलग मार्कअप दिया गया था। डीपपावलोव में, सभी मॉडल इनपुट के रूप में मूल्यों की एक सूची (बैच) लेते हैं जिन्हें स्वतंत्र रूप से संसाधित किया जाता है।

शब्द "बैच" मशीन लर्निंग के क्षेत्र को संदर्भित करता है और एक एल्गोरिदम या तंत्रिका नेटवर्क द्वारा एक साथ संसाधित स्वतंत्र इनपुट मानों के एक बैच को संदर्भित करता है। यह दृष्टिकोण आपको अलग से इनपुट को दिए गए समान मान की तुलना में मॉडल द्वारा बैच के एक तत्व को संसाधित करने के समय को (अक्सर महत्वपूर्ण रूप से) कम करने की अनुमति देता है। लेकिन प्रसंस्करण परिणाम सभी तत्वों के संसाधित होने के बाद ही जारी किया जाता है। इसलिए, आने वाले बैच को बनाते समय, मॉडल की गति और उसके प्रत्येक व्यक्तिगत तत्व के लिए आवश्यक प्रसंस्करण समय को ध्यान में रखना आवश्यक होगा।

यदि डीपपावलोव मॉडल में कई तर्क हैं, तो उनमें से प्रत्येक को मूल्यों का अपना बैच प्राप्त होता है, और आउटपुट पर मॉडल हमेशा उत्तरों का एक बैच उत्पन्न करता है। आउटगोइंग बैच के तत्व आने वाले बैचों के तत्वों को उसी सूचकांक के साथ संसाधित करने के परिणाम हैं।

उपरोक्त उदाहरण में, मॉडल का परिणाम प्रत्येक स्ट्रिंग को टोकन (शब्द और विराम चिह्न) में तोड़ना और नामित इकाई (संगठन का नाम, मुद्रा) के सापेक्ष टोकन को वर्गीकृत करना था जिसका वह प्रतिनिधित्व करता है। वर्तमान में मॉडल ner_ontonotes_bert_mult 18 प्रकार की नामित संस्थाओं को पहचानने में सक्षम, विस्तृत विवरण पाया जा सकता है यहां.

डीपपावलोव द्वारा अन्य आउट-ऑफ़-द-बॉक्स मॉडल

एनईआर के अलावा, निम्नलिखित आउट-ऑफ़-द-बॉक्स मॉडल लेखन के समय डीपपावलोव में उपलब्ध हैं:

पाठ प्रश्न उत्तर

इस पाठ के एक अंश के साथ पाठ के प्रश्न का उत्तर दें। मॉडल कॉन्फ़िग: स्क्वाड_आरयू_बर्ट_इनफ़र

उदाहरण अनुरोध:

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

रिजल्ट:

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

अपमान का पता लगाना

उस व्यक्ति के अपमान की उपस्थिति का पता लगाना जिसे पाठ संबोधित किया गया है (लेखन के समय - केवल अंग्रेजी के लिए)। मॉडल कॉन्फ़िग: इंसल्ट्स_कागल_कॉन्व_बर्ट

उदाहरण अनुरोध:


{
  "x": [
    "Money talks, bullshit walks.",
    "You are not the brightest one."
  ]
}

रिजल्ट:

[
  ["Not Insult"],
  ["Insult"]
]

भावनाओं का विश्लेषण

पाठ्य भावना का वर्गीकरण (सकारात्मक, तटस्थ, नकारात्मक)। मॉडल कॉन्फ़िग: रुसेन्टिमेंट_एल्मो_ट्विटर_सीएनएन

उदाहरण अनुरोध:

{
  "x": [
    "Мне нравится библиотека DeepPavlov.",
    "Я слышал о библиотеке DeepPavlov.",
    "Меня бесят тролли и анонимусы."
  ]
}

रिजल्ट:

[
  ["positive"],
  ["neutral"],
  ["negative"]
]

पैराफ़्रेज़ डिटेक्शन

यह निर्धारित करना कि क्या दो अलग-अलग पाठों का अर्थ समान है। मॉडल कॉन्फ़िग: स्टैंड_पैराफ़्रेज़र_एन

प्रश्न:

{
  "text_a": [
    "Город погружается в сон, просыпается Мафия.",
    "Президент США пригрозил расторжением договора с Германией."
  ],
  "text_b": [
    "Наступает ночь, все жители города пошли спать, а преступники проснулись.",
    "Германия не собирается поддаваться угрозам со стороны США."
  ]
}

रिजल्ट:

[
  [1],
  [0]
]

सभी आउट-ऑफ-द-बॉक्स डीपपावलोव मॉडल की वर्तमान सूची हमेशा पाई जा सकती है यहां.

निष्कर्ष

इस लेख में, हम डीपपावलोव एपीआई और बॉक्स से बाहर प्रदान की गई लाइब्रेरी की कुछ टेक्स्ट प्रोसेसिंग क्षमताओं से परिचित हुए। यह ध्यान में रखा जाना चाहिए कि किसी भी एनएलपी कार्य के लिए, कार्य के विषय क्षेत्र (डोमेन) के अनुरूप डेटा सेट पर मॉडल को प्रशिक्षित करते समय सबसे अच्छा परिणाम प्राप्त किया जाएगा। इसके अलावा, सिद्धांत रूप में, और भी अधिक मॉडलों को सभी स्थितियों के लिए प्रशिक्षित नहीं किया जा सकता है।

निम्नलिखित लेखों में हम लाइब्रेरी की अतिरिक्त सेटिंग्स देखेंगे, डॉकर से डीपपावलोव को लॉन्च करेंगे, और फिर हम प्रशिक्षण मॉडल की ओर बढ़ेंगे। और यह मत भूलो कि डीपपावलोव के पास है форум - लाइब्रेरी और मॉडलों के संबंध में अपने प्रश्न पूछें। आपके ध्यान देने के लिए धन्यवाद!

स्रोत: www.habr.com

एक टिप्पणी जोड़ें