2010-01-18 14 views
7

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

किसी व्यक्ति के लिए यह पहचानना अपेक्षाकृत आसान है: जहां सामग्री, स्वीकृतियां, या जहां मुख्य निकाय शुरू होता है और इनमें से कुछ की पहचान करने के लिए नियम आधारित सिस्टम बनाना संभव है (जैसे पैराग्राफ के रूप में)।

मुझे उम्मीद नहीं है कि यह सही होगा, लेकिन क्या कोई इस तरह के व्यापक 'ब्लॉक आधारित' लेजर/पार्सर के बारे में जानता है? या क्या आप मुझे साहित्य की दिशा में इंगित कर सकते हैं जो मदद कर सकता है?

उत्तर

1

markdown (जो संयोग से SO उपयोग करता है), reStructured text और (तर्कसंगत) POD जैसी कई हल्के मार्कअप भाषाएं आप जो बात कर रहे हैं उसके समान हैं। उनके पास पारदर्शी सिंटैक्टिक टुकड़ों में न्यूनतम वाक्यविन्यास और ब्रेक इनपुट होता है। आप उनके कार्यान्वयन के बारे में कुछ जानकारी प्राप्त कर सकते हैं।

+0

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

+0

क्या आपके पास पहले से टेक्स्ट है या आप स्क्रैच से शुरू करना चाहते हैं? शायद आप अपने मौजूदा दस्तावेज़ (यदि आपके पास एक है) को रीस्ट या कुछ में परिवर्तित कर सकते हैं और स्टॉक पार्सर का उपयोग कर सकते हैं? –

+0

समस्या यह है कि हमें नहीं पता कि नया आने वाला दस्तावेज़ कैसा दिखता है।हम जानते हैं कि हम जिस प्रक्रिया पर विचार करते हैं वह केवल अर्द्ध स्वचालित होगा। मुझे संदेह है कि मूल की प्रतिलिपि से एक पारदर्शी दस्तावेज़ बनाना आसान होगा जिसे हम किसी भी प्रासंगिक फॉर्मेटर – wilson32

0

lex/yacc के अधिकांश कार्यक्रम एक अच्छी तरह से परिभाषित व्याकरण के साथ काम करते हैं। यदि आप BNF के प्रारूप में अपने व्याकरण को परिभाषित कर सकते हैं जैसे प्रारूप (जिसमें अधिकांश पार्सर्स समान वाक्यविन्यास स्वीकार करते हैं) तो आप उनमें से किसी का भी उपयोग कर सकते हैं। यह स्पष्ट बता सकता है। हालांकि आप अभी भी पाठ के 'ब्लॉक' (टोकन) के आसपास थोड़ा अस्पष्ट हो सकते हैं जो आपके व्याकरण का हिस्सा होगा। आखिरकार आप अपने टोकन के नियमों को परिभाषित करते हैं।

मैंने अतीत में Parse-RecDescent Perl module का उपयोग इसी तरह की परियोजनाओं के लिए सफलता के विभिन्न स्तरों के साथ किया है।

क्षमा करें, यह एक अच्छा जवाब नहीं हो सकता है लेकिन समान परियोजनाओं पर मेरे अनुभव साझा करना अधिक हो सकता है।

+0

लुसीन एक सूचकांक है ना? क्या यह वास्तव में कुछ भी 'पार्स' है? –

+0

आप सही हैं। मुझे लगता है कि मैं इस तरह की कार्यक्षमता के बारे में और सोच रहा था कि 'लुसीन विश्लेषक' आपको देगा .. और शायद इस सवाल के पीछे भी बहुत कुछ मान रहा है। अगर आपको लगता है कि यह भ्रामक लगता है तो मुझे बताएं। – ziya

+0

मैं उस निष्कर्ष पर आ रहा था, लेकिन आखिरी उपाय के रूप में, मैंने सवाल पूछा। हम अपने दस्तावेजों को बीएनएफ के किसी रूप में परिभाषित करने में सक्षम हो सकते हैं, जिसे हम तब पार्स करने के लिए उपयोग कर सकते हैं। – wilson32

0
  1. एनोटेशन मानक परिभाषित करें, जो इंगित करता है कि आप चीजों को तोड़ना कैसे चाहते हैं।
  2. अमेज़ॅन मैकेनिकल तुर्क पर जाएं और लोगों को अपने एनोटेशन मानक का उपयोग करके 10 के दस्तावेज़ों को लेबल करने के लिए कहें।
  3. इस प्रशिक्षण डेटा पर एक सीआरएफ (जो एचएमएम की तरह है, लेकिन बेहतर है) को प्रशिक्षित करें।

यदि आप वास्तव में इस मार्ग पर जाना चाहते हैं, तो मैं विवरणों पर विस्तार कर सकता हूं। लेकिन यह होगा काम का।

0

कोशिश: pygments, geshi, या prettify

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

संदर्भ:
gitorius सँवारना का उपयोग करता है,
GitHub pygments का उपयोग करता है,
rosettacode Geshi का उपयोग करता है,

संबंधित मुद्दे