वाक्य से जानकारी निकालें


11

मैं एक साधारण चैटबॉट बना रहा हूं। मैं उपयोगकर्ता प्रतिक्रिया से जानकारी प्राप्त करना चाहता हूं। एक उदाहरण परिदृश्य:

Bot : Hi, what is your name?
User: My name is Edwin.

मैं वाक्य से एडविन नाम निकालना चाहता हूं। हालाँकि, उपयोगकर्ता विभिन्न तरीकों से प्रतिक्रिया कर सकता है जैसे कि

User: Edwin is my name.
User: I am Edwin.
User: Edwin. 

मैंने शब्दों के बीच निर्भरता संबंधों पर भरोसा करने की कोशिश की है, लेकिन परिणाम अच्छा नहीं है।

इस समस्या से निपटने के लिए मैं किस तकनीक का उपयोग कर सकता हूं?

[अपडेट]

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

User: my name is edwin.

अधिकांश एनईआर इसे पहचानने में विफल रहे।


यह बताता है कि आधुनिक चैट बॉट कैसे बनाए जाते हैं, लेकिन मैं इसे सरल नहीं कहूंगा। आप "सवाल जवाब" की खोज करके अधिक जान सकते हैं।
एमर

मुझे यह पसंद है कि कैसे लोग सवाल पूछते हैं और उत्तर प्राप्त करने के लिए एक स्वीकार्य के रूप में एक उत्तर को चिह्नित करते हैं: पी
chewpakabra

जवाबों:


7

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

यह वह जगह है जहां वाक्य वाक्य का विश्लेषण भी मदद करेगा (यह मानते हुए कि अंतिम उपयोगकर्ता अपेक्षाकृत सुसंगत और उचित वाक्य में प्रवेश करता है - यदि कठबोली और पाठ के छोटे रूपों का उपयोग किया जाता है, तो भी स्टैनफोर्ड एनएलपी केवल एक निश्चित सीमा तक मदद कर सकता है)।

वाक्यविन्यास विश्लेषण / पार्सिंग और एनईआर पर लाभ उठाने का एक तरीका निम्नलिखित उदाहरणों में है -

 1. User: Edwin is my name.
 2. User: I am Edwin.
 3. User: My name is Edwin.

प्रत्येक मामले में (जैसा कि मूल रूप से मामला है), इकाई नाम (उचित नाम / संज्ञा) एक क्रिया के करीब निकटता में जुड़ा हुआ है। इसलिए, यदि आप क्रियाओं को निर्धारित करने के लिए पहले वाक्य को पार्स करते हैं और फिर एनईआर को आस-पास (+/- 1 या 2) शब्दों में लागू करते हैं, तो आपके पास समस्या को हल करने का एक अपेक्षाकृत सभ्य तरीका हो सकता है। यह समाधान मुख्य रूप से NERs की पहचान करने के लिए आपके द्वारा बनाए गए वाक्यविन्यास नियमों पर निर्भर करेगा और साथ ही क्रियाओं के आसपास की खिड़की भी।


2
आप संभवतः एक 'गैर नियतात्मक परिमित ऑटोमेटा' को लागू करेंगे, जहां प्रत्येक वाक्य एक प्रतिक्रिया है जो एक पैटर्न स्वीकार करता है। कुछ व्याकरणों को इस तरह से लागू किया जाता है। (NLP / व्याकरण)। यदि आपको यह करने की आवश्यकता है, तो फ्रेमवर्क stanfordnlp.github.io/CoreNLP
Intruso

5

आपको एनएलटीके से नामांकित एंटिटी मान्यता का उपयोग करना चाहिए, http://www.nltk.org/book/ch07.html <- आप वहां एक उपयोग उदाहरण पा सकते हैं। यह आपके वर्णित मामले के लिए काफी अच्छा काम करेगा।


4

यह आसानी से सीआरएफ के साथ किया जा सकता है । आप अपने वाक्य को टैग करने के लिए BIO एन्कोडिंग का उपयोग कर सकते हैं । फिर इसे सीआरएफ में पास करें। आपको बस प्रशिक्षण उद्देश्य के लिए कुछ टैग किए गए वाक्य बनाने हैं, जैसे कि,

 I am Edwin.
 O O  B-NAME

 You can call me Alfred
 O   O    O    O B-NAME

 My name is  Edwin   thomas
 O  O     O  B-NAME  I-NAME

CRFsuite और CRF ++ कुछ अच्छे कार्यान्वयन हैं। CRFsuite में pycrfsuite नामक एक अजगर आवरण होता है , जिसे लागू करना काफी आसान है। एनईआर के एंड-टू-एंड कार्यान्वयन के लिए इस ipython नोटबुक या github पर इस कोड स्निपेट की जाँच करें

अजगर में लिखे गए एनईआर और इंटेंट क्लासिफिकेशन के साथ जीथब पर इस ओपन सोर्स चैट बॉट प्रोजेक्ट की जांच करें । उनके पास प्रशिक्षण यूआई का उपयोग करने का एक आसान तरीका है जहां आप अपने बॉट को वाक्यों से जानकारी निकालने के लिए प्रशिक्षित कर सकते हैं।


0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.