2 पॉइंट द्वारा GN⁺ 2024-04-30 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • SIGBOVIK 2019 के पेपर ने क्या दीवार पर पेंट रगड़ने से ऐसा न हो कि वह Perl प्रोग्राम न बने इस सवाल को OCR प्रयोग के जरिए जांचा, और 100 धब्बों में से 93% Perl के रूप में parse हो गए
  • प्रयोग में पेंट के धब्बों की इमेज को OCR string में बदला गया, फिर यह जांचा गया कि परिणाम एक वैध Perl प्रोग्राम है या नहीं
  • 93% वैध थे, लेकिन बाकी 7 धब्बे Perl के रूप में parse नहीं हुए, इसलिए “हर चीज़ आखिर Perl बन जाती है” जैसे मज़ाक में भी अपवाद बचे हैं
  • सार्वजनिक सामग्री में सभी धब्बों की इमेज और उनसे मेल खाने वाला Perl source शामिल है, और जो वैध नहीं हैं उन्हें लाल “Not valid” चिह्न से अलग दिखाया गया है
  • सबमिशन के बाद पहचाने गए कुछ OCR परिणाम Perl में संख्या 0 या string c, E__ के रूप में evaluate हुए, जो संयोग से बने कोड की अजीबता दिखाते हैं

पेंट के धब्बों से परखी गई Perl parseability

  • यह पेपर प्रोग्रामिंग भाषा समुदाय के एक पुराने खुले सवाल की तरह पेश किए गए प्रश्न को प्रयोग का विषय बनाता है: क्या दीवार पर पेंट रगड़ने पर भी कभी वैध Perl न बन सकता है
  • निष्कर्ष “हाँ, ऐसा संभव है” के करीब है
    • OCR software का उपयोग करने वाले प्रयोग में पेंट के धब्बों का सिर्फ 93% ही वैध Perl के रूप में parse हुआ
    • इसलिए कुछ पेंट धब्बे वैध Perl प्रोग्राम नहीं हैं
  • पेपर पेंट धब्बा-जनित Perl प्रोग्रामों के गुणों का विश्लेषण करता है और ऐसे 7 उदाहरण भी देता है जो वैध Perl प्रोग्राम नहीं थे

SIGBOVIK 2019 पेपर और सार्वजनिक सामग्री

  • यह पेपर 1 अप्रैल 2019 को Pittsburgh में आयोजित SIGBOVIK 2019 में स्वीकार किया गया था
  • इसे “Unwitting Participation Ribbon” भी मिला
    • इस ribbon को ऐसे पेपरों पर लगाया जाता है जिनमें “वास्तविक output” शामिल हो
  • पेपर और proceedings कई रूपों में सार्वजनिक हैं
    • Google Docs: पेपर देखें
    • PDF: पेपर डाउनलोड करें
    • SIGBOVIK 2019 proceedings: पूरी proceedings, संबंधित पेपर पेज 174 पर

धब्बा गैलरी और 100 इमेज वाला डेटासेट

  • all the paint splatters एक पेज पर सभी पेंट धब्बे दिखाता है, और हर इमेज के साथ उससे मेल खाने वाला वैध Perl source code भी देता है
  • जो इमेज वैध Perl प्रोग्राम के रूप में parse नहीं हुईं, उन्हें लाल “Not valid” चिह्न से अलग दिखाया गया है
  • अलग-अलग OCR settings में यदि कई वैध Perl प्रोग्राम पहचाने गए, तो उनमें से लेखक को सबसे “दिलचस्प” लगा परिणाम चुना गया
  • tarball of 100 paint-splatter images में पेपर के मुख्य dataset के रूप में इस्तेमाल की गई 100 पेंट धब्बा इमेज शामिल हैं

सबमिशन के बाद पहचाने गए अतिरिक्त उदाहरण

  • SIGBOVIK सबमिशन deadline के बाद भी कुछ दिलचस्प पेंट-धब्बा Perl प्रोग्राम अतिरिक्त रूप से पहचाने गए
  • OCR ने जिस धब्बे को lerzfijglpFiji-j के रूप में पहचाना, वह Perl में संख्या 0 के रूप में evaluate हुआ
  • -*? के रूप में पहचाना गया धब्बा भी Perl में संख्या 0 के रूप में evaluate हुआ
  • ;i;c;;#\\?z{;?;;fn':.; के रूप में पहचानी गई इमेज Perl में string c बन गई
  • ;E,'__' के रूप में पहचानी गई इमेज Perl में string E__ के रूप में evaluate हुई

1 टिप्पणियां

 
GN⁺ 2024-04-30
Hacker News टिप्पणियाँ
  • concatenative language में यह गुण होता है कि हर token sequence एक वैध program बन जाती है
    अगर कोई language single bit को token के रूप में इस्तेमाल करे, तो हर bitstring एक वैध program बन जाएगी. Chris Barker की zot ऐसी ही भाषाओं में से एक है
    zot से प्रेरित होकर, उसी गुण को साझा करने वाले Binary Lambda Calculus का एक concatenative version परिभाषित किया गया
    [1] https://en.wikipedia.org/wiki/Concatenative_programming_lang...
    [2] https://en.wikipedia.org/wiki/Iota_and_Jot#Zot
    [3] https://cstheory.stackexchange.com/questions/32309/concatena...

    • “concatenative language में यह गुण होता है कि हर token sequence एक वैध program बन जाती है” यह बात सही नहीं लगती
      concatenative language का गुण यह है कि अगर a और b दोनों वैध program हैं, तो a || b भी वैध है. यहाँ || का मतलब है “जोड़ना”
      लेकिन इसका मतलब यह नहीं कि हर token sequence वैध है. उदाहरण के लिए, Cat में [1 2 व्याकरण की दृष्टि से वैध नहीं है
    • “Jot को सभी algorithms के लिए एक प्राकृतिक Gödel numbering बना देता है” यह वाक्य बड़ा शानदार लगता है
      काश मैं Jot को भी समझ पाता और उस वाक्य को भी
  • फुटनोट 5 मज़ेदार था
    ⁵ यह फीचर एक साफ-सुथरा quine संभव बनाता है. अगर Perl program Illegal division by zero at /tmp/quine.pl line 1. को सही जगह रखा जाए, तो वह Illegal division by zero at /tmp/quine.pl line 1. प्रिंट करता है. ऐसा क्यों होता है, यह पाठक के लिए अभ्यास के रूप में छोड़ा गया है

    • इस पर समझाने वाला एक ब्लॉग पोस्ट मैंने लिखा था: https://dotat.at/@/2019-04-04-a-curious-perl-quine.html
      और देखने में संबंधित लगने वाला, लेकिन असल में काफ़ी अलग एक Python quine भी है:
      File "quine.py", line 1
      File "quine.py", line 1
      ^
      IndentationError: unexpected indent
    • क्या कोई Perl न जानने वाले पाठकों की मदद कर सकता है?
      मैंने इसे REPL में आज़माया, और "Illegal division" package "division" में method "illegal" नहीं खोज पाता, और शायद वह हिस्सा नज़रअंदाज़ हो जाता है. "zero" package की "by" method के साथ भी कुछ वैसा ही है, और "at /tmp" उस error message को बनाने वाली सबसे सरल string लगती है. यह error शायद missing package warning से ज़्यादा गंभीर होती है, इसलिए program यहीं बंद हो जाता है
      मुझे लगा / division operator है, और "tmp" कोई variable है जिसे initialize करके integer में coerce किया जा रहा है, लेकिन "/tmp" अकेले काम नहीं करता और "/tmp/" regex से जुड़ा behavior करता है, इसलिए parser वहाँ division क्यों कर रहा है, समझ नहीं आता
    • Python में भी indentation error के साथ कुछ ऐसा ही बनाया जा सकता है
  • संबंधित पोस्ट:
    93% of Paint Splatters Are Valid Perl Programs (2019) - https://news.ycombinator.com/item?id=27929730 - जुलाई 2021, 163 टिप्पणियाँ
    एक और लिंक:
    93% of Paint Splatters Are Valid Perl Programs (2019) - https://news.ycombinator.com/item?id=38754686 - दिसंबर 2023, 1 टिप्पणी

  • मज़ाक अपनी जगह, लेकिन क्या यह गड़बड़ नहीं है कि OCR software गैर-पाठ्य images से भी हमेशा text result निकाल देता है?
    10 साल से भी पहले मैंने कुछ पुरानी किताबों पर OCR चलाया था, और छोटे चित्रों, दागों और धूल से निकले बेकार text को साफ़ करते-करते बहुत चिढ़ हुई थी. तब से इस क्षेत्र में बहुत प्रगति हुई हो, ऐसा नहीं लगता

    • यह सवाल मूल लेख के सवाल जैसा ही लगता है
      अगर random scribble Perl में वैध execution बन जाता है, तो क्या कहीं कुछ गड़बड़ नहीं है?
    • इस हिस्से में LLM मदद करता है
      अपने प्रयोगों में मैंने पाया कि ChatGPT काफ़ी अच्छा “स्मार्ट और context-aware” OCR agent था
    • प्रगति हुई है. बस यह पोस्ट मनोरंजन के लिए है
  • मैंने इस लेख को ऐसे समझा कि यह किसी खास optical character recognition program की उस समस्या पर है, जिसमें वह paint के छींटों को भी characters की तरह पहचान लेता है
    उस program में लगता है कि वह लगभग हमेशा paint को किसी न किसी character combination के रूप में पढ़ने की ओर झुका हुआ है, और कई संभावित implementation तरीकों में यह तरीका पूरी तरह स्वागतयोग्य है और उद्देश्य के अनुरूप भी
    हालाँकि शुरू में मेरे मन में एक दूसरा तरीका भी आया था, जिसमें रंग के टुकड़ों और खाली जगहों को 0 और 1 माना जाए और पूरी चीज़ को program की तरह interpret किया जाए. उस स्थिति में ज़्यादातर चीज़ें निरर्थक noise ही होंगी
    आख़िरकार यहाँ दो छोर हैं. एक तरफ लगभग पूरा noise है, और दूसरी तरफ ज़्यादातर अर्थपूर्ण है. यहाँ खेल के भीतर का खेल शायद यह है कि paint splatter को जितना संभव हो उतना अर्थ दिया जाए, लेकिन वह अर्थ नियमों के ज़बरदस्ती अर्थ निकालने से नहीं, बल्कि संरचना से अधिकतम निकले — ऐसी interpretation scheme ढूँढ़ी जाए

    • “pain को लगभग हमेशा किसी character combination की तरह पहचानता है” — तो फिर EEG निकालकर देखना पड़ेगा कि pain भी वैध Perl program है या नहीं
  • generative AI का इस्तेमाल करके पहले से कहीं ज़्यादा तेज़ी से नए और अभिनव paint splatter बनाए जा सकते हैं, जिन्हें executable software के रूप में आंका जा सके
    generative AI रचनाकारों की एक नई परत को text-to-image workflow का उपयोग करके हर आकार की कंपनियों के लिए value बनाने में सक्षम बनाता है. नए AI models काम करने वाले software और machine-readable code को अलग-अलग high-resolution content में embed कर सकते हैं, दर्शकों का ध्यान खींच सकते हैं, और creators को अपना audience बढ़ाने के नए और रोचक तरीके दे सकते हैं

  • और भी अत्याधुनिक computational research यहाँ है: https://sigbovik.org/

  • यह पुराने “लाइन नॉइज़ से अलग नहीं पहचाना जा सकता” वाले मज़ाक का एक चतुर रूपांतर है
    जो लोग line noise से अक्सर नहीं जूझे, उनके लिए: कल्पना कीजिए कि एक ASCII character video terminal byte stream को interpret करके अर्थपूर्ण text दिखा रहा है. अब मान लीजिए कि communication channel किसी वजह से खराब हो गया. जैसे modem जुड़े होने के दौरान किसी ने फ़ोन का रिसीवर उठा लिया, या cable में interference आ गया
    अगर error correction या checksum न हो, तो interpret किए गए bytes लगभग random हो जाते हैं. इसलिए मनमाने letters, numbers, punctuation, control characters वगैरह interpret होकर स्क्रीन पर दिखते हैं, और जो लोग परिचित हैं वे समझ जाते हैं कि यह random है और ऐसा क्यों हुआ. लेकिन मज़ाक यह है कि वह असल में अब भी एक वैध Perl program है

    • अब एहसास हुआ कि line noise भी शायद उन चीज़ों की श्रेणी में पहुँच गया है जिन्हें आज के बच्चों को कभी समझाया नहीं जा सकेगा, जैसे टीवी प्रसारण सूची
      अब तो बस बेल्ट पर एक प्याज़ बाँध लेना चाहिए
  • “Source code अभी नहीं है. मैं GitHub नहीं कर पाता” — तो लगता है यह हमेशा के लिए खो गया
    कम से कम https://git.mcmillen.dev/explore/repos पर तो नहीं है

  • Perl programmer के तौर पर, जो 7% काम नहीं करता, मैं उसे bug मानूँगा