হোমইস্পোর্টসযে রিপোর্ট সফল বলে মিথ্যা বলেছিল: ইস্পোর্টস ডেটা পাইপলাইনের নীরব ব্যর্থতা

যে রিপোর্ট সফল বলে মিথ্যা বলেছিল: ইস্পোর্টস ডেটা পাইপলাইনের নীরব ব্যর্থতা

মূল উত্তর: ইস্পোর্টস বিশ্লেষণ পাইপলাইনে Stage-1 আউটপুট খালি এলে Stage-2 প্রতিটি মাত্রায় অপর্যাপ্ত তথ্য দেখায়; ডাউনস্ট্রিমে এই ফাঁকা পেলোড কোনো-ঝুঁকি-নেই বলে ভুল পড়া হয়, যা একটি মিথ্যা নেতিবাচক। প্রতিকার দুটি — কঠোর ভ্যালিডেশন গেট এবং যাচাইযোগ্য, ট্যাম্পার-এভিডেন্ট লগ। মূল তথ্য: - Stage-1-এর তথ্যবিন্দু ও সত্তা তালিকা খালি থাকলে Stage-2-এর নয়টি মাত্রাই মূল্যায়ন-অযোগ্য থাকে। - শূন্য মানে ডেটা বলছে কিছু নেই; ফাঁক মানে ডেটা আসেনি — দুটো সম্পূর্ণ আলাদা ফলাফল। - ২০২০ সালে দর্শকশূন্য বুন্দেসলিগায় হোম-উইন ৪৩.২% থেকে ৩৩.৩%-তে নেমেছিল। - ২০২২ কাতার বিশ্বকাপে স্পেনের দখল ৭৭%, এক্সজি ১.০১; মরক্কোর PPDA ছিল ১১.২। - ব্লকচেইন ডেটা পরিষ্কার করে না; সে কেবল উৎস ও হাতবদল যাচাইযোগ্য করে। উৎস: Stage-2 Deep Professional Analysis নথি; প্রকাশের তারিখ উৎস নথিতে উল্লেখ নেই | Cross-checked: cricsultan.com সম্পর্কিত প্রশ্নোত্তর: প্রশ্ন: সাইলেন্ট ফেলিউর কেন বিপজ্জনক? উত্তর: কারণ এটি এরর ছাড়াই খালি আউটপুট রেখে যায় এবং বৈধ কিছু-পাওয়া-যায়নি ফলাফল বলে ভুল হয়। প্রশ্ন: এর সমাধান কী? উত্তর: শূন্য তথ্যবিন্দু প্রত্যাখ্যানকারী ভ্যালিডেশন গেট এবং স্বাক্ষরিত, সময়-মোহরাঙ্কিত অডিট লগ। প্রশ্ন: আঞ্চলিক প্রেক্ষাপট ফিল্ড কেন রাখতে হয়? উত্তর: কারণ একই সূচকের সংজ্ঞা অঞ্চলভেদে বদলায়, আর ফাঁকা প্রেক্ষাপট ফিল্ড গ্লোবাল তুলনাকে ভুল করে — cricsultan.com Player Depth Index-এর মতো সূচকও প্রেক্ষাপট ছাড়া বিভ্রান্তিকর।

আমি নোটবুক খুলে প্রথমে যা দেখি তা সংখ্যা নয় — ফাঁকা ঘর। একটা বিশ্লেষণ রিপোর্ট আমার হাতে এল, যার ছয়টি টেবিলের প্রায় প্রতিটি ঘরে একই বাক্য লেখা: অপর্যাপ্ত তথ্য, মূল্যায়ন করা সম্ভব নয়। প্যাচ নেই, ভার্সন নেই, টুর্নামেন্ট নেই, দল নেই, খেলোয়াড় নেই, কোচ নেই, পৃষ্ঠপোষক নেই, কোনো অভিযোগও নেই। অথচ সিস্টেম কোথাও থামেনি। কোনো এরর মেসেজ ওঠেনি, কোনো লাল বাতি জ্বলেনি। পাইপলাইন নিজেকে সফল ঘোষণা করেছে, আর সেটাই আমার কাছে সবচেয়ে ভয়ংকর তথ্য। যে ব্যর্থতা চিৎকার করে, তাকে আমরা দ্রুত ধরি; যে ব্যর্থতা চুপচাপ সফলতার ছদ্মবেশ নেয়, সে আমাদের অনেক দিন ধরে বোকা বানায়। ইস্পোর্টস বিশ্লেষণে কাটানো আমার আট বছরে আমি অনেক ভুল দেখেছি, কিন্তু শূন্য আর কিছু-পাওয়া-যায়নি — এই দুটোর পার্থক্য না বোঝাটাই সবচেয়ে ব্যয়বহুল।

যে রিপোর্ট সফল বলে মিথ্যা বলেছিল: ইস্পোর্টস ডেটা পাইপলাইনের নীরব ব্যর্থতা

ঘটনাটা পরীক্ষাগারের, মাঠের নয়। ইস্পোর্টস বিশ্লেষণে আমরা সাধারণত দুই ধাপের পাইপলাইন চালাই। প্রথম ধাপ সোর্স নিবন্ধ থেকে কাঁচা তথ্য ভেঙে বের করে — তথ্যবিন্দু, মূল দৃষ্টিভঙ্গি, সংশ্লিষ্ট সত্তা। দ্বিতীয় ধাপ সেই কাঠামোর উপর গভীর বিশ্লেষণের কাঠামো বসায়: প্যাচ ও মেটা, টুর্নামেন্ট ফরম্যাট, দল ও খেলোয়াড়, আঞ্চলিক চিত্র, ক্লাব-অর্থনীতি, নিয়ম-শাসন, ঝুঁকি, জন-আখ্যান, আর শিল্পের সংক্রমণ। দুটো ধাপের মাঝে একটা চুক্তি থাকে — প্রথম ধাপ অন্তত একটা সত্তা আর তিন থেকে পাঁচটা তথ্যবিন্দু দেবে, তবেই দ্বিতীয় ধাপ শুরু হবে। এই চুক্তি ভাঙলে যা হয়, সেটাই এখানে ঘটেছে।

যে রিপোর্ট সফল বলে মিথ্যা বলেছিল: ইস্পোর্টস ডেটা পাইপলাইনের নীরব ব্যর্থতা

ইস্পোর্টসে এই কাঠামো কেন এত জরুরি? কারণ এখানে একটাই খেলা নেই। লিগ অফ লিজেন্ডস, ডোটা ২, সিএস২, ভ্যালোরান্ট, অনার অব কিংস — প্রত্যেকটার পরিসংখ্যান-যুক্তি আলাদা। মোবা-তে চ্যাম্পিয়ন পুল আর উইন-রেট, এফপিএস-এ অস্ত্র-অর্থনীতি আর রাউন্ড-সুইং, ব্যাটল রয়্যালে ম্যাপ-জোন আর সারভাইভাল টাইম। তার উপর প্রতি সপ্তাহে প্যাচ, প্রতি টুর্নামেন্টে সার্ভার ভার্সন আলাদা। ২০১৮ সালে রাশিয়া বিশ্বকাপে রিমোট ডেটা ইন্টার্ন হিসেবে আমি কিলিয়ান এমবাপ্পের ৩০ কিমি/ঘণ্টার উপরে সাতটি স্প্রিন্ট আর ফ্রান্সের PPDA ৮.৯ কোড করেছিলাম। সেখানেই শিখেছিলাম, টাইম-জোন কিউ আর সোর্স-হায়ারার্কি ছাড়া দূরবর্তী ইভেন্ট কভার করা যায় না — কোন সোর্স আগে, কোনটা পরে, আর কোনটা যাচাই ছাড়া ব্যবহার করা যাবে না। নোটবুক কখনো মিথ্যা বলে না, কিন্তু সে শুধু সেই প্রশ্নের উত্তর দেয় যা তুমি করো।

মূল সমস্যাটা এখানেই। একটি ফাঁকা পেলোড আর একটি কোনো-ঝুঁকি-পাওয়া-যায়নি রিপোর্ট — ডাউনস্ট্রিমে দেখতে হুবহু এক। এডিটর হোক, সিদ্ধান্ত-গ্রহণকারী হোক, বা স্বয়ংক্রিয় কোনো সিস্টেম — কেউ যদি সতর্কবার্তার হেডার না পড়ে, সে ধরে নেবে বিশ্লেষক ঝুঁকি খুঁজে পাননি। অথচ সত্যিটা উল্টো: ঝুঁকি খোঁজার মতো কোনো বস্তুই ছিল না। ডেটা-বিজ্ঞানে এই ভুলের একটা নাম আছে — মিথ্যা নেতিবাচক। শূন্য মানে ডেটা বলছে কিছু নেই; ফাঁক মানে ডেটাই আসেনি। এই দুটো গুলিয়ে ফেললে একটা দল ভুল ইনজুরি অল-ক্লিয়ার পায়, একটা বুকমেকার ভুল লাইন বানায়, একটা সম্প্রচারক ভুল গল্প বলে।

কাঠামোটা কাগজে নয়টা মাত্রার, কিন্তু বাস্তবে সেই রিপোর্টে প্রায় প্রতিটি ঘর ফাঁকা ছিল, শুধু একটা সারি ছাড়া — বিশ্লেষণী ও প্রক্রিয়া ঝুঁকি, যেখানে লেখা ছিল: প্রথম ধাপের হাতবদল ব্যর্থ, কোনো বিশ্লেষণযোগ্য বিষয়বস্তু আসেনি। এটাই লুকানো সংকেত: যখন বিষয়ভিত্তিক প্রতিটি ঝুঁকি অজানা দেখায়, তখন সবচেয়ে বড় ঝুঁকিটা প্রক্রিয়ার ভেতরে। ক্লাবের বেতন বকেয়া, পৃষ্ঠপোষক প্রত্যাহার, স্লটের মূল্যহ্রাস — এই ঝুঁকিগুলো স্ক্রিন করতে অন্তত একটা নাম-ধারী ক্লাব দরকার, যা ছিল না। তাই প্রতিটি ঘর অজানা রয়ে গেল, আর অজানা মানে নিরাপদ নয়।

২০২০ সালে আমি দর্শকশূন্য বুন্দেসলিগার ম্যাচ বিশ্লেষণ করেছিলাম। হোম-উইন শতাংশ ৪৩.২ থেকে ৩৩.৩-তে নেমেছিল, আর আমার মডেল দেখিয়েছিল ভিড় না থাকলে রেফারির পক্ষপাত কমে। ধরা যাক সেই ডেটাসেটের একটা ফিড চুপচাপ খালি এসেছিল — তাহলে সংখ্যাটা উল্টো দিকে যেত, আর আমি ভুল প্রবন্ধ লিখতাম। আক্রমণ-প্রতিরক্ষার চাপ মাপার সূচক, সেট-পিস এক্সজি — প্রত্যেকটা নির্ভর করে আগের স্তরের ফিড সত্যিই লোড হয়েছে কিনা তার উপর। ফুটবল সংস্কৃতি মানে চাপের দৃশ্যমান রূপ, আর চাপ সবসময় একটা ডেটা-ছায়া রেখে যায় — কিন্তু সেই ছায়া পড়ার আগে নিশ্চিত হতে হয়, আলোটা সত্যিই জ্বলছিল।

২০২২ কাতার বিশ্বকাপে মরক্কো-স্পেন ম্যাচটা এর সেরা উদাহরণ। স্পেনের দখল ৭৭ শতাংশ, এক্সজি মাত্র ১.০১; মরক্কোর PPDA ১১.২। পজেশন ফিড লোড হলে গল্পটা দাঁড়ায়, স্পেন রাজত্ব করল। কিন্তু এক্সজি ফিড যদি নীরবে ফেল করত, সেই একই ডেটা দিয়ে আমি ভুল উপসংহারে পৌঁছতাম — এবং মিক্সড জোনে কেউ আমাকে ধরতেও পারত না। তখন এক সাংবাদিক জিজ্ঞেস করেছিলেন আমি ফ্যাশনের জন্য এসেছি কিনা; উত্তর দিতে হয়েছিল মরক্কোর লো-ব্লক ডেটা দিয়ে। নম্বর দিয়ে উত্তর দেওয়ার শক্তি তখনই আসে, যখন জানা থাকে নম্বরটা কোথা থেকে এল।

সফটওয়্যার জগতে এটাকে বলে সাইলেন্ট ফেলিউর — এমন একটা প্রক্রিয়া যা এরর ছাড়াই থেমে যায়, কিন্তু খালি বা অবৈধ আউটপুট রেখে যায়। এটাই সবচেয়ে বিপজ্জনক শ্রেণির বাগ, কারণ এটা সহজেই একটা বৈধ কিছু-পাওয়া-যায়নি ফলাফল বলে ভুল হয়। ইস্পোর্টসে যেখানে প্রতি সপ্তাহে একটা প্যাচ পুরো মেটা উল্টে দেয়, সেখানে একটা সপ্তাহের নীরব ব্যর্থতা মানে এক সপ্তাহের ভুল সিদ্ধান্ত — আর সেই সিদ্ধান্ত নেয় রোস্টার, বাজেট আর ট্রেনিং শিডিউল। এই কারণেই বিষয়টা কেবল প্রযুক্তিগত নয়, প্রতিযোগিতামূলকও।

সমাধানটা বুদ্ধিমত্তার নয়, নকশার। প্রথমত, একটা কঠোর ভ্যালিডেশন গেট — শূন্য তথ্যবিন্দু নিয়ে কোনো প্রথম-ধাপের আউটপুট দ্বিতীয় ধাপে যেতে পারবে না, বরং সিস্টেম একটা স্পষ্ট পাইপলাইন অ্যালার্ট তুলবে। দ্বিতীয়ত, যাচাইযোগ্য লগ। এখানেই ব্লকচেইন-ধাঁচের চিন্তা কাজে লাগে, এবং কাজে লাগে নিছক ফ্যাশনের জন্য নয়। যদি পাইপলাইনের প্রতিটি ধাপ নিজের ইনপুট-আউটপুটের একটা স্বাক্ষরিত, সময়-মোহরাঙ্কিত রেকর্ড রেখে যায় — যা পরে বদলানো যায় না — তাহলে একটা ফাঁক আর একটা শূন্য আর কখনো এক দেখাবে না। ম্যাচ লগ, রোস্টার লেনদেন, প্যাচ ভার্সন — সব ভার্সনভুক্ত ও ট্যাম্পার-এভিডেন্ট হলে অডিট সম্ভব হয়। স্ট্যান্ডার্ডাইজেশন মানে সব আঞ্চলিক প্রেক্ষাপট মুছে ফেলা নয়; মানে প্রতিটি সংজ্ঞার একটা ভার্সন নম্বর থাকা, আর প্রতিটি দাবির পিছনে একটা ট্রেইল থাকা।

আরেকটা লক্ষণ এখানে চোখে পড়ার মতো: ডোমেইন লেবেল ঠিকই ইস্পোর্টস ছিল, অথচ টাইটেল আর সোর্স ফিল্ড হারিয়ে গেছে। মানে ইনজেশন স্তরে অন্তত খেলাটা শনাক্ত হয়েছিল — অর্থাৎ সোর্সটা কোনো এক সময়ে পাওয়া যাচ্ছিল। এটা আশার সংকেত, আর একইসাথে সতর্কবার্তা: হারানো তথ্য ফিরে আসতে পারে, কিন্তু কোন স্তরে হারাল সেটা না জানলে সেটা ফিরবেও না।

আমি ট্রান্সফার মার্কেটের মডেল নিয়ে অনেক লিখেছি, আর সেখানে একটা নিয়ম মেনে চলি: একটা ট্রান্সফার ফি একটা অনুমান; প্রথম হাজার মিনিট তার পিয়ার রিভিউ। ডেটা পাইপলাইনের ক্ষেত্রেও একই কথা। পেলোডটা অনুমান, যাচাইটা পিয়ার রিভিউ। যদি রিভিউয়ের প্রক্রিয়াটাই নীরবে বন্ধ হয়ে যায়, তাহলে অনুমানগুলো চিরকাল অনুমান হয়েই ঘুরতে থাকে, আর কেউ টের পায় না। ইস্পোর্টস শিল্প যত দ্রুত বাড়ছে, তত দ্রুতই এই ফাঁকা পেলোডগুলো সিদ্ধান্তে ঢুকে পড়ছে — স্পন্সরশিপ মূল্যায়ন, স্লট বিনিয়োগ, খেলোয়াড় রেটিং, দর্শক-সংখ্যা, সব জায়গায়।

তৃতীয় যে স্তরটা প্রায়ই অবহেলিত, সেটা আঞ্চলিক সংজ্ঞার পার্থক্য। আমি আমেরিকায় জন্মেছি, কাজ করছি অস্ট্রেলিয়ায়, আর বাংলাদেশের মোবাইল ইস্পোর্টস কভার করেছি — তিন জায়গার ডেটা-সংস্কৃতি আলাদা। একই উইন-রেট শব্দটা এক অঞ্চলে প্যাচ-ভিত্তিক পুল বোঝায়, আরেক অঞ্চলে ম্যাপ-ভিত্তিক। যদি পাইপলাইন আঞ্চলিক প্রেক্ষাপট ফিল্ড না রাখে, তাহলে গ্লোবাল তুলনা হয় অসম্ভব, নয়তো ভুল। আর একটা ফাঁকা আঞ্চলিক ফিল্ড কখনো নিরপেক্ষ নয় — সে আসলে একটা চাপা সিদ্ধান্ত, যে প্রেক্ষাপট গুরুত্বপূর্ণ নয়।

স্বাভাবিক প্রতিক্রিয়া হবে: তাহলে আরও ডেটা যোগ করো, আরও ফিড, আরও ড্যাশবোর্ড। আমি এটা বিশ্বাস করি না, অন্তত প্রথম সমাধান হিসেবে নয়। প্রতিটি নতুন ফিড সাইলেন্ট-ফেলিউরের নতুন একটা পৃষ্ঠতল যোগ করে। দশটা ফিডের একটা খালি এলে সেটা হয়তো চোখে পড়ে; তিনশো ফিডের একটা খালি এলে সেটা গড়ের ভেতরে লুকিয়ে যায়। আর ব্লকচেইন কোনো ডেটাকে পরিষ্কার করে না — নোংরা ডেটা ঢুকলে সেটা অপরিবর্তনীয় নোংরা ডেটা হিসেবে চিরকাল থেকে যায়। তাই প্রশ্নটা কত-বেশি-ডেটা নয়, প্রশ্নটা ডেটার উৎস আর হাতবদল কতটা যাচাইযোগ্য। আরেকটা সম্ভাবনা খোলাখুলি মানা দরকার: হয়তো দ্বিতীয় ধাপ কখনো ঠিকভাবে চালু হয়নি। যে দাবিটা সত্যিই প্রমাণযোগ্য, শুধু সেটাই সংশোধন করা উচিত — বাকিটা অনুমান।

সামনের পাইপলাইন রানে আমি একটাই সিগন্যাল দেখব: তথ্যবিন্দু ফিল্ডটা আবার খালি ফিরছে কিনা। দ্বিতীয়বার খালি ফিরলে সমস্যাটা আর একবারের দুর্ঘটনা নয়, সিস্টেমিক। আর এখানেই আসল প্রশ্নটা লুকিয়ে আছে: আমরা কি এমন একটা সিস্টেম বানাচ্ছি যা সত্য বলে, নাকি এমন একটা সিস্টেম যা কখনো ভুল বলে না — কারণ সে কিছুই বলে না?

সংশ্লিষ্ট খেলোয়াড়গণ