क्या एक अर्ली पार्सर को डीएफए के लिए लेवेन्शेटिन ऑटोमेटा एल्गो के समान एक फजी पार्सर में बनाया जा सकता है?


10

फजी पार्सिंग करने के लिए एक तरीका है (एक निश्चित संपादित दूरी के लिए टाइपो के साथ भी तार को स्वीकार करता है), एक डीएफए और इनपुट शब्द के रनवे लेवांशिन ऑटोमेटा के साथ। क्या एली पार्सर के साथ भी कुछ ऐसा ही किया जा सकता है? मुझे एल्गोरिथ्म को समझने में मुश्किल हो रही है, अकेले इस प्रश्न का उत्तर दें।


1
खैर, पीडीए एनएफए के साथ कई ऑपरेशनों के खिलाफ बंद हैं, इसलिए यह सिद्धांत रूप में संभव होना चाहिए। एडाप्टिंग अर्ली एक रॉट एक्सरसाइज लगती है, क्योंकि हमें आइटम में काउंटर का उपयोग करने की अनुमति है। क्या मैं कुछ भूल रहा हूँ?
राफेल

@ राफेल हां यह सामान्य विचार है। मेरा जवाब लंबा है, क्योंकि यह आकलन करना मुश्किल है कि उपयोगकर्ता क्या जानते हैं या नहीं जानते हैं।
Babou

plz "लेवेन्सहाइट ऑटोमेटा" के लिए रेफ / स्केच डिफ का हवाला देते हैं। उस एक के बारे में जानना जो योग्य हो सकता है, लेकिन आप किसका उल्लेख कर रहे हैं?
vzn

जवाबों:


8

इसका जवाब है हाँ। हालाँकि मैं ऐसा नहीं करूँगा कि अर्ली पार्सर के साथ हो क्योंकि समान क्षमताओं वाले सरल व्यक्ति हैं।

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

इन परसर्स को समझने के दो तरीके (कम से कम) हैं:

  • इनपुट स्ट्रिंग पर व्याकरण के अनुरूप एक पुशडाउन ऑटोमैटन की गतिशील प्रोग्रामिंग व्याख्या;

  • एक परिमित राज्य ऑटोमेटन के साथ व्याकरण के चौराहे के निर्माण के रूप में।

जब एक स्ट्रिंग को पार्स किया जाता है, तो माना जाने वाला परिमित राज्य ऑटोमेटोन एक रैखिक ऑटोमेटन है जो केवल स्ट्रिंग को पार्स करने के लिए पहचानता है, एक समय में एक प्रतीक (राज्य की संख्या )। यदि आप FA और CF Garmmar (Bar Hillel, Perlis, Shamir 1961) के क्रॉस-प्रोडक्ट निर्माण को लागू करते हैं , तो आपको एक नया CF व्याकरण मिलता है, जो एक नया व्याकरण जो करता है। । दिलचस्प बात यह है कि आमतौर पर अनदेखी की जाती है कि द्वारा उपयोग किए गए पार्स-पेड़ों को संरक्षित करता है , गैर-टर्मिनलों के नामकरण (क्रॉस-उत्पाद के कारण) तक।w|w|+1AGFL(A)L(G)FG

इस प्रकार यदि एफए केवल आपके इनपुट स्ट्रिंग को उत्पन्न करता है , तो व्याकरण केवल उस स्ट्रिंग को उत्पन्न करेगा (यदि यह in , अन्यथा यह खाली भाषा उत्पन्न करता है )। इसके अलावा, यह इसे उन सभी पार्स-पेड़ों के साथ उत्पन्न करता है जो इसे उत्पन्न करने के लिए उपयोग कर सकते थे।AFL(G)G

यह व्याकरण है जिसे आमतौर पर साझा पार्स वन कहा जाता है , और सभी सामान्य CF पार्सिंग एल्गोरिदम क्रॉस-प्रोडक्ट निर्माण का अधिक या कम अनुकूलित संस्करण हैं, चाहे CYK, Earley, सामान्यीकृत LR या LL, या अन्य। इतना सब मैं कह रहा हूं कि उन पर भी लागू होता है।F

लेकिन, जैसा कि आप देखते हैं, यह एक पूरे नियमित सेट को पार्स करने के लिए सामान्यीकृत है, अगर किसी को भी ऐसा करने में दिलचस्पी है।

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

यदि आप अपने व्याकरण साथ क्रॉस-उत्पाद करते हैं , तो आपको एक साझा पार्स वन व्याकरण मिलता है जो चौराहे के सभी तारों को उत्पन्न करता है। इसके अलावा, आपको कुछ नियमों पर भार प्राप्त होते हैं ताकि आप प्रत्येक स्वीकृत स्ट्रिंग्स की संपादित दूरी की गणना कर सकें।GF

यदि वांछनीय है, तो इसका उपयोग केवल न्यूनतम दूरी के साथ तार रखने के लिए किया जा सकता है।

हालांकि, यह थोड़ा सुधार किया जा सकता है क्योंकि परिमित राज्य मशीनों के साथ रचना सहयोगी है।

यदि आप हमेशा एक ही, परिमित राज्य ट्रांसड्यूसर का उपयोग करते हैं, जैसा कि आपके प्रश्न में है, तो इसके बारे में जाने का सही तरीका है, ग्रामर और ट्रांसड्यूसर (यहां लेवेंसहेटिन ऑटोमेटन), स्वतंत्र रूप से इनपुट स्ट्रिंग की रचना करना । यह आपको एक भारित व्याकरण देता है जिसका उपयोग आप इनपुट स्ट्रिंग को पार्स करने के लिए कर सकते हैं । समस्या यह है कि क्रूर चौराहे के निर्माण के साथ पार्सिंग आपको किसी भी लेवेन्स्हेटिन दूरी, यानी पर तार देता है ।GwΣ

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


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

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