चैटबॉट के हुड के तहत: RocketBot क्या और कैसे काम कर सकता है

RocketBot एक प्रोग्राम करने योग्य चैट बॉट है जो VK, Telegram और Bitrix24 के साथ एकीकृत होता है। आज हम बुनियादी ढांचे और अन्य प्रौद्योगिकियों के बारे में बात करेंगे, जिस पर यह बनाया गया है।


/ फोटो डारिएल ब्राटन सीसी BY-SA

उपकरण


RocketBot को विकसित करते समय, हमने विकास और प्रोटोटाइप की गति पर ध्यान केंद्रित किया। इस कारण से, सिस्टम पायथन में लिखा गया है, और MySQL डेटाबेस के रूप में चुना गया है।

आज तक, पायथन लोकप्रियता में TIOBE रैंकिंग में तीसरे स्थान पर है। इसका मतलब है कि भाषा में एक बड़ा समुदाय और संदर्भ साहित्य की एक अंतहीन राशि है: किताबें, साइटें, पाठ्यक्रम और स्रोत कोड। उदाहरण के लिए, GitHub पर आप पायथन में विकसित होने के लिए सर्वोत्तम प्रथाओं का संग्रह पा सकते हैं, और स्टैकऑवरफ़्लो पर बड़ी संख्या में धागे खुले हैं । ओ 'रेली पब्लिशिंग हाउस ने बहुत सी किताबें इस भाषा को समर्पित की हैं; कोई इसे " पायथॉन में हिचहाइकिंग " और " मशीन लर्निंग विथ पायथन " से अलग कर सकता है।

बड़ी संख्या में स्रोतों के अलावा, पायथन के मुख्य लाभों में से एक पुस्तकालयों और कार्यात्मक एमएल-फ्रेमवर्क की विविधता है। उदाहरण PyTorch और SciKit-learn हैं - ये शक्तिशाली उपकरण हैं जो प्राकृतिक भाषण, संवाद और लिपियों के प्रसंस्करण को सरल बनाते हैं।

विशेष रूप से, प्रशिक्षण मॉडल के विकास के लिए, हमने PyTorch का उपयोग किया, क्योंकि इसमें प्रोटोटाइप के लिए व्यापक क्षमताएं हैं। इसके अलावा, हमने स्किकिट-लर्न लागू किया, जो डेटा प्रीप्रोसेसिंग के साथ-साथ pymorth2 और gensim (क्रमशः आकृति विज्ञान और पाठ वेक्टराइजेशन के साथ काम करने के लिए) करता है। हम दीपपावलोव का भी अनुभव करते हैं - हम इसकी क्षमताओं का मूल्यांकन करते हैं।

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

हमारे चैट बॉट क्या कर सकते हैं


हमारी चैटबोट आपको उपयोगकर्ता प्रश्नों के स्वचालित उत्तर (उदाहरण के लिए, अक्सर पूछे जाने वाले प्रश्न को लागू करने के लिए), साथ ही साथ स्क्रिप्ट का उपयोग करके नियमित संचालन (उदाहरण के लिए, चुनाव) को स्वचालित करने की अनुमति देती है।

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

सिमेंटिक निकटता का मूल्यांकन करने के लिए, क्वेरी के एक वेक्टर प्रतिनिधित्व का उपयोग किया जाता है। यह मुख्य घटकों ( पीसीए ) की पहचान करता है और डेटाबेस में निकटतम दूरी के विकल्प की खोज करता है। हमारे मामले में, cosine_similarity (sciki-learn) मीट्रिक ने सबसे अच्छा प्रदर्शन किया।

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

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

स्क्रिप्ट संकलित करने के लिए, तीन प्रकार के ब्लॉक का उपयोग किया जाता है:

  1. प्रश्न ब्लॉक - उपयोगकर्ता से एक प्रश्न पूछता है और एक चर में इसका उत्तर लिखता है।
  2. शर्तों के ब्लॉक - स्क्रिप्ट की शाखाएं लागू होती हैं।
  3. वैरिएबल चेक ब्लॉक - स्क्रिप्ट के अनुसार उपयोगकर्ता के मार्ग को नियंत्रित करता है।

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


प्रश्न "उत्तर" के साथ स्क्रिप्ट से बाहर निकलने के साथ सेटिंग्स का एक उदाहरण "क्या आप 18 वर्ष के हैं?"

लेकिन इस सब के साथ, हम ग्राहक को उसकी स्क्रिप्ट को फ्लोचार्ट के अनुसार कॉन्फ़िगर करने में मदद कर सकते हैं, जिसे वह xmind या ग्राफ़ की तरह चित्रमय संपादक में आकर्षित करेगा। हम एल्गोरिथ्म को स्वतंत्र रूप से सत्यापित करेंगे और प्रारंभिक सेटअप करेंगे - इसमें आमतौर पर कई घंटे लगते हैं।

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

अप्रत्याशित व्यवहार के साथ संभावित कठिनाइयों के कारण हमने बुद्धिमान समाधान के लिए कार्यों की सीमा को सीमित कर दिया है। आधुनिक एआई सिस्टम अभी भी त्रुटि प्रवण हैं, और व्यावसायिक सेवाएँ बनाते समय बॉट के लिए एक तरह से 80% प्रश्नों का जवाब देना असंभव है, और दूसरे में अन्य 20% तक।

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

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

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


/ फोटो स्पेंसर सहयोग CC BY-ND

जिस बुनियादी ढांचे पर चैटबॉट बनाया गया है


हमारी सभी सेवाएँ IT-GRAD क्लाउड - फ्रंटेंड सर्वर, डेटाबेस और एप्लिकेशन सर्वर में होस्ट की जाती हैं। सामान्य तौर पर, क्लाउड इंफ्रास्ट्रक्चर हमें अपनी सेवाओं को जल्दी से बढ़ाने, बढ़ते लोड और अचानक ट्रैफ़िक बढ़ने से निपटने में मदद करता है। इस कारण से, भविष्य में हम केवल क्लाउड में अपनी उपस्थिति का विस्तार करने की योजना बनाते हैं।

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

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



अतिरिक्त पढ़ने - पहले कॉर्पोरेट IaaS ब्लॉग से पोस्ट:


हमारे टेलीग्राम चैनल से:

Source: https://habr.com/ru/post/hi438536/


All Articles