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

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

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