चॉम्स्की टाइप- I (संदर्भ-संवेदनशील) व्याकरण का उपयोग करने का एक वास्तविक-विश्व उपयोग मामला क्या है


9

मैं कुछ मजेदार ढंग से भाषा पार्सर्स के विकास की खोज में रहा हूं कि वे चॉम्स्की हायरार्की में कैसे फिट होते हैं।

संदर्भ-संवेदी व्याकरण का एक अच्छा वास्तविक-संसार (यानी सैद्धांतिक नहीं) उदाहरण क्या है?


8
क्या प्रोग्रामिंग लैंग्वेज की गिनती होती है?
मार्टिन यॉर्क

@ लोकीअस्तारी बेशक।
इवान प्लाइस

2
मुझे लगता है कि प्रोग्रामिंग भाषाओं की गिनती होती है, लेकिन एक अच्छे समाधान के लिए नहीं बनाते हैं, क्योंकि संदर्भ-संवेदनशीलता की जटिलता आम तौर पर एक संदर्भ-मुक्त व्याकरण के बजाय अर्थ विश्लेषण से बदल जाती है।
फ्रैंक

@Frank मुझे लगता है कि मेरी समस्या यह है, मैं वास्तव में समझ नहीं सकता कि एक संदर्भ-संवेदनशील भाषाओं को कुछ वास्तविक दुनिया के उपयोग पर लागू किए बिना क्या है।
इवान प्लाइस

कुछ मानव भाषाएं हैं जिन्हें पुनरावृत्ति करने योग्य भाषा पार्सर्स की आवश्यकता नहीं हो सकती है और इस प्रकार भाषाओं के प्रकार 1 (संदर्भ सेन्स्टिव) में आते हैं। cs.virginia.edu/~evans/cs3102/?p=138

जवाबों:


9

अच्छा प्रश्न। हालाँकि जैसा कि टिप्पणियों में उल्लेख किया गया है कि बहुत सी प्रोग्रामिंग भाषाएं संदर्भ-संवेदनशील हैं, संदर्भ-संवेदनशीलता अक्सर पार्सिंग चरण में हल नहीं होती है, लेकिन बाद के चरणों में - अर्थात, भाषा का एक सुपरसेट एक संदर्भ-मुक्त व्याकरण का उपयोग करके पार्स किया जाता है और उन पार्स के कुछ पेड़ों को बाद में छान लिया जाता है।

हालांकि, इसका मतलब यह नहीं है कि वे भाषाएं संदर्भ-संवेदनशील नहीं हैं , इसलिए यहां कुछ उदाहरण दिए गए हैं:


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

a @@ b @@ c ## d ## e

जब तक आपने पहले से / के लिए पूर्ववर्ती घोषणा / सहानुभूति घोषणाओं को पार्स नहीं किया है @@और ##:

infixr 8 @@
infixr 6 ##

एक दूसरा उदाहरण बेनकोड है , एक डेटा भाषा जो अपनी लंबाई के साथ सामग्री को उपसर्ग करती है:

<length>:<contents>

इस प्रारूप के साथ मुद्दा यह है कि किसी भी संदर्भ-संवेदनशील के बिना पार्स करना बहुत असंभव है, क्योंकि "फ़ील्ड" आकारों का पता लगाने का एकमात्र तरीका है ... स्ट्रिंग को पार्स करना।


एक तीसरा उदाहरण एक्सएमएल है, यह मानते हुए कि मनमाने ढंग से टैग नामों की अनुमति है: टैग नाम खोलने के लिए करीब टैग मिलान होना चाहिए:

<hi>
 <bye>
 the closing tag has to match bye
 </bye>
</hi> <!-- has to match "hi" -->

दिलचस्प। मुझे XML के बारे में पता था। मुझे संदेह है कि XHTML 1.0 के पीछे की ड्राइव 'quirks मोड' HTML दुभाषियों से दूर जाने के लिए थी जो एक क्लीनर संदर्भ-मुक्त XML के संदर्भ-संवेदनशील अपवादों का समर्थन करती है।
इवान प्लाइस

@EvanPlaice मैं आपकी टिप्पणी से भ्रमित हूं - "क्लीन एक्सएमएल" संदर्भ-संवेदनशील है जैसा मैंने अपने उदाहरण में दिखाया है।

4
@MattFenwick मुझे लगता है कि आपका XML उदाहरण असली कारण नहीं दिखाता है कि XML संदर्भ-मुक्त क्यों नहीं है। कारण यह है कि मनमाने ढंग से टैग नामों की अनुमति है। यदि केवल टैग के एक विशिष्ट सेट की अनुमति थी तो XML संदर्भ मुक्त होगा।
होन्ज़ा ब्रेबेक

@HonzaBrabec आप सही कह रहे हैं - मुझे लगता है कि मनमाने ढंग से टैग नामों की अनुमति है। मुझे स्पष्ट रूप से यह कहना चाहिए था कि धारणा। उसे इंगित करने के लिए धन्यवाद!

3

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

हो सकता है, आप इनमें से किसी एक पुस्तकालय में वास्तविक उपयोग के कुछ उदाहरण पा सकें:

http://en.wikipedia.org/wiki/List_of_natural_language_processing_toolkits

http://opennlp.sourceforge.net/projects.html

http://nltk.org/

http://nlp.stanford.edu/nlp/javadoc/javanlp/


2
HTML 'quirks मोड' और कोड प्रीप्रोसेसर के बारे में क्या वे नहीं गिनेंगे?
इवान प्लाइस

2

कभी-कभी प्रोग्रामिंग भाषा के शब्दार्थों के विवरण में संदर्भ संवेदनशील व्याकरण का उपयोग किया जाता है। संदर्भ संवेदी व्याकरणों का शायद सबसे व्यापक उपयोग अल्गोल 68 भाषा की परिभाषा थी। यह दो स्तरीय संदर्भ मुक्त व्याकरण का उपयोग करता था (देखें http://en.wikipedia.org/wiki/Two-level_grammar ) Algol68 कार्यक्रमों के वाक्य विन्यास और शब्दार्थ दोनों का वर्णन करने के लिए।

मेरे सहकर्मियों के एक जोड़े ने वैन विजेंगार्डन व्याकरण का उपयोग अल्गोल 68 के उनके कार्यान्वयन को निर्देशित करने के लिए किया (देखें http://en.wikipedia.org/wiki/FLACC )।

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