एनएलपी: वर्तनी जाँच - एक अंदर देखो (भाग 4)

(भाग 1 , 2 , 3 ) चौथे भाग में, हम टोकन वाक्यों के बाहर व्याकरण की जाँच के बारे में बात करेंगे।



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



LanguageTool लेखक अलग व्याकरणिक पैटर्न बनाने की कोशिश करते हैं। व्यवहार में, काफी जटिल संरचनाएं प्राप्त की जाती हैं जो सीमित संख्या में मामलों में काम करती हैं। उदाहरण के लिए:



<टोकन पोस्टैग = "SENT_START" > </ टोकन>

<टोकन पोस्टैग = "डीटी" > </ टोकन>

<टोकन पोस्टैग = " एनएनएस " > </ टोकन>

<टोकन पोस्टैग = "VBZ" > </ टोकन>



* इस सोर्स कोड को सोर्स कोड हाइलाइटर के साथ हाइलाइट किया गया था।


"एक वाक्य एक परिभाषित शब्द के साथ शुरू होता है, फिर बहुवचन में एक संज्ञा, फिर तीसरे व्यक्ति में एक क्रिया, एकवचन आता है।" "बिल्लियाँ दूध पीती हैं" जैसे अंश इस परिभाषा के अंतर्गत आते हैं। जाहिर है, क्रिया पहले व्यक्ति के रूप (पेय) में होनी चाहिए। जैसा कि आप देख सकते हैं, यह नियम केवल एक वाक्य की शुरुआत में और केवल स्पष्ट रूप से परिभाषित स्थिति के लिए काम करता है। संभवतः, लेखकों को झूठी सकारात्मकता से बचने के लिए पुनर्बीमा दिया गया है (यह स्पष्ट है कि निकटता वाले शब्द "संज्ञा + क्रिया" की हर जोड़ी "विषय + विधेय" के रूप का एक गुच्छा नहीं है)।



मैं प्राकृतिक भाषा पार्सर (पार्सर) का उपयोग करके अधिक विश्वसनीय विकल्प देखता हूं।



पार्सिंग के बारे में

एक पार्सर एक मॉड्यूल है जो एक इनपुट वाक्य के लिए शब्दों के बीच लिंक का एक पेड़ बनाता है। "मुझे बड़े कुत्ते से प्यार है" वाक्यांश के लिए इस तरह के एक पेड़ का एक उदाहरण नोटों के दूसरे भाग में दिया गया था:







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







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



शायद, पार्सर पर मुझे काम में पहला गग था। एक अच्छा पार्सर ढूंढना कठिन है (वैसे, स्प्लिटर और पीओएस टैगर भी, लेकिन आप जल्दी से उन्हें स्वयं लिख सकते हैं, क्योंकि सहायक पुस्तकालय हैं)। हमारे पास अभी भी एक व्यावहारिक परियोजना है, और हम चाहेंगे कि यह मॉड्यूल C / C ++ में (a) हो (क्योंकि हमारी पूरी परियोजना इस पर है); (बी) नि: शुल्क था या उचित पैसा खर्च करना था; (ग) समर्थित निर्भरता लिंक; (d) नई भाषाओं के अनुकूल था।



मैंने बहुत समय खोजा, बहुत सारे परसों का परीक्षण किया। पूर्ण भ्रम है - कोई व्यक्ति पार्सर (एलजीपीएल) पर पकड़ नहीं रखता है, कोई अवास्तविक धन चाहता है (उन्होंने मुझे 100 और यहां तक ​​कि 300 हजार यूरो की कीमतें कहा - मेरी राय में, यह अच्छाई और बुराई से परे है), और किसी के लिए फिर बिक्री का प्रतिशत आवश्यक है। ठीक है, पार्सर सिस्टम में मुख्य मॉड्यूल होगा, लेकिन ऐसा नहीं है, यह व्याकरण जाँच मॉड्यूल का सिर्फ एक हिस्सा है!



कुछ महीने पहले, मैंने MaltParser परियोजना पर ध्यान केंद्रित करने का निर्णय लिया। यह सभी के लिए अच्छा है (यह तथाकथित गैर-प्रोजेक्टिव कनेक्शन का समर्थन भी करता है, जो अच्छा है), लेखकों द्वारा चुनी गई भाषा को छोड़कर - जावा। मैं पहले से ही बुलेट को काटने और C ++ में कोड को फिर से लिखने की तैयारी कर रहा था (और कोड बहुत है ...), लेकिन अभी हाल ही में LDPar नामक एक नया प्रोजेक्ट तैयार किया गया था। मुझे नहीं पता कि वह पार्सिंग की गुणवत्ता के साथ कैसे व्यवहार करता है, लेकिन अन्य मानदंडों के अनुसार यह फिट बैठता है। चीन दुनिया को बचाएगा! खैर, या कम से कम हमारी परियोजना :)



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



हम पेड़ की जड़ को लेते हैं, जांचते हैं कि जड़ एक क्रिया है - फिर यह विधेय है।

हम इसके साथ जुड़े पहले संज्ञा या सर्वनाम की तलाश कर रहे हैं - यह विषय है।

हम चेहरे और संख्या में संगतता की जांच करते हैं।



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



इसलिए, मैं आज के लिए खत्म कर रहा हूं, और अगले भाग में हम आदिवासियों के बारे में कुछ और बात करेंगे।



All Articles