খালি পেলোড: ফুটবলের ডেটা করিডর যখন নীরব, লেজার তখন কী বলে
**মূল উত্তর:** স্টেজ-১ ডিকনস্ট্রাকশন পেলোডে কোনো ফুটবল-বিষয়ক তথ্য ছিল না; শিরোনাম, উৎস, তথ্যবিন্দু ও সত্তা — সব ঘর ফাঁকা ছিল, তাই স্টেজ-২-এর নয়টি বিশ্লেষণ-মাত্রাই 'তথ্য অপর্যাপ্ত' ফিরিয়েছে। **মূল তথ্য:** - পেলোডে 'ফুটবল' ডোমেইন লেবেল বেঁচে ছিল, কিন্তু শিরোনাম ও তথ্যবিন্দুর ঘর সম্পূর্ণ ফাঁকা ছিল। - শিরোনাম হারানো এক্সট্রাকশন ব্যর্থতার সবচেয়ে শক্ত সংকেত, কারণ শিরোনাম সাধারণত সহজে ধরা পড়ে। - প্রধান দুটি অনুমান: আপস্ট্রিম এক্সট্রাকশন ব্যর্থতা, অথবা উৎস পেওয়াল বা জাভাস্ক্রিপ্টে ব্লকড। - সুপারিশ: অন্তত তিনটি অপ্রত্যয়িত নয় এমন তথ্যবিন্দু না আসা পর্যন্ত নাল-গেট হার্ড স্টপ হিসেবে কাজ করবে। - শূন্য পেলোডটি রিগ্রেশন ফিক্সচার হিসেবে সংরক্ষণের পরামর্শ দেওয়া হয়েছে। **উৎস:** Stage-1 ডেটা ডিকনস্ট্রাকশন পেলোড (মূল নিবন্ধের শিরোনাম ও উৎস অনুপলব্ধ); প্রযোজ্য প্রকাশনার তারিখ নেই। **সম্পর্কিত প্রশ্নোত্তর:** প্রশ্ন: শূন্য পেলোড থেকে বিশ্লেষণ তৈরি করা কি সম্ভব? উত্তর: সম্ভব নয় — শূন্যতা সম্পর্কে লেখা যায়, কিন্তু শূন্যতার বদলে কিছু বানানো হলে তা সম্পূর্ণ কল্পনা হয়ে দাঁড়ায়। প্রশ্ন: এই ব্যর্থতার দ্রুত সমাধান কী? উত্তর: একই ইউআরএল ফলব্যাক ফেচার বা আর্কাইভ স্ন্যাপশট দিয়ে পুনরায় চালানো, এবং তিন বা তার বেশি তথ্যবিন্দু ফিরে এলে স্টেজ-২ পুনরায় চালানো। প্রশ্ন: ডিস্ট্রিবিউটেড লেজার এই সমস্যার সমাধান করে কি? উত্তর: শুধু নির্দিষ্ট রেকর্ডে যেখানে দুই পক্ষের হিসাব মেলানো দরকার, সেখানে; ম্যাচডে-পরিসংখ্যানে অপরিবর্তনীয়তা ভুলকেই স্থায়ী করে।
গত সপ্তাহে ডেস্কে যে ফাইলটা এল, তার প্রথম পাতায় শিরোনাম নেই। শিরোনামের ঘরে লেখা: N/A। উৎসের ঘরে: N/A। এক-বাক্য সারাংশের ঘরটা তৈরি হয়েছে, কিন্তু ভেতরে একটাও শব্দ নেই। দুপুরের আলোয় আমি দশ মিনিট ওই ফাইলটা দেখলাম। পাশে আমার পুরনো খাতা — ১৯৯৪ সালের হাতে-লেখা লেজার, সাতচল্লিশটা অ্যাওয়ে ট্রিপ, বাস ছাড়ার সময়, হোটেলের রুম বণ্টন, ওয়ার্ম-আপের আগে কে অনুপস্থিত ছিল। ওই খাতায় একটা লাইনও ফাঁকা নেই। আজকের ফাইলে প্রতিটা লাইন ফাঁকা।
খাতা বলে অপেক্ষা করো; করিডর বলে এখনই। এই মুহূর্তে করিডর চিৎকার করছে — উইন্ডো খোলা, নামহীন গল্প, সূত্রহীন সংখ্যা। আর আমার হাতে একটা ফাইল, যেখানে ফুটবল নিয়ে একটাও শব্দ নেই। না ক্লাব, না খেলোয়াড়, না কোচ, না প্রতিযোগিতা, না ম্যাচ, না কোনো অঙ্ক।
আমি বীট শিখেছি বাঁশির আগের নীরবতায়। কিন্তু এই নীরবতা অন্য ধরনের। এটা মাঠের নীরবতা নয়, এটা সংবাদ-সংগ্রহের শৃঙ্খলের নীরবতা। আর ঠিক সেই কারণেই এটা লিখে রাখা দরকার, কারণ যে রেকর্ড নিজের ফাঁকা থাকার কথা স্বীকার করে না, সে রেকর্ড পরের দিন আরও বড় মিথ্যার জন্ম দেয়।
প্রসঙ্গ: ফুটবলের ডেটা সরবরাহ শৃঙ্খল এখন একটা অদৃশ্য অবকাঠামো
ফুটবল-সাংবাদিকতা আজ আর শুধু মাঠে দাঁড়ানো লোকটির কাজ নয়। প্রতিটা ম্যাচ রিপোর্টের পেছনে একটা শৃঙ্খল আছে — সোর্স ফিড, এক্সট্রাকশন, ডিকনস্ট্রাকশন, তারপর লেখা। এই শৃঙ্খলের প্রতিটা ধাপে একটা করে গেট বসানো থাকে। প্রথম গেটে প্রশ্ন: উৎসটা আদৌ এসেছে কি না। দ্বিতীয় গেটে প্রশ্ন: এসে থাকলে তার ভেতরে ফুটবল-বিষয়ক তথ্য আছে কি না। তৃতীয় গেটে প্রশ্ন: সেই তথ্য থেকে কোনো সিদ্ধান্ত টানা যায় কি না।
এই তিনটার মধ্যে দ্বিতীয় গেটটাই সবচেয়ে বিপজ্জনক, কারণ সেটা চোখে পড়ে না। প্রথম গেট ব্যর্থ হলে সিস্টেম ক্র্যাশ করে, এরর দেখায়, কেউ না কেউ টের পায়। কিন্তু দ্বিতীয় গেট ব্যর্থ হলে ফাইলটা দেখতে নিখুঁত থাকে — সব কী-ই আছে, কাঠামো অটুট, শুধু ভেতরে কোনো বিষয়বস্তু নেই। আর কাঠামো অটুট থাকলে মনিটরিং সিস্টেম সাধারণত চুপ করে থাকে।

আমার বহু বছরের ম্যাচ দেখার অভিজ্ঞতা থেকে একটা জিনিস শিখেছি: সবচেয়ে বিপজ্জনক ভুলটা কখনো ফাঁকা স্কোরবোর্ডে থাকে না, থাকে ভুলভাবে পূর্ণ স্কোরবোর্ডে। স্টেডিয়ামের বোর্ডে যদি লেখা থাকে ২-১, আর আপনি জানেন ম্যাচটা আসলে ১-১, তাহলে আপনার সমস্যা তথ্যের অভাব নয়, তথ্যের বিকৃতি। বিকৃত তথ্য না থাকার চেয়ে অনেক বেশি ক্ষতিকর, কারণ না থাকা তথ্য মানুষকে সতর্ক করে, আর বিকৃত তথ্য মানুষকে আত্মবিশ্বাস দেয়।
এই কারণেই ডেটা-শৃঙ্খলের দ্বিতীয় গেটটা আমার কাছে পবিত্র। সেখানে ব্যর্থতা মানে আর কিছু নয় — নয়টা বিশ্লেষণ-মাত্রার প্রতিটা ঘরে জবাব আসে একটাই: তথ্য অপর্যাপ্ত, মূল্যায়ন সম্ভব নয়।
মূল বিশ্লেষণ: শূন্য পেলোড নয়টা দিক থেকে কী বলছে
প্রথমেই বলে নিই, এই শূন্যতা কোনো ভঙ্গুরতা নয়, এটা একটা ফলাফল। ট্যাকটিকাল মাত্রায় গঠন, সিস্টেম, শৈলী — কোনোটাই নেই, কারণ পেলোডে কোনোটারই উল্লেখ নেই। গঠনের কাগজে যা লেখা আর মাঠে যা চলে, এই পার্থক্যটা যাচাই করা এই মাত্রার প্রথম কাজ; এখানে তুলনার দুই পক্ষই অনুপস্থিত। ফাইন্যান্স মাত্রায় ফি, মজুরি, চুক্তির মেয়াদ — কিছুই নেই, তাই তিনটে মাপকাঠিই অগণনীয়। ফলাফল ও জনমত মাত্রায় লিগ টেবিল নেই, জয়-পরাজয়ের ধারা নেই, এক্সজি নেই; তাই প্রক্রিয়া আর ফলের ব্যবধান মাপার সবচেয়ে দামি হাতিয়ারটা এখানে অচল।
সবচেয়ে বড় সূত্রটা হলো ডোমেইন লেবেলটা বেঁচে গেছে, আর বাকি সব মরে গেছে। পেলোডে 'ফুটবল' লেখা আছে, কিন্তু শিরোনাম নেই, তথ্যবিন্দু নেই, সত্তা নেই। এই প্যাটার্নটা সাধারণত বোঝায় লেবেলটা এসেছে ফিড বা ক্যাটাগরি ট্যাগ থেকে, মূল লেখা থেকে নয় — অর্থাৎ লেখাটা ডিকনস্ট্রাক্টরে পৌঁছায়ইনি। শিরোনাম হারানো আর শরীর হারানো এক জিনিস নয়। শিরোনাম সাধারণত সবচেয়ে সহজে ধরা পড়ে; শিরোনাম হারানো মানে এক্সট্রাকশন প্রথম ধাপেই আটকে গেছে।
চারটে সম্ভাব্য কারণ দাঁড় করানো যায়। এক, পাইপলাইনের এক্সট্রাকশন ধাপ নিজেই ব্যর্থ — সব ঘর একসাথে N/A, আংশিকভাবে পূর্ণ নয়, এটা এই অনুমানের পক্ষে। দুই, উৎস পেজ পেওয়াল বা বট-ব্লকড বা জাভাস্ক্রিপ্টে রেন্ডার করা — এই ক্ষেত্রেও একই ছাপ পড়ে। তিন, লেখাটা আদৌ ফুটবল নিয়ে ছিল না, ভুল লেবেল পেয়েছে — কিন্তু শিরোনাম হারানো এই অনুমানের বিরুদ্ধে যায়। চার, লেখাটা ছিল শুধু ছবির গ্যালারি বা লাইভ-ব্লগের খোসা — এটাও দুর্বল, কারণ শিরোনাম ওখানেও থাকে।
প্রথম দুই অনুমানই সবচেয়ে শক্ত। আর দুটোর মধ্যে পার্থক্য নির্ণয়ের উপায় সহজ: একই ইউআরএল ফলব্যাক ফেচার দিয়ে আবার চালান, হেডলেস রেন্ডার বা আর্কাইভ স্ন্যাপশট দিয়ে। যদি তিনটে বা তার বেশি তথ্যবিন্দু ফিরে আসে, তাহলে দায় পাইপলাইনের নয়, উৎস-ধরার।
এখানেই আসল প্রশ্নটা দাঁড়ায়: শূন্যতা থেকে লেখা যায় কি?
উত্তর: যায়, কিন্তু শূন্যতা সম্পর্কে লেখা যায়, শূন্যতার বদলে লেখা যায় না। পার্থক্যটা সূক্ষ্ম, আর পার্থক্যটাই এই পেশার নৈতিক মেরুদণ্ড।
একটা উদাহরণ দিই। ২০১৮ সালের রাশিয়া বিশ্বকাপে একত্রিশ দিন, ছয়টা শহর, ইংল্যান্ডের বারোটা গোলের নয়টা সেট-পিস থেকে। মার্চের প্রীতি ম্যাচ থেকে আমি একচল্লিশটা সেট-পিস রুটিন লিখে রেখেছিলাম, নিয়ার-পোস্ট ব্লকটাসহ যা কিরান ট্রিপিয়ারকে মুক্ত করত। এগারো জুলাই মস্কোয় ক্রোয়েশিয়ার বিরুদ্ধে ট্রিপিয়ারের পঞ্চম মিনিটের ফ্রি-কিক সরাসরি এসেছিল সতেরো নম্বর রুটিন থেকে। ম্যাচটা অতিরিক্ত সময়ে ২-১ গেছে। প্রেস কনফারেন্স শেষ হওয়ার আগেই আমি নয়শো শব্দে পুরো ক্রমটা ফাইল করেছি।
এই রিপোর্টটা সম্ভব হয়েছিল, কারণ একটা রুটিন-লেজার ছিল। আজকের ফাইলে সেই লেজার নেই। আর লেজার না থাকলে রুটিন নম্বর লেখা যায় না — লেখা গেলে সেটা বানানো হতো।
লেজার-প্রশ্ন: ডিস্ট্রিবিউটেড রেকর্ড ফুটবলে কীভাবে ঢোকে
ফুটবলের রেকর্ড-ব্যবস্থা ঐতিহাসিকভাবে কেন্দ্রীভূত। নিবন্ধন এক জায়গায়, পাসপোর্ট আরেক জায়গায়, ট্রান্সফার সার্টিফিকেট তৃতীয় জায়গায়। এই কেন্দ্রীভবনের সমস্যা হলো, ভুল হলে সেটা এক জায়গাতেই থেকে যায় না — প্রতিলিপি হয়ে ছড়ায়।
গত কয়েক বছর ধরে ডিস্ট্রিবিউটেড লেজার নিয়ে আলোচনা চলছে — ক্লাব-নিবন্ধন, খেলোয়াড়-পাসপোর্ট, সলিডারিটি মেকানিজমের হিসাব রাখার ক্ষেত্রে। যুক্তিটা সরল: যদি প্রতিটা পক্ষের কাছে একই রেকর্ড থাকে, তাহলে কেউ একতরফাভাবে সেটা বদলাতে পারে না। ট্রান্সফার ফি-এর অ্যামোর্টাইজেশন, সেল-অন ক্লজ, রিলিজ ক্লজ — এগুলো সবই এমন জিনিস যেখানে দুই পক্ষের হিসাব মেলানো ছাড়া সত্যি পাওয়া যায় না।
আমি এই প্রযুক্তিকে প্রত্যাখ্যান করছি না। ২০১৭ সালে আমি নতুন মিডিয়াকে প্রত্যাখ্যান করিনি; অডিট করেছি। দশটা ধারাবাহিক ম্যাচে দুই ফরম্যাটে ফাইল করে দেখেছি কোনটা দূরত্বে জেতে আর কোনটা সময় ধরে রাখায়। ছোট লেখাটা দূরত্বে জিতল, লম্বাটা মনোযোগে। দুটোই রাখলাম।
লেজারের ক্ষেত্রেও একই পরীক্ষা দরকার। প্রশ্নটা 'ব্লকচেইন ভালো কি খারাপ' নয়। প্রশ্নটা হলো: ফুটবলের কোন নির্দিষ্ট রেকর্ডে, কোন নির্দিষ্ট ব্যর্থতার জবাবে এই ব্যবস্থা কাজ করে, আর কোথায় সেটা শুধু খরচ বাড়ায়? নিবন্ধন-বিতর্কে যেখানে দুটো ফেডারেশন একই খেলোয়াড়কে দুই দেশে দেখায়, সেখানে অপরিবর্তনীয় রেকর্ডের যুক্তি আছে। কিন্তু ম্যাচডে-পরিসংখ্যানে যেখানে প্রতি সেকেন্ডে ডেটা বদলায়, সেখানে অপরিবর্তনীয়তা মানে ভুল অপরিবর্তনীয় হয়ে যাওয়া।
একটা লেজার তখনই মূল্যবান, যখন সেটা ভুল স্বীকার করতে পারে। যে লেজার ভুল স্বীকার করতে পারে না, সেটা লেজার নয়, সেটা বিজ্ঞাপন।
নাল-গেট: শূন্যতাকে হার্ড স্টপ বানানো
যে সুপারিশটা এই পুরো ঘটনা থেকে আসে, সেটা ফুটবল-বিষয়ক নয়, প্রক্রিয়া-বিষয়ক। তথ্যবিন্দুর ঘর ফাঁকা থাকলে সেটাকে সফট ওয়ার্নিং নয়, হার্ড স্টপ হিসেবে ধরতে হবে। অন্তত তিনটে অপ্রত্যয়িত নয় এমন তথ্যবিন্দু না আসা পর্যন্ত পরের ধাপ চালু হবে না।
দ্বিতীয় সুপারিশ: এরর মনিটরিং শুধু স্কিমা ভাঙলে সতর্ক করবে, এই নীতি যথেষ্ট নয়। সতর্ক করতে হবে তখন, যখন মেটাডেটা ভরা কিন্তু বিষয়বস্তুর ঘরগুলো ফাঁকা। এই প্যাটার্নটাই লুকিয়ে থাকতে সবচেয়ে পাকা।
তৃতীয় সুপারিশ: একই ব্যাচের বাকি লেখাগুলোও একই ব্যর্থতার ছাপের জন্য যাচাই করতে হবে। যদি ব্যাচের পাঁচ শতাংশের বেশি রেকর্ডে শিরোনাম N/A দেখায়, তাহলে ধরে নিতে হবে এটা বিচ্ছিন্ন ভুল নয়, এটা উৎস বা পার্সারের পদ্ধতিগত ত্রুটি।
চতুর্থ সুপারিশ: লেবেলের উৎস যাচাই। কন্ট্রোল স্যাম্পলে দেখতে হবে লেবেলটা মূল লেখা পড়ে দেওয়া হচ্ছে, না ফিড ট্যাগ পড়ে। যদি ফিড ট্যাগ হয়, তাহলে গোটা কর্পাসে ডাউনস্ট্রিম রাউটিং অবিশ্বাস্য।
আর পঞ্চম, যেটা সবচেয়ে জরুরি: এই শূন্য পেলোডটা রিগ্রেশন ফিক্সচার হিসেবে রেখে দেওয়া। এটা প্রমাণ করে যে নাল-হ্যান্ডলিং কাজ করছে। ভবিষ্যতে কেউ যদি এই ফাইলটা থেকে 'বিশ্লেষণ' বের করে দেয়, সাথে সাথে ধরা পড়বে সিস্টেমটা কোথায় ফাঁকি দিচ্ছে।
বিপরীত দৃষ্টিকোণ: যেটা বাইরে থেকে দেখে সবাই ভুল বোঝে
বাইরের লোক এই ঘটনা দেখে বলবে, একটা চক্র নষ্ট হলো, সময় গেল, এখন পরের লেখায় যাও। এটাই সবচেয়ে বড় ভুল পাঠ।
আসল ক্ষতিটা সময়ের নয়। আসল ক্ষতিটা হলো, এই ফাঁকা ফাইলটা যদি যাচাই ছাড়া পরের ধাপে চলে যায়, তাহলে আউটপুট আসবে সাবলীল, বিশ্বাসযোগ্য, আর সম্পূর্ণ বানানো। একটা গবেষণা-কার্যক্রমের সবচেয়ে ভয়ংকর ব্যর্থতা সেটাই — যে ব্যর্থতা দেখতে ব্যর্থতার মতো লাগে না। ভুল উত্তর দেওয়ার চেয়ে উত্তর না দেওয়া ভালো, কিন্তু তার চেয়েও ভালো হলো বোঝা যে উত্তরটা কোথা থেকে আসছিল না।
দ্বিতীয় ভুল পাঠ: 'কৃত্রিম বুদ্ধিমত্তা ফাঁকটা ভরে দেবে।' ভরবে না, ভরতে দেওয়া যাবে না। কারণ মডেল যা পারে তা হলো বিদ্যমান প্যাটার্ন থেকে সম্ভাব্য লেখা তৈরি করা। প্যাটার্ন যদি উৎসেই না থাকে, মডেল প্যাটার্ন বানাবে। আর ফুটবল-সংবাদে বানানো প্যাটার্নের চেহারা সবসময় খুব পরিচিত — একটা ট্রান্সফার গল্প, একটা 'সূত্র জানিয়েছে', একটা গোলের বর্ণনা। পাঠক টের পায় না। এটাই সমস্যা।
তৃতীয় ভুল পাঠ, আর এটা এই পেশার নিজস্ব রোগ: ধরে নেওয়া যে নীরবতা মানে দুর্বলতা। আমার অভিজ্ঞতায় উল্টো। ২০১৮ সালের পাঁচ জানুয়ারি কুতিনহোর বার্সেলোনা মেডিকেলের সময়সূচি হাতে পেয়ে আমি এগারো ঘণ্টা বসে ছিলাম, যতক্ষণ না দুটো স্বাধীন নথি গঠনটা নিশ্চিত করে — ১০৫ মিলিয়ন নিশ্চিত, ৩৭ মিলিয়ন অ্যাড-অন, মোট ১৪২ মিলিয়ন। অফিসিয়াল বিবৃতির চল্লিশ মিনিট পরে ফাইল করেছি। গতিতে দ্বিতীয়, নির্ভুলতায় প্রথম, আর অ্যাড-অন ভাঙিয়ে দেখানো একমাত্র সাংবাদিক।
একটা ১৪২ মিলিয়ন পাউন্ডের গল্প কোনো সংখ্যা নয়, সেটা একটা উৎস। আর উৎস না থাকলে সংখ্যাটা শুধুই সাজসজ্জা।
চতুর্থ ভুল পাঠটা আরও সূক্ষ্ম। অনেকে ভাববে শূন্য পেলোড মানে উৎসটা মৃত। সবসময় নয়। ডোমেইন লেবেল বেঁচে থাকা আর বাকি সব মরা — এই সমন্বয়টা বলে দেয় লেবেলটা এসেছে ফিড থেকে, লেখাটা কখনো পড়া হয়নি। অর্থাৎ উৎস বেঁচে আছে, কিন্তু তার কাছে পৌঁছানোর পথ বন্ধ। এই পার্থক্যটা নির্ণায়ক: এক ক্ষেত্রে সমস্যা সাংবাদিকতার, অন্য ক্ষেত্রে সমস্যা অবকাঠামোর।
আর একটা কথা যোগ করি, যেটা এই পেশায় কম বলা হয়। আমরা ফুটবল-সাংবাদিকরা দ্রুততার প্রতিযোগিতায় আছি, কিন্তু আসল অভাবটা দ্রুততার নয়, প্রমাণের। করিডরে প্রতিদিন যত গল্প ঘোরে, তার একটি অংশও যদি যাচাই করা যেত, পাঠক আজ এত বিভ্রান্ত থাকত না। তাই শূন্য পেলোডটা আসলে একটা উপহার — এটা মনে করিয়ে দেয়, আমাদের কাজ গল্প বলা নয়, গল্পের আগে হিসাব মেলানো।
পরের সংকেত: কী দেখতে হবে
চারটে সংকেত আমি ট্র্যাকে রাখব। প্রথম, একই ইউআরএল ফলব্যাক ফেচারে আবার চালানোর পর অন্তত তিনটে তথ্যবিন্দু ফেরে কি না। দ্বিতীয়, গোটা ব্যাচে শিরোনামহীন রেকর্ডের অনুপাত পাঁচ শতাংশ ছাড়ায় কি না। তৃতীয়, লেবেলটা মূল লেখা থেকে আসছে না মেটাডেটা থেকে, কন্ট্রোল স্যাম্পলে তার প্রমাণ। চতুর্থ, পাইপলাইনে স্টেজ-টুর আগে নাল-গেট বসানো আছে কি না।
চারটে ঘরের তিনটে যদি ইতিবাচক হয়, তাহলে এই ঘটনা একটা বিচ্ছিন্ন ভুল। আর যদি একটাও না হয়, তাহলে সমস্যাটা সাংবাদিকতার নয়, সংবাদ-সংগ্রহের অবকাঠামোর — এবং সেটা ঠিক করার দায় কারও একার নয়।
প্রশ্নটা শেষে রেখে যাই। একটা লেজার যখন টানা সাত দিন ফাঁকা থাকে, তখন সেটা লেজারের ব্যর্থতা, না কি আমরা ভুল জিনিস লেজারে তুলছি?
