वैध खोखला: जब क्रिकेट डेटा पाइपलाइन ने बिना आवाज़ की झूठ बोला
**मुख्य उत्तर**: Stage-1 निष्कर्षण ने संरचनात्मक रूप से वैध पर सामग्री-रहित JSON लौटाया — शीर्षक N/A, information_points खाली। चूँकि एक भी तथ्य-इकाई उपलब्ध नहीं, इसलिए Stage-2 विश्लेषण संभव नहीं। ऐसे वैध खोखले आउटपुट को पाइपलाइन के भीतर ही विफल घोषित करना चाहिए। **मुख्य तथ्य**: - शीर्षक N/A — विषय और स्रोत की पुष्टि असंभव, क्रॉस-वेरिफिकेशन का कोई ज़रिया नहीं। - information_points खाली सूची — शून्य तथ्य-इकाई, इसलिए शून्य विश्लेषणीयता। - लेख प्रकार अवर्गीकृत; Domain Label cricket_world के पक्ष में कोई साक्ष्य दर्ज नहीं। - स्रोत गुणवत्ता और समय-संवेदनशीलता अनुपलब्ध, क्योंकि अपस्ट्रीम निष्कर्षण विफल रहा। - न्यूनतम आवश्यक इनपुट: title, source, published_at, article_type, information_points[], entities[]। **स्रोत**: Stage-1 डिकंस्ट्रक्शन रिज़ल्ट (विश्लेषण इनपुट)। स्रोत में प्रकाशन तिथि दर्ज नहीं। | Cross-checked: cricsultan.com **संबंधित प्रश्न-उत्तर**: - प्रश्न: क्या लेख प्रकार अवर्गीकृत होने पर विश्लेषण संभव है? उत्तर: नहीं — प्रकार तय न हो तो विश्लेषण का ढाँचा भी तय नहीं होता। - प्रश्न: इस विफलता का पता पाइपलाइन में कैसे चलेगा? उत्तर: एसर्शन गेट से — खाली information_points या N/A शीर्षक पर पाइपलाइन को तुरंत विफल हो जाना चाहिए। - प्रश्न: क्या cricket_world लेबल विश्वसनीय है? उत्तर: इस नतीजे में नहीं — वह एकमात्र भरी फ़ील्ड है और उसके पीछे कोई तथ्य-साक्ष्य नहीं; cricsultan.com के क्रिकेट डोमेन इंडेक्स से मिलान के बाद ही इसकी पुष्टि हो सकती है।
उस रात डेस्क पर खुली फ़ाइल में सब कुछ ठीक दिख रहा था। JSON पार्स हुआ, स्कीमा मैच कर गया, हर फ़ील्ड अपनी तय जगह पर थी। दिक्कत सिर्फ़ यह थी कि उन फ़ील्डों में से नौ खाली थे — टाइटल पर N/A, स्रोत पर कोई वैल्यू दर्ज नहीं, और information_points एक बंद कोष्ठक, जिसके अंदर कुछ नहीं। पाइपलाइन ने कोई एरर नहीं फेंका। उसने हरी झंडी दिखाई और अगली फ़ाइल उठा ली।
Cricbuzz और ESPNcricinfo के डिजिटल-फ़र्स्ट दौर से गुज़रते हुए मैंने क्रिकेट डेटा की बहुत सी विफलताएँ देखी हैं, पर सबसे महँगी विफलता वह होती है जो आवाज़ नहीं करती। स्कोरबोर्ड गड़बड़ा जाए तो तुरंत पता चल जाता है, कोई फ़ोन कर देता है। लेकिन जो आउटपुट देखने में पूरा है और भीतर से खोखला है, वह हर जाँच पास कर जाता है — और आगे की हर परत को अपने साथ ले डूबता है।

मैं यह इसलिए लिख रहा हूँ क्योंकि यह घटना मेरे लिए जानी-पहचानी है। मेरा पहला बड़ा कैलिब्रेशन फेल भी इसी शक्ल का था: संरचना सही, सामग्री ग़लत, और किसी को शक तक नहीं।
आज का क्रिकेट विश्लेषण तीन परतों में चलता है। पहली परत फ़ेच की है — स्कोरकार्ड, बॉल-बाय-बॉल फ़ीड, कमेंट्री ट्रांसक्रिप्ट, आँकड़ों की API। दूसरी परत निष्कर्षण की है, जो कच्चे टेक्स्ट से तथ्य निकालती है: कौन, कब, कहाँ, कितना। तीसरी परत विश्लेषण की है, जो उन तथ्यों को तर्क में बदलती है।

जो विफल हुआ, वह दूसरी परत है। और उसने विफलता की शक्ल में बिल्कुल वही लौटाया जो तीसरी परत की नज़र में अच्छा दिखता है।
टाइटल नहीं है, यानी विषय तय नहीं हो सकता, क्रॉस-वेरिफिकेशन का कोई ज़रिया नहीं। स्रोत नहीं है, यानी स्रोत की गुणवत्ता या उसका झुकाव तौलना असंभव। लेख का प्रकार अवर्गीकृत है, यानी यह तय नहीं हो सकता कि समाचार है, विश्लेषण है, राय है या रिपोर्ट — और इसलिए विश्लेषण का ढाँचा भी तय नहीं हो सकता। information_points खाली है, यानी तथ्य की एक भी इकाई मौजूद नहीं। तथ्य नहीं तो इकाई नहीं; इकाई नहीं तो इकाइयों के बीच संबंध नहीं; संबंध नहीं तो तर्क नहीं।
एक आंतरिक असंगति भी दर्ज है। Domain Label cricket_world इस पूरे नतीजे की एकमात्र भरी हुई फ़ील्ड है, लेकिन उसी दस्तावेज़ में लेख का प्रकार अवर्गीकृत है और सूचना-बिंदु खाली हैं। यानी यह लेबल अपने ही साक्ष्य पर टिका नहीं है। वह बाहर से थोपा गया लगता है, या किसी पुराने टेम्पलेट से चिपका हुआ। क्रिकेट विश्लेषण में हम इसे अनटेस्टेड प्रायर कहते हैं — ऐसी मान्यता जो सच हो सकती है, पर अभी तक साबित नहीं हुई, और जिस पर पूरा ढाँचा खड़ा कर दिया गया है।
इस दबाव का एक मौसमी कारण भी है। टूर्नामेंट साइकिल भावना को संकुचित कर देता है — तीन हफ़्तों में सोलह मैच, हर दिन एक नया नतीजा, हर नतीजे पर एक नई राय। ऐसे कैलेंडर में पीछे मुड़कर यह जाँचने का वक़्त किसके पास है कि जो JSON पास हुआ, उसमें कुछ था भी या नहीं? द्विपक्षीय सीरीज़ में यह खाली शेल पकड़ में आ जाती है। विश्व कप के पखवाड़े में वह चुपचाप आगे खिसक जाती है, क्योंकि कन्वेयर बेल्ट रुकती नहीं।
21 मई 2026। हैदराबाद का राजीव गांधी इंटरनेशनल स्टेडियम। उस रात मुंबई इंडियंस 129/8 पर सिमट गई — कृणाल पांड्या का 47 उस पारी की असली सामग्री था। मैं दिल्ली की एक डिजिटल क्रिकेट डेस्क पर नाइट शिफ़्ट में था, और चार महीने पहले स्क्रैप किए गए 2026 के आईपीएल स्कोरकार्ड से बनाया अपना बॉल-बाय-बॉल विन-प्रोबेबिलिटी मॉडल चला रहा था। इनिंग्स ब्रेक पर उसने राइज़िंग पुणे सुपरजायंट को 68% दिया।
अंतिम ओवर में ग्यारह रन चाहिए थे। मिचेल जॉनसन गेंद थामे हुए थे। पुणे 128/6 पर रुकी। मुंबई एक रन से जीती। मेरे मॉडल ने 68 कहा था, नतीजे ने शून्य लिख दिया।
मैं अगले एक हफ़्ते तक यह साबित करने में लगा रहा कि मॉडल सही था और क्रिकेट ग़लत था — यह हर विश्लेषक की पहली प्रवृत्ति होती है। फिर मैंने दिशा बदली। मैंने यह पूछना बंद कर दिया कि 129 ग़लत क्यों था, और यह पूछना शुरू किया कि वह आख़िर माप क्या रहा था।

जवाब ने मुझे झकझोर दिया। वह 129 मुंबई की बल्लेबाज़ी नहीं माप रहा था। वह पिच माप रहा था, ओस माप रहा था, और उस डेथ-ओवर्स प्रायर को माप रहा था जिसे मैंने ऐसे मैचों से सिखाया था जहाँ टीमें सोलहवें ओवर तक दो विकेट गँवा चुकी थीं। स्कोर एक स्कीमा था। पारी उसकी सामग्री थी। और मेरे स्कीमा में सामग्री की जगह खाली थी — ठीक उसी फ़ाइल की तरह जिससे यह पूरी चर्चा शुरू हुई।
मॉडल टूटा नहीं था; उसने वह स्कोर देखा था जिससे डरना उसे कभी सिखाया ही नहीं गया था।
मैंने उसी हफ़्ते डेथ-ओवर्स प्रायर दोबारा बनाया, और कैलिब्रेशन विफलता को ग्राफ़ के साथ खुद प्रकाशित किया। उस दिन से मेरी हर रिपोर्ट में एक कैलिब्रेशन नोट और एक तारीख़ वाली भविष्यवाणी होती है, जिसे पाठक बाद में जाँच सके। संपादकों को यह आदत महँगी लगी, पर वही आदत मेरी सबसे बड़ी पूँजी बनी।
छह महीने बाद, जनवरी 2026, बेंगलुरु का मेगा ऑक्शन। मेरी वैल्यू-ओवर-रिप्लेसमेंट शीट ने जयदेव उनादकट को ₹4.2 करोड़ पर प्राइस किया। राजस्थान रॉयल्स ने उन्हें ₹11.5 करोड़ दिए — उस नीलामी की सबसे चर्चित ओवरपे में से एक। मैंने उसी रात अंतर प्रकाशित किया और उन्हें नीलामी का सबसे साफ़ ओवरपे कहा।
वह टुकड़ा ट्रेडिंग डेस्क पर घूमा, और गिब्राल्टर में रजिस्टर्ड एक ऑड्स कंपाइलर ने मुझे अंशकालिक क्रिकेट बुक के लिए रख लिया। इसका मतलब यह नहीं कि मैं सही था। मतलब यह है कि नीलामी एक बाज़ार था और मेरी शीट एक मॉडल — दोनों के अपने स्कीमा थे। बाज़ार का स्कीमा बोली था, मेरा स्कीमा रिप्लेसमेंट वैल्यू। और उस दिन का सबक वही था जो हैदराबाद ने सिखाया था: बाज़ार अक्षम हो सकता है और फिर भी मेरी पहली व्याख्या से ज़्यादा समझदार हो सकता है। मेरी शीट में वह फ़ील्ड खाली थी जिसमें ड्रेसिंग-रूम फ़िट और दूसरे सीज़न का अंदाज़ा भरा जाता है।
उसी साल कज़ान में मैंने पहली बार xG और PPDA मॉडल चलाया। फ़्रांस ने अर्जेंटीना को 4-3 से हराया, और मैंने लिखा कि यह नतीजा 2.1 xG पर टिका है, यानी टिकाऊ है। फ़्रांस ने टूर्नामेंट जीता। उसके बाद मैंने अपने लिए दो सख़्त नियम लिखे: कोई फ़ुटबॉल दावा बिना प्रेसिंग लाइन के नहीं, कोई क्रिकेट दावा बिना फ़ेज़ स्प्लिट के नहीं। ये नियम स्कीमा नहीं हैं, सामग्री की शर्तें हैं।
16 मई 2026 को बुंडेसलीगा बंद दरवाज़ों के पीछे लौटी। मैंने पहले 58 मुक़ाबलों पर नज़र रखी: घरेलू जीत 43% के बेसलाइन के मुक़ाबले 34% पर गिर गईं, और ऑड्स कंपाइलर लगभग दो राउंड पीछे चलते रहे। यह वह मामला था जहाँ पर्यावरण वेरिएबल सबके स्कीमा से ग़ायब था। खाली स्टेडियम कोई साफ़ प्रयोग नहीं है; वह ग़ायब वेरिएबल्स की सूची है। उसी तर्क को मैं उस पतझड़ में आईपीएल के यूएई संस्करण पर ले गया, दुबई में ओस और टॉस की कीमत मॉडल करते हुए। मुंबई इंडियंस ने ख़िताब जीता, और मेरे टॉस-एडजस्टेड नंबर बाज़ार से बेहतर रहे।
22 नवंबर 2026, क़तर। अर्जेंटीना सऊदी अरब से 1-2 हारा। मेरे मॉडल ने अर्जेंटीना को 2.4 xG और सऊदी अरब को 0.4 दिया था। एक घंटे के भीतर मैंने क्लाइंट्स को 400 शब्दों का मेमो भेजा — यह फ़िनिशिंग वेरियंस है, ढाँचे का ढहना नहीं — और ग्रुप से बाहर होने की संभावना 3% से 11% की, 40% की नहीं। 18 दिसंबर को अर्जेंटीना ने फ़्रांस को पेनल्टी पर हराया। तरीक़ा यूरो 2026 में भी बच गया था, जहाँ मेरे फ़ील्ड-टिल्ट मॉडल ने इटली को ग्रुप चरण से ही टूर्नामेंट की सबसे बेहतर टीम बताया था। इटली ने वेम्बली में जीत दर्ज की।
इन सबका उस खाली JSON से रिश्ता सीधा है। मैं किसी मॉडल पर तभी भरोसा करता हूँ जब मैं उस शर्त का नाम बता सकूँ जो उसे ग़लत साबित कर देगी। उस खाली फ़ाइल के लिए वह शर्त एक लाइन में लिखी जा सकती है: अगर तथ्य-इकाइयों की सूची खाली है या शीर्षक अनुपलब्ध है, तो नतीजा विफल है। यह एसर्शन पाइपलाइन के भीतर ही रखा जाना चाहिए, शीर्ष परत तक पहुँचने से पहले।
यहाँ एक दूसरा समानांतर भी है, और वह भारतीय क्रिकेट का पुराना दर्द है। दुनिया की सबसे मुश्किल टीम बनाना भारत की दूसरी पसंदी है — यह चयन की समस्या है, प्रतिभा की नहीं। और विडंबना यह है कि अतिरिक्त प्रतिभा ही चयन की ग़लतियों को छिपाती है। हटाया गया खिलाड़ी ख़राब नहीं होता; उसका रिप्लेसमेंट इतना अच्छा होता है कि ग़लती दिखती ही नहीं। ठीक वैसे ही, जैसे एक स्कीमा-वैध खाली फ़ाइल पूरा होने का भ्रम खड़ा कर देती है। प्रारूप इतना साफ़ होता है कि सामग्री की कमी पर किसी की नज़र नहीं जाती।
इसी वजह से मैं उन आँकड़ों पर लगातार शक करता हूँ जिन्हें सब भरोसेमंद मानते हैं। नेट रन रेट बीस ओवर की पारी को एक अंतर में दबा देता है — यह भूल जाता है कि रन कब आए। डेथ ओवरों का स्ट्राइक रेट और पावरप्ले का स्ट्राइक रेट एक ही नाम के दो अलग मापदंड हैं। सातवें ओवर में गेंद डालने वाले स्पिनर का इकॉनमी और सत्रहवें ओवर में गेंद डालने वाले स्पिनर का इकॉनमी आपस में तुलनीय नहीं हैं। हर मामले में स्कीमा वैध है, और सामग्री आधी खाली। मेरे काम की सबसे उपयोगी आदत यह रही है कि मैं किसी भरोसेमंद आँकड़े से पूछता हूँ — तुम्हें बनाया किस चीज़ को मापने के लिए गया था? 129 का जवाब मुझे देर से मिला, पर उसके बाद हर आँकड़े से यह सवाल मैं पहले पूछता हूँ।
अब वह पढ़ें जो मैं सबसे पहले लिखना चाहता था, क्योंकि यही सबसे ईमानदार पढ़ाई है: यह पाइपलाइन टूटी नहीं थी। उसने बिल्कुल वही किया जो उसे करने के लिए बनाया गया था। उसका काम था कच्चे इनपुट से एक बना-बनाया ढाँचा लौटाना, और उसने वह हूबहू किया। ढाँचा उसका उत्पाद है; सामग्री उसका ज़िम्मा ही नहीं थी।
यहीं से विपरीत निष्कर्ष निकलते हैं, और उनके जाल अपने-अपने हैं। सबसे आसान यह मान लेना है कि निष्कर्षण इंजन ही दोषी है। यह वही भूल है जो मैंने उनादकट के मामले में की थी — नतीजा देखकर फ़ैसला सुना देना, बिना यह बताए कि मेरी शीट क्या नहीं देख सकती थी। एक खाली निष्कर्षण दो बिल्कुल अलग चीज़ों से पैदा हो सकता है: ऊपर की परत ने खाली बॉडी फ़ेच की, या नीचे की परत ने भरी हुई बॉडी गिरा दी। दोनों में एक चीज़ समान है और तीन अलग। समान यह कि नतीजा खाली है। अलग यह कि दोष किसका है।
इससे उलटा जाल यह मान लेना है कि चूँकि संरचना सही थी, इसलिए कुछ गड़बड़ नहीं हुई। यही असली ख़तरा है। डैशबोर्ड सफलता गिनते हैं: पार्स रेट 99.8%, लेटेंसी ठीक, अपटाइम ठीक। सब हरा। और उस दिन प्रकाशित विश्लेषणों की संख्या शून्य थी। हरा डैशबोर्ड जो शून्य लेख की रिपोर्ट कर रहा हो, वह एक ऐसा मीट्रिक है जो ग़लत चीज़ माप रहा है।
मुझे यह भी नाम लेना चाहिए कि मेरा यह पूरा दावा किस शर्त पर ग़लत हो सकता है। अगर कच्चे फ़ेच लॉग में एक भरी हुई लेख-बॉडी दर्ज है और निष्कर्षण परत ने उसे गिरा दिया, तो दोष निष्कर्षण का है — और मुझे अपना नतीजा पलटना पड़ेगा। अगर लॉग में ही खाली बॉडी है, तो निष्कर्षण बेकसूर है और दोष फ़ेचर का है। और अगर स्रोत ही उपलब्ध नहीं था, तो दोष उस आदमी का है जिसने बिना स्रोत के पाइपलाइन चलाई।
एक और सावधानी। मेरे पास इस विफलता का नमूना एक है। किसी एक खाली JSON से यह निष्कर्ष निकालना कि पाइपलाइन व्यवस्थागत रूप से टूटी है, ठीक वैसा ही है जैसा एक मैच के बाद किसी गेंदबाज़ को ख़त्म घोषित कर देना। मुझे सौ फ़ाइलों का लॉग चाहिए, एक नहीं। सौ में से कितनी बार खाली बॉडी फ़ेच हुई, कितनी बार निष्कर्षण ने गिराया, कितनी बार स्कीमा बदल गया। असली कहानी उसी वितरण में है, इस एक फ़ाइल में नहीं।
तो अगली बार के लिए संकेत यह है — और वह लेख में नहीं, जाँच में है। निष्कर्षण परत के भीतर तीन एसर्शन डालिए: शीर्षक मौजूद हो, तथ्य-इकाइयाँ शून्य से ज़्यादा हों, और स्रोत का नाम दर्ज हो। इनमें से कोई भी विफल हो तो पाइपलाइन चुपचाप आगे न बढ़े, चिल्लाए। और पहले ऑडिट का हक़दार मॉडल नहीं है — पहले फ़ेचर, फिर एसर्शन, फिर मॉडल।
अपने वर्षों के मैच देखने के अनुभव से एक बात सीखी है, और वह यह है कि सबसे साफ़ दिखने वाला नतीजा हमेशा सबसे भरोसेमंद नहीं होता। इसीलिए मैं आपको यह भी नहीं कहूँगा कि उस रात कुछ बड़ा टूटा। शायद कुछ नहीं टूटा। शायद सिर्फ़ एक चुप्पी थी जिसे किसी ने सुना नहीं।
अगली बार जब आपका डैशबोर्ड हरा दिखे, तो एक सवाल पूछिए — हरा किस चीज़ का है?
