0 वोट
528 व्यूज़

मुझे एक अनुवादक से यह ईमेल मिला। मैं एक मूलभूत REGEX व्यंजक लिख सकता हूँ, लेकिन मुझे लगता है कि संभावित वाक्य-अंत विराम चिह्नों के मामले में मैं कुछ चीज़ें छोड़ दूँगा। क्या कोई और मदद कर सकता है?

मेरी उम्मीद है कि मैं अंतिम विराम जाँच कर पाऊँगा, जो Paratext की मानक जाँचों का हिस्सा नहीं है। विशेष रूप से, मैं यह सुनिश्चित करना चाहता हूँ कि हमने श्लोकों के अंत में कोई पूर्णविराम (period) नहीं छोड़ा है। (हमने रिकॉर्डिंग करते समय कुछ ऐसे मिले हैं।) इसलिए मैं मूल रूप से कुछ REGEX कोड की तलाश में हूँ जो उन स्थानों की पहचान करे जहाँ कोई श्लोक एक बड़े अक्षर (capital letter) से शुरू होता है, लेकिन पिछला श्लोक पूर्णविराम से समाप्त नहीं होता है। (मुझे पता है कि इससे कुछ गलत परिणाम (false positives) भी मिल सकते हैं, जैसे कि यदि कोई श्लोक किसी विशेष नाम (proper noun) से शुरू होता है, लेकिन कम से कम इससे मुझे सभी श्लोकों की जाँच करने की तुलना में एक छोटी सूची मिल जाएगी। यदि आप कुछ REGEX कोड लिखकर मेरी मदद कर सकते हैं, तो मैं बहुत आभारी रहूँगा।

धन्यवाद,

james_post

English से मशीन-अनुवादित
Paratext में द्वारा [Moderator]
(2.1k अंक)
| 528 व्यूज़

2 उत्तर

+1 मत
सर्वोत्तम उत्तर

सबसे पहले कुछ प्रतिक्रिया, और दस मिनट में इसे लिखने के लिए प्रशंसा:

  • (?<=\p{L}) => यह अच्छा है, लेकिन मैं सुझाव देता हूँ कि "अक्षर" को वास्तविक कैच (catch) में शामिल करें, ताकि उपयोगकर्ता यह देख सके कि REGEX ने संभावित "वाक्य अंत" कहाँ देखा। बड़े और छोटे अक्षरों को पकड़ने के लिए प्रशंसा। इसलिए मेरे प्रस्ताव में मैं ?<= को ?: से बदल देता हूँ।

  • (?<!\\[\w+]) => मेरा मानना है कि कुछ मार्कर के साथ गलत परिणामों (false positives) से बचने के लिए, यह भाग आपके "अक्षर" के बाईं ओर होना चाहिए। साथ ही, + को वर्ग कोष्ठकों के बाहर होना चाहिए क्योंकि कई मार्कर में कई अक्षर होते हैं, जैसे \s1

  • और कुछ मार्कर में * शामिल होता है, उदाहरण के लिए किसी चीज़ के अंत के लिए जैसे \em*। मुझे धुंधली याद है कि कुछ मार्कर में + भी शामिल हो सकता है या होना चाहिए। यदि ऐसा है, तो आप आसानी से अक्षरों की सूची में [\w*+] जैसे कुछ जोड़ सकते हैं।

  • \s*(?:\\\w+)?\s* => मैं इसे इससे बदल देता हूँ: "श्लोक के अंत और अगले श्लोक की शुरुआत के बीच किसी भी संख्या के संभावित मार्कर और किसी भी रिक्त स्थान को छोड़ दें।

  • \\v [\d\w]+ \p{Lu} => एक श्लोक खोजें जिसके बाद एक बड़ा अक्षर हो। लगता है कि आप \v और श्लोक संख्या के बीच और श्लोक संख्या के बाद "क्लासिक स्पेस" के बारे में यकीन रखते हैं, इसलिए मैं उस संतर्क (syntax) को बनाए रखा है।

मैं एक संशोधित REGEX प्रस्तुत करना चाहूँगा, यह दावा किए बिना कि यह अंतिम समाधान है, बस उम्मीद है कि यह अधिक मामलों को कवर करेगा:

(?<!\\[\w\*]*)(?:\p{L})\s*(?:\\[\w\*]+\s+)*\\v [\d\w]+ \p{Lu}

यहाँ मेरे REGEX का विवरण है, मेरे टूल के अनुसार:

(?<!\\[\w\*]*)(?:\p{L})\s*(?:\\[\w\*]+\s+)*\\v [\d\w]+ \p{Lu}

(?<!\\[\w\*]*)(?:\p{L})\s*(?:\\[\w\*]+\s+)*\\v [\d\w]+ \p{Lu}

(?<!\\[\w\*]*)(?:\p{L})\s*(?:\\[\w\*]+\s+)*\\v [\d\w]+ \p{Lu}

विकल्प: केस संवेदनशील नहीं; सटीक स्पेसिंग; डॉट लाइन ब्रेक्स से मेल खाता है

  • यह सत्यापित करें कि इस स्थिति पर नीचे दिए गए REGEX से पीछे की ओर मेल खाना असंभव है (नेगेटिव लुकबेहाइंड)
      • बैकस्लैश चरण से मेल खाएं
      • नीचे दी गई सूची में मौजूद एकल चरण से मेल खाएं
        • शून्य से असीमित बार तक, जितना संभव हो उतना बार, जितना आवश्यक हो उतना वापस (ग्रीडी)
        • एक "वर्ड चरण" (यूनिकोड; किसी भी भाषा का कोई भी अक्षर या आइडियोग्राम, अंक, अक्षर संख्या, कनेक्टर विराम चिह्न)
        • वैकल्पिक चरण "*"
    • नीचे दिए गए नियमित व्यंजक से मेल खाएं
        • यूनिकोड श्रेणी "अक्षर" से एक चरण से मेल खाएं (किसी भी भाषा का किसी भी प्रकार का अक्षर)
      • एकल चरण से मेल खाएं जो "व्हाइटस्पेस चरण" है (किसी भी यूनिकोड विभाजक, टैब, लाइन फीड, कैरियज रिटर्न, वर्टिकल टैब, फॉर्म फीड, अगली लाइन, शून्य-चौड़ाई स्पेस)
        • शून्य से असीमित बार तक, जितना संभव हो उतना बार, जितना आवश्यक हो उतना वापस (ग्रीडी)
        • नीचे दिए गए नियमित व्यंजक से मेल खाएं
          • शून्य से असीमित बार तक, जितना संभव हो उतना बार, जितना आवश्यक हो उतना वापस (ग्रीडी)
          • बैकस्लैश चरण से मेल खाएं
          • नीचे दी गई सूची में मौजूद एकल चरण से मेल खाएं
            • एक से असीमित बार तक, जितना संभव हो उतना बार, जितना आवश्यक हो उतना वापस (ग्रीडी)
            • एक "वर्ड चरण" (यूनिकोड; किसी भी भाषा का कोई भी अक्षर या आइडियोग्राम, अंक, अक्षर संख्या, कनेक्टर विराम चिह्न)
            • वैकल्पिक चरण "*"
          • एकल चरण से मेल खाएं जो "व्हाइटस्पेस चरण" है (किसी भी यूनिकोड विभाजक, टैब, लाइन फीड, कैरियज रिटर्न, वर्टिकल टैब, फॉर्म फीड, अगली लाइन, शून्य-चौड़ाई स्पेस)
            • एक से असीमित बार तक, जितना संभव हो उतना बार, जितना आवश्यक हो उतना वापस (ग्रीडी)
          • बैकस्लैश चरण से मेल खाएं
          • चरण स्ट्रिंग "v " से वैकल्पिक रूप से मेल खाएं (केस संवेदनशील नहीं)
          • नीचे दी गई सूची में मौजूद एकल चरण से मेल खाएं
            • एक से असीमित बार तक, जितना संभव हो उतना बार, जितना आवश्यक हो उतना वापस (ग्रीडी)
            • एक "अंक" (किसी भी यूनिकोड लिपि में कोई भी दशमलव संख्या)
            • एक "वर्ड चरण" (यूनिकोड; किसी भी भाषा का कोई भी अक्षर या आइडियोग्राम, अंक, अक्षर संख्या, कनेक्टर विराम चिह्न)
          • चरण " " से वैकल्पिक रूप से मेल खाएं
          • यूनिकोड श्रेणी "अपपरकेस अक्षर" से एक चरण से मेल खाएं (एक अपपरकेस अक्षर जिसका लोअरकेस संस्करण है)

          बनाया गया RegexBuddy के साथ

          और यहाँ कुछ नमूना पाठ है, जिसका मैंने परीक्षण के लिए उपयोग किया। संभवतः यह अधूरा है (हर उदाहरण के अंत में, मैं चिह्नित करता हूँ कि क्या यह कैच है या नहीं):

          \v 8 Some text without \em punctuation\em* \rem \any \v 9 A new verse which is a new sentence, starting with a capital.  [catch]
          
          \v 8 Some text without \em punctuation\em*  \v 9 A new verse which is a new sentence, starting with a capital.  [catch]
          
          \v 8 Some text without punctuation \v 9a A new verse which is a new sentence, starting with a capital.  [catch]
          
          \v 8 Some text with proper \em punctuation.\em* \just \one \more \v 9 A new verse which is a new sentence, starting with a capital.  [punctuation present, so no catch]
          
          \v 8 Some text ending an an all-cap word like \em LORD\em* \v 9 A new verse which is a new sentence, starting with a capital.  [catch]
          
          \v 10 A long sentence \whatever \v 11a  over two verses or more.  [No punctuation needed, so no catch]
          

          तो, यह मज़ेदार था। उम्मीद है कि मैं बहुत दूर नहीं हूँ। दुर्भाग्य से, मैं कभी याद नहीं रख पाता कि PT किस REGEX फ्लेवर का उपयोग करता है। यदि फ्लेवर के कारण संतर्क (syntax) के साथ कोई समस्या है, तो मैं आसानी से .NET या Java जैसे कोई अन्य फ्लेवर लागू कर सकता हूँ और अपना टूल फिर से चला सकता हूँ।

          फिर से: यह समाधान नहीं है, लेकिन शायद एक संवाद शुरू करने के लिए उपयोगी हो सकता है।

          hth

          English से मशीन-अनुवादित
          द्वारा (934 अंक)
          फिर से दिखाया गया
          0 वोट

          10 मिनट में मैं जो सबसे अच्छा कर सका, वह निम्नलिखित है:

          (?<=\p{L})(?<!\\[\w+])\s*(?:\\\w+)?\s*\\v [\d\w]+ \p{Lu}
          

          मुझे पक्का नहीं है कि यह कितना सटीक है (यह मेरे सभी परीक्षण डेटा से गुज़र गया, लेकिन यह निश्चित रूप से व्यापक नहीं था), इसलिए शायद कोई और बेहतर कर सकता है। :grin:

          व्यंजक का संक्षिप्त विवरण:

          • (?<=\p{L}) => एक अक्षर के पीछे देखें (अर्थात पिछले श्लोक का अंत)
          • (?<!\\[\w+]) => सुनिश्चित करें कि वह अक्षर किसी मार्कर का हिस्सा नहीं है (नेगेटिव लुक बैहिनड)
          • \s*(?:\\\w+)?\s* => श्लोक के अंत और अगले श्लोक की शुरुआत के बीच किसी भी एकल मार्कर और किसी भी रिक्त स्थान को छोड़ दें।
          • \\v [\d\w]+ \p{Lu} => एक श्लोक खोजें जिसके बाद एक बड़ा अक्षर (upper-case letter) हो।
          English से मशीन-अनुवादित
          द्वारा [Expert]
          (16.7k अंक)

          फिर से दिखाया गया
          हमारे पास TkLy - टोका-लेई बाइबल अनुवाद परियोजना के लिए भी वही समस्या है। ऊपर दिए गए अनुच्छेद में उल्लेख की गई तरह से, "मैं यह सुनिश्चित करना चाहता हूँ कि हमने श्लोकों के अंत में कोई पूर्णविराम (period) नहीं छोड़ा है।"
          मैंने REGEX कोड को खोज विंडो में कॉपी और पेस्ट किया। Paratext ने 73 आइटम खोजे। लेकिन दुर्भाग्य से, पाँच के अलावा सभी वे श्लोक थे जिनके बाद एक सेक्शन हेडिंग (Section Heading) या एक अध्याय संख्या (Chapter Number) थी। पाँच अपवादों में से चार वैध त्रुटियाँ थीं जिनमें पूर्णविराम नहीं था।
          क्या REGEX को संशोधित करने का कोई तरीका है ताकि उन श्लोकों को छोड़ा जा सके जिनके बाद सेक्शन हेडिंग आते हैं?
          धन्यवाद,
          Mark
          English से मशीन-अनुवादित

          संबंधित प्रश्न

          0 वोट
          2 उत्तर 296 व्यूज़
          We have several languages in our area that do not normally use punctuation to mark end of sentence. They mark end of ... a lot of Punctuation missing at end of Paragraph . Thanks
          MSEAIT_LT 478 पूछा गया नवंबर 29, 2017
          0 वोट
          8 उत्तर 1.4k व्यूज़
          We have a user who has inserted a lot of \pn and some \nd inside of footnotes. We now know we need those to be ... the search to inside of a single footnote? Thank you, MSEAIT/LT
          MSEAIT_LT 478 पूछा गया अगस्त 20, 2018
          Paratext में
          0 वोट
          1 उत्तर 243 व्यूज़
          प्रिय Paratext उपयोगकर्ताओं, हम एक परियोजना पर काम कर रहे हैं और हमें regex के माध्यम से श्लोक के आरंभ को छोटे ... that \add it was\add* good. धन्यवाद और शुभकामनाएं, Thiyagarajan
          Thiyagarajan 112 पूछा गया अगस्त 29, 2023
          Paratext में
          0 वोट
          1 उत्तर 229 व्यूज़
          कुछ परियोजनाएँ कुछ समय बाद यह निर्णय लेती हैं कि वे अपने फुटनोट के अंत में अविराम चिह्न (periods) या अन्य वाक्य ... करें। एडमिन संपादन: पोस्ट का प्रारूप (formatting) ठीक किया गया।
          [Expert]
          Jeff_Shrum
          2.9k
          पूछा गया अगस्त 29, 2022
          0 वोट
          2 उत्तर 306 व्यूज़
          मैं खोजना चाहता हूँ कि KJV ने वाक्य की शुरुआत में "and" शब्द कितनी बार इस्तेमाल किया है। क्या ऐसा करने के लिए कोई फ़िल्टर है?
          Waseem Raza 102 पूछा गया जून 12, 2023
          Paratext में
          Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
          And I tell you that you are Peter, and on this rock I will build my church, and the gates of Hades will not overcome it.
          Matthew 16:18
          3,045 प्रश्न
          6,005 उत्तर
          5,671 टिप्पणियाँ
          2,026 उपयोगकर्ता