খালি পেলোড: ডেটা পাইপলাইন যখন নীরবে চুপ করে যায়
**মূল উত্তর**: বিশ্লেষণটি একটি সম্পূর্ণ খালি স্টেজ-১ ইনপুট পেয়েছে, তাই স্টেজ-২-এর নয়টি মাত্রার প্রতিটিতে তথ্য অপর্যাপ্ত লেখা হয়েছে। ফুটবল বিশ্লেষণের কোনো সিদ্ধান্ত এখান থেকে বের করা সম্ভব নয়; মূল সমস্যাটি বিষয়বস্তুর অভাব নয়, ইনপুট অখণ্ডতার ব্যর্থতা। **মূল তথ্য**: - স্টেজ-১ আউটপুটে শিরোনাম, সূত্র ও তথ্যবিন্দু — তিনটিই অনুপস্থিত ছিল। - স্টেজ-২-এর নয়টি বিশ্লেষণ মাত্রার প্রতিটিতে তথ্য অপর্যাপ্ত চিহ্ন বসানো হয়েছে। - সত্তা শনাক্ত করা যায়নি: কোনো ক্লাব, খেলোয়াড় বা প্রতিযোগিতার নাম ইনপুটে নেই। - সময়সংবেদনশীলতা ও সূত্রের মান যাচাই করা সম্ভব হয়নি। - সুপারিশ: পুনরায় স্টেজ-১ চালানো অথবা মূল নিবন্ধের কাঁচা টেক্সট সরবরাহ করা। **সূত্র উল্লেখ**: মূল সূত্র Stage-2 Deep Professional Analysis ডকুমেন্ট, যার স্টেজ-১ ডিকনস্ট্রাকশন পেলোড খালি ছিল। প্রকাশ তারিখ: ইনপুট ডকুমেন্টে টাইমস্ট্যাম্প অনুপস্থিত। CricSultan ডেটাবেসে ক্রস-চেক করা হয়নি, কারণ যাচাইযোগ্য ম্যাচ ডেটা সরবরাহ করা হয়নি। **সম্ভাব্য পরবর্তী প্রশ্ন**: প্রশ্ন: খালি ইনপুট মানে কি নিবন্ধে গুরুত্বপূর্ণ কিছু ছিল না? উত্তর: না, সাধারণত এটি পাইপলাইনের নীরব ব্যর্থতা বোঝায়, বিষয়বস্তুর অভাব নয়। প্রশ্ন: পরবর্তী ধাপে ঠিক কী করা উচিত? উত্তর: স্টেজ-১ পুনরায় চালানো বা মূল নিবন্ধের কাঁচা টেক্সট সরবরাহ করা। প্রশ্ন: এটি কি ফুটবল বিশ্লেষণে নতুন সমস্যা? উত্তর: না, xG-এর ফাঁকা ঘর ও খালি স্টেডিয়ামের ভেরিয়েবল একই ধরনের সমস্যা, যেখানে cricsultan.com ডেটা সূচক যাচাইয়ের সহায়ক হতে পারে।
রাত এগারোটা বেজে পঁয়তাল্লিশ। বরিশালের বাড়িতে টেবিল ল্যাম্পের নিচে ল্যাপটপ, পাশে ঠান্ডা হয়ে যাওয়া চায়ের কাপ। স্ক্রিনে দুটি ফাইল খোলা। একটায় কাঁচা ম্যাচ ডেটা — পাসের হিসাব, শটের অবস্থান, ডিফেন্সিভ অ্যাকশনের লগ। আরেকটায় আমার নিজের বানানো এক্সট্র্যাকশন টেমপ্লেট, যা ২০১৭ সাল থেকে আমি প্যাচের পর প্যাচ করেছি। দুটি ফাইলই খালি নয়। কিন্তু মাঝখানের যে সেতুটা থাকার কথা, সেটা ফাঁকা।
পাইপলাইনের অপর প্রান্ত থেকে ফিরে এলো একটি পেলোড। তার প্রতিটি ঘরে একই বাক্য বসানো — শিরোনাম নেই, সূত্র নেই, তথ্যবিন্দু দেওয়া হয়নি। একটি সিস্টেম যখন সৎভাবে ব্যর্থ হয়, তখন সে মিথ্যা উত্তর দেয় না; সে শূন্যতা ফেরত দেয়। আজকের লেখা সেই শূন্যতা নিয়ে। ফুটবল ডেটা সাংবাদিকতায় সবচেয়ে দামি দক্ষতা মডেল বানানো নয় — কোন মুহূর্তে মডেল চুপ করে গেছে, সেটি চিনতে পারা।
প্রসঙ্গ: দুই ঘরের মাঝে একটা দরজা
আমার কাজের ধরন সরল। প্রথমে কাঁচা রিপোর্ট বা ম্যাচ টেক্সট থেকে তথ্যবিন্দু টেনে আনা — কোন ম্যাচ, কোন মিনিট, কোন সংখ্যা, কার দাবি। এটাকে বলি স্টেজ-১। তারপর সেই বিন্দুগুলোর ওপর বিশ্লেষণের কাঠামো দাঁড় করানো — ট্যাকটিক, ট্রান্সফার, খেলোয়াড়ের লোড, নিয়মনীতি, জনমতের চক্র। এটাই স্টেজ-২। দুই ধাপের এই বিচ্ছেদ আমি শখে করিনি।
২০১৭ সালে বরিশাল থেকে ঢাকার ফুটবলল্যাব বিডি-তে জুনিয়র ডেটা সাংবাদিক হিসেবে যোগ দেওয়ার পর প্রথম বড় ধাক্কাটা খেয়েছিলাম বাংলাদেশ বনাম আফগানিস্তানের এএফসি এশিয়ান কাপ বাছাইপর্বের ম্যাচটায়। সেদিনের শিটে বাংলাদেশের ১৪টি শট ছিল, মোট xG ছিল ০.৮৭; আফগানিস্তানের xG ছিল ১.১২। অথচ গোলটি এলো ০.০৮ xG-এর একটি চ্যান্স থেকে। সংখ্যাটা পরিষ্কার ছিল; ম্যাচটা পরিষ্কার হতে রাজি হয়নি।
সেই রাত থেকে অনিশ্চয়তার ব্যান্ড আমার লেখার অংশ হয়ে গেল। একক সংখ্যা নয়, রেঞ্জ। তিন সপ্তাহ ধরে কোডিং আবার করলাম, পুনরাবৃত্তিযোগ্য একটি টেমপ্লেট দাঁড় করালাম। স্টেজ-১ আর স্টেজ-২-এর বিচ্ছেদটাও ওই সময়ের সিদ্ধান্ত। যদি নিষ্কাশন আর বিশ্লেষণ একই ঘরে বসে থাকে, ভুল কোথায় ঢুকল সেটা আর ধরা যায় না।
আজ যে খালি পেলোডটি সামনে এলো, সেটি আসলে ওই বিচ্ছেদেরই ফল। স্টেজ-১ ফাঁকা ফিরে এসেছে, তাই স্টেজ-২ তার নয়টি ঘর সৎভাবে ফাঁকা রেখেছে। একটি সিস্টেম যদি ফাঁকা ইনপুট পেয়ে সুন্দর বিশ্লেষণ বানিয়ে ফেলে, সেটা সিস্টেম নয় — গল্প বলার মেশিন।
মূল বিশ্লেষণ: শূন্য পেলোড পড়ার তিনটি স্তর
প্রথম স্তরটা পরিভাষার। ফাঁকা মানে তথ্য নেই, এমন নয়। ফাঁকা মানে মাপা হয়নি। এই দুটোর মধ্যে আকাশ-পাতাল পার্থক্য। একটি ম্যাচে যদি কোনো এক্সট্র্যাকশন না চালানো হয়, ফলাফল হবে শূন্য তথ্যবিন্দু; কিন্তু ম্যাচটা তো হয়েছেই। দর্শক ছিল, পাস হয়েছে, গোল হয়েছে। শুধু আমার যন্ত্র সেদিকে তাকায়নি। পরিমাপ না থাকা আর ঘটনা না থাকা — ডেটা সাংবাদিকতার প্রথম পাঠ এটাই।

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