मैं अर्ली वेक्टर से वाक्यविन्यास के पेड़ों के जंगल का पुनर्निर्माण कैसे करूं?


9

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

पार्सिंग ट्री (रों) को फिर से बनाने के लिए अर्ली वेक्टर का उपयोग करना कम स्पष्ट है। वास्तव में, मैं यह पता नहीं लगा सकता कि एक एल्गोरिदमिक प्रक्रिया कैसे काम करेगी, इसके अलावा केवल मेरे द्वारा पाया गया संदर्भ अस्पष्ट या अति-तकनीकी था। क्या कोई इस पर कुछ प्रकाश डाल सकता है?


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

1
यह हो सकता है कि जिसे आप वेक्टर कहते हैं, वह वह नहीं है, जिसे अर्ले अपने मूल पेपर में वेक्टर कहता है। या यह हो सकता है कि यह ठीक वैसी ही भूमिका न निभाए। लेखक एल्गोरिदम में बदलाव पेश करते हैं। यह जानने का कोई तरीका नहीं है कि आप अपने द्वारा उपयोग किए जा रहे दस्तावेज़ों को कोई संदर्भ नहीं देते हैं ... और हमारे पास वैसे भी उन तक पहुंच नहीं हो सकती है। परिभाषाओं के बारे में अधिक स्पष्ट होने के लिए क्या मदद कर सकता है। जवाब देते समय, मैंने सिर्फ यह माना कि आपने अर्ली के समान परिभाषाओं का उपयोग किया है।
बाबू

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

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

क्या मेरा स्पष्टीकरण सहायक था, या क्या आपको तकनीकी भाग के अधिक विस्तृत विवरण की आवश्यकता है?
Babou

जवाबों:


9

मैं इयरली के पेपर से शब्दावली और अंकन का उपयोग कर रहा हूं । यह संभव है कि आपके द्वारा पढ़ा गया वर्णन अलग हो।

यह बार-बार लगता है कि सामान्य सीएफ पार्सिंग एल्गोरिदम को पहली बार एक पहचानकर्ता के रूप में प्रस्तुत किया जाता है, और फिर वास्तव में पार्स पेड़ों और पार्स जंगलों के निर्माण के लिए आवश्यक सूचना प्रबंधन को बाद में जोड़ा गया है। एक कारण यह हो सकता है कि साझा किए गए जंगल के निर्माण के लिए आवश्यक जानकारी को रखने के लिए घन स्थान आवश्यकता होती है, जहाँ इनपुट स्ट्रिंग की लंबाई पार्स हो रही है, लेकिन पहचान के लिए स्थान की आवश्यकता केवल वर्ग है। , जब यह जानकारी संरक्षित नहीं है। इस अंतरिक्ष जटिलता में वृद्धि का कारण काफी सरल है: पार्स वन का आकार घन हो सकता है।O(n3)nO(n2)

सबसे खराब स्थिति समय जटिलता , जैसा कि सर्वविदित है।O(n3)

अर्ली के एल्गोरिथ्म के लिए सबसे अच्छा संदर्भ बेशक एले के पेपर है , लेकिन यह पार्स वन के निर्माण के बारे में बहुत स्पष्ट नहीं है। यह वास्तव में एक गन्दा व्यवसाय हो सकता है, धारा 7 पृष्ठ 101 की तेज़ बात से अधिक प्रकट होगा। सच कहूं तो, अर्ले पार्स वन, या जंगल की बात नहीं करता, बल्कि " सभी संभावित पार्स पेड़ों का एक सचित्र प्रतिनिधित्व " करता है। और उसके लिए एक अच्छा कारण है: अगर उसने अपने व्याकरण के अनुसार जंगल का उत्पादन करने की कोशिश की, तो उसका स्थान (इसलिए समय) जटिलता की सीमा पर चढ़ जाएगी जहां सबसे लंबे आकार का होता है दाहिने हाथ से शासन करें। यही कारण है कि अन्य एल्गोरिदम बाइनरी रूप में व्याकरण का उपयोग करते हैं (जरूरी नहीं कि चॉम्स्की नॉर्मल फॉर्म (CNF))।O(ns+1)s

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

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

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

अर्ली के लेख के खंड 7 में, वह बताते हैं कि "पहचानकर्ता को पार्सर बनाने के लिए", यानी पार्स पेड़ों को पुनर्प्राप्त करने में सक्षम होने के लिए, जिस तरह से पूर्णताएं होती हैं, उस पर नज़र रखना आवश्यक है।

हर बार जब हम ऑपरेशन करते हैं, तो एक स्टेट जोड़ते हैं (लुकहैड को नजरअंदाज करते हुए) हम उस स्थिति में के उदाहरण से राज्य तक सूचक बनाते हैं जिसके कारण हमें ऑपरेशन करना पड़ा। यह इंगित करता है कि को रूप में पार्स किया गया था । यदि D अस्पष्ट है, तो इसमें से एक बिंदु का एक समूह होगा, प्रत्येक ऑपरेशन के लिए जो कारण बनता है को विशेष राज्य के सेट में जोड़ा जाएगा। प्रत्येक प्रतीक में (जब तक कि यह टर्मिनल नहीं है), और इसी तरह से पॉइंटर्स भी होंगे, इस प्रकार लिए व्युत्पन्न पेड़ का प्रतिनिधित्व करेंगे ।EαD.βgDDγ.fDγEαD.βgγD

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

इस तरह के एक सूचक (उद्धरण में वर्णित है) हम जानते हैं कि से नियम उदाहरण में को ही एक पेड़ (या वन) के रूप में विकसित किया जा सकता है, जो इनपुट स्ट्रिंग को इंडेक्स से इंडेक्स , जिसे हम नोट । ठीक नीचे नोड्स को नियम द्वारा दिया गया है । पूर्णता की तलाश करके जो ओर ले जाता है हम इसके बाद अन्य ऐसे पॉइंटर्स पा सकते हैं जो बताते हैं कि का अंतिम चिन्ह कैसे हैDEαD.βgwf+1gwf+1:gDDγDγ.fDप्राप्त किया गया था, और इसलिए संभव पार्स पेड़ों पर अधिक जानकारी। इसके अलावा एक पूरा होने की स्थिति को देखते हुए, जो कि इयरली स्टेट सेट में अंतिम से पहले प्रतीक को देखते हैं, आप पाते हैं कि यह कैसे प्राप्त किया गया था, और इसी तरह।

मान लें कि आपने सभी आवश्यक बिंदुओं को कागज में इंगित किया है, तो आप पार्सर द्वारा मान्यता प्राप्त अंतिम प्रतीक से शुरू होने वाले सभी साझा पेड़ अभ्यावेदन प्राप्त कर सकते हैं, जो निश्चित रूप से व्याकरण का प्रारंभिक प्रतीक है।

लेकिन मैंने गन्दा हिस्सा भी छोड़ दिया । मान लीजिए कि आपके पास एक नियम , जिसे मैं दाहिने हाथ की तरफ 2 प्रतीकों से अधिक समय तक चुनता हूं, और एक अस्पष्ट व्याकरण के लिए एक और नियम ।UXYZWUV

यह अच्छी तरह से हो सकता है कि पार्सर को , में और दोनों और में । तो, नियम के साथ , दोनों और में पार्स ।wf+1:gXwg+1:hYwh+1:iwh+1:jZUXYZwf+1:iwf+1:jU

तो फिर यह भी हो सकता है कि दोनों और में दोनों पार्स । फिर, नियम , स्ट्रिंग दो अलग-अलग तरीके से में पार्स होता है , जो व्याकरण की अस्पष्टता के अनुरूप होता है।wi+1:kwj+1:kVWUVwf+1:kW

बेशक, दोहराए जाने वाले संगणना से बचने के लिए, अर्ले का एल्गोरिथ्म दो पार्सिंग संगणनाओं को यथासंभव साझा करने का प्रयास करेगा। यह वास्तव में क्या साझा करेगा जाहिर तौर पर और में और की मान्यता (और पार्सिंग) है । लेकिन यह वास्तव में थोड़ा और अधिक करेगा: यह दो अलग-अलग पार्स की शुरुआत को भी साझा करेगा जो को नियम साथ पहचानते हैं । मेरे मतलब यह है कि राज्य केवल एक बार मिल जाएगा (जो मैं वर्णन कर रहा हूं उसके संबंध में), राज्य सेट । यह दो पार्स का एक आम हिस्सा होगा। बेशक, चीजों को दूर करते समय अस्थायी रूप से विचलन होगाwf+1:gwg+1:hXYUUXYZUXY.ZfShZ बाद से वे डिस्टिक्टिंग सबस्ट्रिंग के अनुरूप होते हैं, जब तक कि वे फिर से अभिसरण न कर लें जब सब कुछ W में बदल जाता है, जब राज्य राज्य सेट में दो बार निर्मित ।WUV.fSk

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

व्याकरण को बदलने के बिना, सियामी जुड़वाँ को अलग करने के लिए कोई भी प्रयास, वृद्धि की जटिलता में परिणाम देगा। इसे करने का सही तरीका व्याकरण का द्वैत करना है।

उम्मीद है इससे आपको मदद मिलेगी। मुझे बताएं। लेकिन मैं जोर देकर कहता हूं कि CYK पार्सिंग की अच्छी समझ मदद कर सकती है। इयरली की तुलना में सरल अन्य एल्गोरिदम हैं, जो सभी सीएफ भाषाओं को कुशलतापूर्वक पार्स कर सकते हैं।

आप इस पार्स वन मुद्दे पर दो अन्य उत्तरों में अधिक सामान्य जानकारी पा सकते हैं: मैंने दिया: /cstheory/7374#18006 और https://linguistics.stackexchange.com/questions-4619#6120 । लेकिन वे अर्ली के एल्गोरिथ्म के विशिष्ट विवरणों में नहीं जाते हैं।


CYK पार्सिंग के साथ-साथ, यह GLR पार्सिंग में भी देखने लायक है।
छद्म नाम

1
@ सामान्य नाम सीएफ पार्सिंग के विभिन्न रूपों को जानना और समझना निश्चित रूप से नुकसान नहीं पहुंचाता है, और मैं उत्तर के अंत में दो संदर्भों के साथ सुझाव देता हूं। हालांकि, CYK की मेरी पसंद मौका के कारण नहीं थी। यह इयरली के एल्गोरिथ्म के साथ व्याख्यात्मक होने की संपत्ति साझा करता है, व्याकरण को सीधे पुश-डाउन ऑटोमेटन (जीएलआर, जीएलएल, जीपीआरईसी के रूप में) में व्याकरण के संकलन द्वारा उत्पादित तालिकाओं का उपयोग करने के बजाय। इसलिए मान्यता प्रक्रिया और पेड़ / वन पीढ़ी के बीच का संबंध अधिक स्पष्ट रूप से दिखाई देता है। CKY एक अपवाद के साथ सबसे सरल एल्गोरिथ्म भी है।
बाबू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.