शून्य सूचना बिंदु: क्रिकेट डेटा पाइपलाइन की वह खामी जो कमेंट्री बॉक्स तक पहुँचती है
**मुख्य उत्तर:** क्रिकेट डेटा पाइपलाइन में सबसे बड़ा जोखिम गलत आंकड़ा नहीं, खाली रिकॉर्ड है। शून्य सूचना बिंदु वाला रिकॉर्ड भी 'Unclassified' के रूप में आगे निकल जाता है। टाइटल और फ़ॉर्मेट टैग का न होना fetch या parse परत की विफलता बताता है, विश्लेषण की कमी नहीं। **मुख्य तथ्य:** - ऑडिट रिकॉर्ड में टाइटल, स्रोत, सूचना बिंदु और एंटिटी चारों खाली; केवल डोमेन टैग cricket_asia सर्वाइव हुआ। - टाइटल न मिलना summarisation नहीं, fetch या parse परत की विफलता का संकेत है। - फ़ॉर्मेट टैग के बिना T20 और Test के बेंचमार्क आपस में तुलनीय नहीं रहते। - लाइव स्कोरकार्ड, वीडियो पेज, JavaScript-रेंडर पेज और पेवॉल — ये चार स्रोत बार-बार खाली बॉडी लौटाते हैं। - बैच-लेवल extraction yield का गिरना सबसे सस्ता शुरुआती चेतावनी संकेत है। **स्रोत:** आंतरिक Stage-1 टेक्स्ट-डिकम्पोज़िशन ऑडिट रिकॉर्ड। प्रकाशन तिथि रिकॉर्ड में दर्ज नहीं — सत्यापन अपूर्ण। **संबंधित प्रश्न:** प्रश्न: क्या खाली रिकॉर्ड का मतलब है कि संबंधित टीम, खिलाड़ी या बोर्ड पर कोई जोखिम नहीं? उत्तर: नहीं — यह साक्ष्य का अभाव है, सफ़ाई का प्रमाण नहीं, और इसे कभी क्लीन चिट की तरह नहीं पढ़ा जाना चाहिए। प्रश्न: सबसे सस्ता अगला परीक्षण क्या है? उत्तर: स्रोत URL, प्रकाशन समय और HTTP स्टेटस लॉग करते हुए headless-रेंडरर के साथ एक री-फ़ेच, जो ढाँचे की विफलता और क्षणिक विफलता में तुरंत फ़र्क़ बता देगा। प्रश्न: फ़ॉर्मेट टैग गायब होने पर विश्लेषण रोकना क्यों ज़रूरी है? उत्तर: क्योंकि Test, ODI और T20 के बेंचमार्क अंतर-परिवर्तनीय नहीं हैं, और उन्हें मिलाने पर हर नतीजा गलत दिशा में जाता है।
बुधवार की दोपहर डेस्क पर एक रिकॉर्ड आया। टाइटल की जगह N/A, स्रोत की जगह N/A, आर्टिकल टाइप 'Unclassified', और सूचना बिंदुओं की सूची पूरी तरह खाली। भरी हुई एक ही फ़ील्ड थी — डोमेन लेबल, जिसमें cricket_asia लिखा था। एंटिटी वाले कॉलम में निर्देश छपा था: 'ऊपर दिए गए सूचना बिंदुओं से पहचानें।' जो बिंदु मौजूद ही नहीं थे।
सात साल पहले चेन्नई में मैंने TNPL की 7,680 गेंदें गिनी थीं, तब जाकर उस सीज़न का आकार समझ में आया था। उस दिन के बाद से हर रिकॉर्ड पर मेरी पहली नज़र इस बात पर जाती है कि उसमें गिनने लायक क्या बचा है। इस रिकॉर्ड में कुछ नहीं बचा था। शून्य। और यह शून्य पहली बार एक नतीजा था, खाली जगह नहीं — क्योंकि इसी शून्य ने तय किया कि उस दिन डेस्क से कौन-सी कॉपी निकलेगी और कौन-सी नहीं।
क्रिकेट की खबरों का ढाँचा दो परतों पर खड़ा है। पहली परत सामग्री है — स्कोर, ओवर, खिलाड़ी, नतीजा। दूसरी परत मेटाडेटा है — फ़ॉर्मेट टैग (Test, ODI, T20), प्रतियोगिता टैग, एंटिटी टैग, और तारीख़। ज़्यादातर पाठक दूसरी परत को कभी नहीं देखते, और ज़्यादातर डेस्क उसे रिकॉर्ड करना ज़रूरी नहीं समझते। मेरे काम की पूरी मान्यता इसी दूसरी परत पर टिकी है। एक T20 फ़िनिशर का बेंचमार्क स्ट्राइक रेट और एक Test ओपनर का बेंचमार्क स्ट्राइक रेट आपस में तुलनीय ही नहीं हैं; दोनों को एक कॉलम में डाल देना गणित की गलती नहीं, तरीके की गलती है। फ़ॉर्मेट टैग गायब होते ही विश्लेषण की पूरी सीढ़ी गिर जाती है, और जो बचता है वह राय होती है जिसे आंकड़े का लिबास पहना दिया गया है।

इस रिकॉर्ड में जो हुआ, वह उल्टा था। टैक्सोनॉमी की परत चली — क्लासिफ़ायर ने रिकॉर्ड को cricket_asia का लेबल दे दिया। सामग्री की परत पूरी तरह विफल रही — न टाइटल, न स्रोत, न सूचना बिंदु। यह विफलता का एक बहुत विशिष्ट हस्ताक्षर है, और इसे पहचानना ज़रूरी है क्योंकि यह अगली बार किसी और रिकॉर्ड पर दोहराएगा। इस समय डेस्क पर जो हलचल है, वह ट्रांसफ़र विंडो और रिटेंशन-नीलामी की है। हर आउटलेट रिटेंशन लिस्ट, RTM की गणित और ट्रेड की अफ़वाहें छाप रहा है। ऐसे हफ़्तों में डेस्क का पैमाना वॉल्यूम होता है, सटीकता नहीं — और खाली रिकॉर्ड वॉल्यूम के इसी हिसाब में फँसता है।
तीन चीज़ें जो मौजूद नहीं थीं, और तीन चीज़ें जो वे खुद बता रही थीं
सबसे पहले टाइटल का गायब होना। अगर विफलता समराइज़र की परत पर होती, तो हेडलाइन से कुछ न कुछ तो निकलता — एक आधा वाक्य, एक नाम, एक टुकड़ा। समराइज़र खाली टाइटल नहीं लौटाता। टाइटल का पूरी तरह न मिलना इस ओर इशारा करता है कि गड़बड़ fetch या parse की परत पर हुई है, जहाँ स्क्रैपर को पेज का बॉडी ही नहीं मिला। ऐसा तीन तरह के स्रोतों के साथ होता है: लाइव स्कोरकार्ड पेज, वीडियो या हाइलाइट पेज, और JavaScript से रेंडर होने वाले पेज जो टेक्स्ट-स्क्रैपर को खाली बॉडी लौटाते हैं। चौथा विकल्प पेवॉल है। इन चारों में से कोई भी हो, नतीजा एक ही है — डेस्क को लगता है कि रिकॉर्ड आया है, जबकि आया ही नहीं।
दूसरी चीज़ — फ़ॉर्मेट टैग का अभाव। यह सिर्फ़ एक फ़ील्ड की कमी नहीं है, यह विश्लेषण को रोकने वाली शर्त है। अगर मैं इस रिकॉर्ड पर आगे बढ़ता, तो मुझे पहले तय करना पड़ता कि यह Test का टुकड़ा है या T20 का। बिना फ़ॉर्मेट के मैं इकोनॉमी रेट को स्ट्राइक रेट के साथ, और डेथ-ओवर के आंकड़े को पहले 15 ओवर के आंकड़े के साथ नहीं रख सकता। यही वह जगह है जहाँ जल्दबाज़ी सबसे महँगी पड़ती है।

तीसरी चीज़ — लेबल का झुकाव। स्कीमा में डोमेन 'Cricket' होना चाहिए था, मिला cricket_asia। यह क्षेत्रीय टैग है, फ़ॉर्मेट टैग नहीं, और इसे प्रतियोगिता का विकल्प मान लेना बड़ी चूक है। एशिया कप, ACC की बैठक, किसी बोर्ड का चुनाव, IPL की कमर्शियल खबर — चारों इस एक लेबल के नीचे फिट हो जाते हैं। यानी लेबल ने कुछ बताया नहीं, उसने बस रास्ता तय कर दिया। और यही सबसे उपयोगी सुराग है: क्लासिफ़ायर ने कुछ टेक्स्ट देखा जिसे एक्सट्रैक्टर ने आगे नहीं भेजा। इसका मतलब पेज पूरी तरह खाली नहीं था — फ़ॉल्ट फ़ील्ड-मैपिंग या ट्रंकेशन की थी। मेरे अनुमान में यह fetch-लेयर की विफलता है, समराइज़र की नहीं।
असली खतरा खाली रिकॉर्ड नहीं, उसका 200 OK लौटना है
मैंने आठ साल में बहुत सारे गलत आंकड़े देखे हैं। मुझे उनसे उतना डर नहीं लगता जितना उस खाली रिकॉर्ड से लगता है जो सिस्टम में सफल के रूप में दर्ज हो जाता है। इस रिकॉर्ड की सबसे चिंताजनक बात यह नहीं थी कि उसमें जानकारी नहीं थी; सबसे चिंताजनक बात यह थी कि उसे 'Unclassified' लिखा गया, 'FAILED' नहीं। जिस रिकॉर्ड पर 0% फ़ील्ड भरी हो, उसे अगर पाइपलाइन 'Unclassified' कहकर आगे भेज दे, तो ऑटोमेटेड क्वालिटी चेक उसे पार करा देगा। और फिर वही रिकॉर्ड किसी कॉपीएडिटर की स्क्रीन पर पहुँचेगा, जहाँ से निकलने का एक ही रास्ता होगा — उसे भर देना।
यहाँ मुझे अपने 2026 के नोटबुक की याद आती है। उस साल मैंने TNPL की हर गेंद को तीन कॉलम में डाला था — फ़ेज़, मैचअप, और कमर्शियल नोट। उसी काम से पता चला कि वॉशिंगटन सुंदर का लेग-स्पिन के खिलाफ स्कोरिंग रेट ओवर 7 से 15 के बीच 8.4 प्रति ओवर था, जबकि ब्रॉडकास्ट पर 6.9 दिख रहा था। यह सुधार मेरे मॉडल की वजह से नहीं हुआ था। यह सुधार इस वजह से हुआ था कि मेरे पास गेंद-दर-गेंद का निशान बचा हुआ था और मैं लौटकर जाँच सकता था। अगर वह निशान खो जाता, तो 8.4 कोई नतीजा नहीं होता — वह एक राय होती, जिसे किसी ने ट्वीट कर दिया होता।

नोटबुक पहले आई, टेम्पलेट बाद में — और तब भी, दो बार असफल होने के बाद। मुझे यह बात इसलिए याद रखनी पड़ती है क्योंकि डेडलाइन पर टेम्पलेट सबसे आसान रास्ता दिखता है। जब रिकॉर्ड खाली हो, टेम्पलेट भरने लगता है। पिछले सीज़न का ढाँचा, पिछले सीज़न की भाषा, पिछले सीज़न के कॉलम। मैं इस जाल में दो बार गिर चुका हूँ, और दोनों बार मुझे यह देर से समझ आया कि मैं आंकड़े नहीं, अपनी आदतें छाप रहा था।
2026 की गर्मियों में रूस में मैंने 64 मैचों को एक्सपेक्टेड गोल्स और प्रेशर-इवेंट्स के लिए कोड किया। रूस 2026 मेरे लिए टूर्नामेंट कभी नहीं था — वह स्कोरबोर्ड वाली एक प्रयोगशाला थी। उसी लॉजिक को उलटकर मैंने क्रिकेट पर लगाया और एशिया कप के लिए एक विकेट-प्रोबेबिलिटी मॉडल बनाया। मॉडल ने बताया कि शिखर धवन के 342 रनों में पावरप्ले में तेज़ गेंदबाज़ी के खिलाफ 61% बाउंड्री शेयर था, जबकि मिडिल ओवर में लेफ़्ट-आर्म स्पिन के खिलाफ वही शेयर 38% पर आ गिरता था। एशिया कप आते-आते उस प्रयोगशाला ने बेहतर सवाल पूछने सीख लिए थे। लेकिन इस पूरे नतीजे की एक शर्त थी — फ़ेज़ टैग। अगर उस रिकॉर्ड में फ़ेज़ टैग गायब होता, तो 61 और 38 दोनों एक ही आंकड़े में पिघल जाते, और पूरी कहानी एक औसत बनकर रह जाती।
2026 में जब IPL खाली स्टेडियमों में खेला गया, तब मुझे पहली बार एक साफ़ एनवायरनमेंट वेरिएबल मिला। मैंने 60 मैचों को 2026 के साथ मिलाया। डेथ-ओवर रन रेट 9.8 से 10.4 पर चला गया, और रिस्ट-स्पिनरों की इकोनॉमी 0.6 रन से बिगड़ी। मैंने 1,200 शब्दों में लिखा कि भीड़ एक टैक्टिकल वेरिएबल है, माहौल नहीं। यह नतीजा इसलिए टिका कि मैंने 'कौन-सा वेरिएबल हिला' लिखकर रखा था, 'क्या बदल गया' नहीं। जिस दिन डेस्क यह वेरिएबल दर्ज करना बंद कर देगा, उस दिन यह पूरा पैराग्राफ एक अच्छी लिखी हुई अफ़वाह बन जाएगा।
जब रिकॉर्ड खाली होता है, तो उसे इंसान भरता है
यहीं असली चोट लगती है। डेटा डेस्क की सबसे बड़ी समस्या गलत विश्लेषण नहीं है — उसकी सबसे बड़ी समस्या यह है कि जब डेटा नहीं होता, तब भी डेस्क को कुछ लिखना पड़ता है। और जब कुछ लिखना पड़े, तो इंसान अपने पास जो पहले से है वही भरता है: खिलाड़ी की साख, पिछले सीज़न की याद, कमेंटेटर की राय, ट्विटर की गूँज। मैंने भारतीय क्रिकेट कवरेज में जो स्टार-वर्शिप है, उसे अक्सर पूर्वाग्रह कहा जाता है। मेरा पढ़ना अलग है। स्टार-वर्शिप किसी पत्रकार की नीयत से नहीं आती, वह खाली फ़ील्ड से आती है। जहाँ फ़ेज़-स्प्लिट नहीं होता, वहाँ नाम ही स्प्लिट बन जाता है।
इसका दूसरा रूप मुझे हर ट्रांसफ़र विंडो में दिखता है। पर्स का गणित सबसे साफ़ संख्या है, इसलिए हर नतीजा उसी से समझाया जाने लगता है। लेकिन जो चीज़ें पैसे से नहीं खरीदी जातीं — ओस, टॉस, चोट का समय, जून में किसी गेंदबाज़ का एक्शन बिगड़ना — वे किसी स्प्रेडशीट के कॉलम में नहीं आतीं, और इसीलिए वे हर विश्लेषण से बाहर रह जाती हैं। मैंने अपने काम में इसका इलाज यह निकाला है कि जब सैंपल छोटा हो या बॉल-बाय-बॉल कवरेज पतली हो, तो मैं संख्या से पहले सैंपल साइज़ और भरोसे का स्तर लिखता हूँ। रणजी स्कोरकार्ड पर IPL-स्तर का मॉडल चलाना तकनीकी रूप से मुमकिन है और पेशेवर रूप से गलत।
जिसे विफल कहना चाहिए, वही सबसे ज़्यादा पास होता है
अब वह हिस्सा जो मेरी अपनी सोच के खिलाफ जाता है। सबसे आसान सुधार यह लगता है: पाइपलाइन में एक हार्ड गेट लगा दो, जो शून्य सूचना बिंदु वाले रिकॉर्ड को सिरे से रिजेक्ट कर दे। तकनीकी रूप से यह सही है। व्यावसायिक रूप से यह वही जगह है जहाँ यह सुधार मरता है। गेट जितनी सख़्त होगी, पाइपलाइन उतनी ही ज़ोर से विफल होगी, और ज़ोर से विफल होना महँगा है — क्योंकि खाली रिकॉर्ड भी एक स्लॉट भरता है, और 'FAILED' किसी स्लॉट का बिल नहीं देता। डेस्क थ्रूपुट पर चलता है, सत्य पर नहीं।
दूसरी बात, जो मुझे अपने ही पेशे के बारे में संदेह में डालती है। मेरा रिफ़्लेक्स यह कहता है कि डेटा डेस्क सख़्त है और कमेंट्री बॉक्स ढीला। इस रिकॉर्ड ने उस सुविधाजनक कहानी को तोड़ दिया। दोनों एक ही जगह विफल होते हैं — सन्नाटे में। कमेंट्री बॉक्स सन्नाटे को विशेषणों से भरता है, डेटा डेस्क उसे मॉडल के आउटपुट से भरता है। शून्य-सूचना वाले रिकॉर्ड को मॉडल से गुज़ारना भरोसे के आकार का शोर पैदा करता है, ज्ञान नहीं। जिस पल मुझे लगे कि 'डेटा डेस्क बनाम कमेंट्री बॉक्स' के बीच पक्ष लेना ही विश्लेषण है, उसी पल मैंने अपने सबूत की जगह अपनी नाराज़गी रख दी।
तीसरी बात, जिसे मैं हर बार दोहराता हूँ और हर बार किसी को अटपटा लगती है। इस ऑडिट में कोई भी क्रिकेट-जोखिम दर्ज नहीं हुआ — न चोट, न रैंकिंग, न इंटीग्रिटी, न ब्रॉडकास्ट राइट्स। यह इस बात का सबूत नहीं है कि कोई जोखिम मौजूद नहीं। यह सबूत का अभाव है, सफ़ाई का प्रमाण नहीं। अगर यह दस्तावेज़ आगे किसी को भी 'कुछ नहीं मिला, तो सब ठीक है' पढ़वा दे, तो यह विफलता पाइपलाइन की नहीं, हमारी होगी।
चौथी बात, उस आदत के बारे में जो सबसे भरोसेमंद दिखती है और सबसे खतरनाक है — दोबारा चलाना, तब तक चलाना जब तक कुछ न निकल आए। यह खोज नहीं है, यह फ़ॉल्स-पॉज़िटिव का कारखाना है। अगर पहली विफलता का कारण पता नहीं, तो दूसरा रन कोई जानकारी नहीं जोड़ता — वह सिर्फ़ शोर बदलता है।
आगे क्या देखना है
सबसे सस्ता और सबसे ज़रूरी काम यह है कि अगली बार फ़ेच करते समय स्रोत का URL, आउटलेट, प्रकाशन का समय और HTTP/parse स्टेटस अलग से दर्ज हो — बॉडी टेक्स्ट मिले या न मिले, इनसे फ़र्क़ नहीं पड़ना चाहिए। इससे एक ही री-फ़ेच में यह अलग हो जाएगा कि विफलता ढाँचे की है या क्षणिक। दूसरा, बैच-लेवल extraction yield को मीट्रिक की तरह निगरानी में रखें; औसत ट्रेंडिंग बेसलाइन से नीचे गिरे तो किसी एक रिकॉर्ड का इंतज़ार न करें। तीसरा, टैक्सोनॉमी लेबल को इनजेशन की सीमा पर नॉर्मलाइज़ करें, ताकि क्षेत्रीय टैग कभी प्राथमिक डोमेन की जगह न ले सके। और चौथा — एक टाइटल-ओनली फ़ॉलबैक रास्ता, जो बॉडी न मिलने पर भी हेडलाइन से कुछ बचा ले।
असली सवाल यह नहीं है कि पाइपलाइन कब ठीक होगी। असली सवाल यह है कि जिस डेस्क ने इस खाली रिकॉर्ड को 'Unclassified' कहकर आगे भेजा, वह उस दिन किस चीज़ की गिनती कर रहा था — सूचना की, या स्लॉट की?
