बास्केटबॉलखाली पाइपलाइन: स्पोर्ट्स न्यूज़ ऑटोमेशन की वह विफलता जिसे कोई नहीं देखता
बास्केटबॉल

खाली पाइपलाइन: स्पोर्ट्स न्यूज़ ऑटोमेशन की वह विफलता जिसे कोई नहीं देखता

Stage-1 का आउटपुट खाली होने का अर्थ यह नहीं है कि लेख में जानकारी नहीं थी, बल्कि यह कि बॉडी एक्सट्रैक्शन चरण विफल रहा। तीन संभावित कारण हैं: (1) क्रॉल किया गया HTML खाली शेल, पेफ़ॉल या JS-रेंडर्ड था; (2) कंटेंट कंटेनर का सेलेक्टर साइट के बदले स्ट्रक्चर से मेल नहीं खाया और शून्य पैराग्राफ निकले; (3) क्लासिफायर को लगभग शून्य फ़ीचर मिले और उसने 'Unclassified' डिफ़ॉल्ट लौटा दिया। 'Domain Label: basketball' तभी भरोसेमंद है जब वह मानव द्वारा लगाया गया हो; मॉडल द्वारा दिया गया लेबल URL या title से अनुमान मात्र है। आगे बढ़ने के लिए मूल लेख का पाठ, मूल लिंक, या Stage-1 का मध्यवर्ती उत्पाद (HTML, पैराग्राफ ऐरे, लॉग) में से कोई एक आवश्यक है। इस स्थिति में ऑटोमेशन का सही व्यवहार 'कुछ नहीं' कहना है, अनुमान से भरना नहीं।

एक ऑटोमेटेड स्पोर्ट्स न्यूज़ सिस्टम की Stage-1 पाइपलाइन से जो आउटपुट लौटा, वह पूरी तरह खाली था। शीर्षक N/A, स्रोत N/A, लेख का प्रकार N/A — यानी तीनों बुनियादी फ़ील्ड रिक्त। 'Core Viewpoints' के नीचे केवल खाली टेम्पलेट पड़ा था, और 'Information Points' में एक भी प्रविष्टि नहीं थी। पूरे आउटपुट में एकमात्र ठोस जानकारी थी: Domain Label — basketball। सतही नज़र में यह 'उस लेख में कोई जानकारी ही नहीं थी' जैसा लगता है। लेकिन तकनीकी तौर पर यह निष्कर्ष गलत है। जब किसी लेख में वाकई जानकारी न हो, तो सिस्टम आमतौर पर कम से कम शीर्षक, स्रोत और प्रकार तो भरता ही है। यहाँ तो वे भी नहीं भरे। इसका मतलब है कि विफलता 'लेख की कमी' में नहीं, बल्कि 'लेख तक पहुँचने या उसे पढ़ने' की प्रक्रिया में हुई है। Stage-1 संभवतः बॉडी एक्सट्रैक्शन चरण में ही विफल हो गया, और उसके बाद के सभी चरणों ने खाली इनपुट पर अपना डिफ़ॉल्ट व्यवहार दिखाया। इस तरह की विफलता के तीन सबसे सामान्य कारण हैं। पहला — इनपुट ही सिस्टम में नहीं आया। क्रॉलर ने जो HTML उठाया, वह खाली शेल था, या पेफ़ॉल के पीछे छिपा था, या पूरी तरह JavaScript से रेंडर होने वाला पेज था जिसमें सर्वर से लौटे HTML में बॉडी नोड ही खाली था। ऐसे में एक्सट्रैक्टर के पास पढ़ने को कुछ नहीं होता। दूसरा कारण — एक्सट्रैक्शन नियम का मिस होना। यह ज़्यादा आम है और ज़्यादा धोखेबाज़ भी। साइट का स्ट्रक्चर बदल जाता है, कंटेंट कंटेनर का CSS सेलेक्टर पुराना पड़ जाता है, या पैराग्राफ अब किसी नए wrapper के अंदर चले जाते हैं। नतीजा यह होता है कि सिस्टम सफलतापूर्वक पेज लोड करता है, फिर भी शून्य पैराग्राफ निकालता है। लॉग में कोई एरर नहीं दिखता, क्योंकि तकनीकी रूप से कोई अपवाद नहीं फेंका गया — बस चुपचाप खाली सूची लौटा दी गई। तीसरा कारण — क्लासिफायर का फ़ॉलबैक व्यवहार। आउटपुट में 'Article Type: Unclassified' और केवल domain टैग का होना इस बात का साफ़ संकेत है कि क्लासिफिकेशन चरण को लगभग शून्य फ़ीचर मिले। जब कोई मॉडल खाली या नगण्य इनपुट पर चलता है, तो वह त्रुटि नहीं देता — वह अपना सबसे सुरक्षित डिफ़ॉल्ट लौटा देता है। यह ठीक वैसा ही पैटर्न है: खाली इनपुट, डिफ़ॉल्ट आउटपुट। यहाँ एक और सवाल उठता है जो रिपोर्टिंग की नज़र से अहम है — Domain Label 'basketball' कहाँ से आया? अगर यह मानव द्वारा लगाया गया है, तो यह भरोसेमंद है और इससे कम से कम इतना तय होता है कि स्रोत बास्केटबॉल से जुड़ा था। लेकिन अगर यह मॉडल ने दिया है, तो खाली बॉडी की स्थिति में यह भी अविश्वसनीय है। मॉडल इस तरह के लेबल अक्सर URL के slug, पेज के title टैग, या मेटा डिस्क्रिप्शन से अनुमान लगाकर देता है। यानी लेबल 'अनुमान' है, 'अवलोकन' नहीं। और एक खाली बॉडी वाले लेख पर बना अनुमान पूरी डाउनस्ट्रीम विश्लेषण को गलत दिशा में ले जा सकता है। यह समस्या सिर्फ़ एक तकनीकी बग नहीं है। स्पोर्ट्स न्यूज़ की दुनिया में इसका सीधा असर पड़ता है। खेल पत्रकारिता आज स्पीड और वॉल्यूम के दोहरे दबाव में है। मैच खत्म होते ही स्कोर, आँकड़े, कोट्स और विश्लेषण प्रकाशित करने की होड़ रहती है। इसी दबाव में मीडिया संस्थान तेज़ी से ऑटोमेशन की ओर बढ़े हैं — क्रॉलिंग, एक्सट्रैक्शन, सारांशीकरण और कभी-कभी लेख-लेखन तक। ऐसे सिस्टम में एक खाली Stage-1 आउटपुट सबसे खतरनाक स्थिति है, क्योंकि वह शोर नहीं करता। वह विफल होता है और विफलता को 'कोई खबर नहीं' की तरह प्रस्तुत करता है। अगर अगले चरण में कोई भाषा मॉडल इस खाली आउटपुट को इनपुट के रूप में ले ले, तो खतरा और बढ़ जाता है। खाली संदर्भ पर लिखने को कहा जाए तो मॉडल या तो मना करेगा, या फिर सबसे बुरी स्थिति में सामान्य ज्ञान से भरपाई करके एक ऐसी खबर लिख देगा जिसका मूल स्रोत से कोई संबंध नहीं होगा। बास्केटबॉल जैसे खेल में यह जोखिम ख़ास है, क्योंकि वहाँ जानकारी संख्याओं में बसती है — स्कोर, फ़ील्ड गोल प्रतिशत, रिबाउंड, फ़ाउल, चोट की स्थिति, ट्रेड की खबरें। इनमें से एक भी आँकड़ा गलत छपा तो पाठक का भरोसा टूटता है, और सोशल मीडिया पर वह गलती मिनटों में फैल जाती है। इसलिए असली सबक यह है कि स्पोर्ट्स न्यूज़ ऑटोमेशन में 'खाली आउटपुट' को एक सामान्य स्थिति नहीं, बल्कि एक हार्ड एरर माना जाना चाहिए। व्यवहार में ऐसी कई रक्षा-पंक्तियाँ बनाई जा सकती हैं। पहली — स्कीमा वैलिडेशन। हर Stage के आउटपुट पर अनिवार्य फ़ील्ड की non-null जाँच होनी चाहिए; शीर्षक या स्रोत खाली मिले तो पाइपलाइन आगे न बढ़े। दूसरी — पैराग्राफ काउंट थ्रेशोल्ड। अगर एक्सट्रैक्ट किए गए पैराग्राफ की संख्या शून्य है या किसी न्यूनतम सीमा से कम है, तो उसे सफलता नहीं, विफलता घोषित किया जाए। तीसरी — DOM स्नैपशॉट लॉगिंग। जिस HTML से शून्य पैराग्राफ निकले, उसका स्नैपशॉट सहेजा जाए, ताकि बाद में यह पता चल सके कि समस्या पेफ़ॉल थी, JS रेंडरिंग थी, या सेलेक्टर का मिस। चौथी — फ़ॉलबैक चेन। एक सेलेक्टर विफल हो तो दूसरा, फिर सामान्य readability पार्सर, और अंत में साफ़ चेतावनी। पाँचवीं — मानवीय समीक्षा उन मामलों के लिए जहाँ डोमेन लेबल का स्रोत स्पष्ट न हो। गौर करने वाली बात यह है कि इन सभी उपायों की जड़ एक ही सिद्धांत में है: सिस्टम को 'नहीं पता' कहना सिखाया जाए। मशीन लर्निंग पाइपलाइन की स्वाभाविक प्रवृत्ति होती है कि वह हर हाल में कुछ आउटपुट दे। लेकिन पत्रकारिता में 'कुछ' से बेहतर 'कुछ नहीं' है, बशर्ते वह 'कुछ नहीं' स्पष्ट रूप से दर्ज हो और उसे छिपाया न जाए। एक खाली फ़ील्ड ईमानदार होती है; उस पर भरा गया अनुमान झूठ होता है। इस घटना का एक व्यापक संदर्भ भी है। दुनिया भर के न्यूज़रूम पिछले कुछ वर्षों में कंटेंट ऑटोमेशन पर निर्भर होते गए हैं। छोटे-बड़े खेल परिणाम, लीग टेबल, खिलाड़ी के आँकड़े — ये सब पहले से ही मशीनों द्वारा लिखे जा रहे हैं। यह कुशल है, लेकिन इसने एक नई कमज़ोरी पैदा की है: अगर डेटा की आपूर्ति श्रृंखला का कोई एक जोड़ टूटे, तो आउटपुट में या तो खालीपन आता है या गलत भराव। दोनों ही स्थितियाँ पाठक के लिए एक जैसी भ्रमित करने वाली हैं। बास्केटबॉल डोमेन में यह और भी मायने रखता है, क्योंकि वहाँ सीज़न लंबा है, मैच तेज़ी से होते हैं और खबरों की आवृत्ति ऊँची रहती है। एक ही रात में कई स्कोर, कई हाइलाइट्स और कई चोट की अपडेट आती हैं। ऐसे में पाइपलाइन की विश्वसनीयता ही संपादकीय गुणवत्ता बन जाती है। अगर Stage-1 चुपचाप खाली लौटता रहे, तो संपादक को पता ही नहीं चलेगा कि कौन-सी खबरें सिस्टम से गुज़री ही नहीं। यह 'अदृश्य चूक' सबसे महँगी होती है, क्योंकि इसका कोई अलार्म नहीं बजता। इसलिए इस मामले में अगला कदम तकनीकी जाँच है, अनुमान नहीं। तीन चीज़ों में से कोई एक उपलब्ध हो तो आगे बढ़ा जा सकता है। पहला — मूल लेख का पाठ, सीधे चिपकाकर दिया जाए, ताकि सामान्य प्रक्रिया से विश्लेषण हो सके। दूसरा — मूल लिंक और उसकी उपलब्धता की जानकारी, ताकि यह देखा जा सके कि सामग्री खुलती है या नहीं। तीसरा — Stage-1 का मध्यवर्ती उत्पाद: क्रॉल किया गया HTML, एक्सट्रैक्ट किए गए पैराग्राफ का ऐरे, या सीधे लॉग। इनसे यह तय किया जा सकता है कि विफलता एक्सट्रैक्शन की थी या क्लासिफिकेशन की, और साथ ही एक्सट्रैक्शन नियम भी ठीक किया जा सकता है। अंत में एक संपादकीय बात। खेल पत्रकारिता का भरोसा विवरणों पर टिका है — किसने कितने अंक बनाए, कौन किस मिनट में चोटिल हुआ, किस टीम ने कौन-सा क्वार्टर जीता। ऑटोमेशन इन विवरणों को तेज़ी से इकट्ठा कर सकता है, लेकिन वह उन्हें गढ़ नहीं सकता। जिस दिन कोई सिस्टम खाली इनपुट पर भी 'पूरी खबर' लिख देगा, उस दिन खेल पत्रकारिता की सबसे बुनियादी शर्त — तथ्य — दाँव पर लग जाएगी। खाली पाइपलाइन कोई शर्म की बात नहीं है; उसे छिपाना शर्म की बात है।

खाली पाइपलाइन: स्पोर्ट्स न्यूज़ ऑटोमेशन की वह विफलता जिसे कोई नहीं देखता

संबंधित खिलाड़ी