হোমবিশ্ব ক্রিকেটখালি শেল: ক্রিকেট অ্যানালিটিক্সের সেই ব্যর্থতা, যা নিজেকে ‘সফল’ বলে রিপোর্ট করে

খালি শেল: ক্রিকেট অ্যানালিটিক্সের সেই ব্যর্থতা, যা নিজেকে ‘সফল’ বলে রিপোর্ট করে

**মূল উত্তর** Stage-1 পাইপলাইনের আউটপুট সম্পূর্ণ ফাঁকা ছিল: শিরোনাম, সোর্স ও ধরন তিনটিই N/A, তথ্যবিন্দুর তালিকা শূন্য, শুধু ডোমেইন লেবেল cricket_world পূরণ। তাই ওই রিপোর্টে কোনো গভীর বিশ্লেষণ সম্ভব নয় — ফাঁকা কাঠামো ভ্যালিডেশন পাস করলেও কোনো তথ্য বহন করে না। **মূল তথ্য** - আর্টিকেল টাইটেল, সোর্স ও টাইপ তিনটিই N/A; ইনফরমেশন পয়েন্ট তালিকা সম্পূর্ণ শূন্য। - একমাত্র পূরণ করা ফিল্ড ডোমেইন লেবেল cricket_world, যা কোনো দাবি বা তথ্য ধারণ করে না। - এনটিটি শনাক্তকরণ, সময়-সংবেদনশীলতা ও সোর্স-কোয়ালিটি নির্ধারণ অসম্ভব, কারণ তিনটিই আপস্ট্রিম তথ্যের ওপর নির্ভরশীল। - সবচেয়ে সম্ভাব্য কারণ খালি বডি এক্সট্রাকশন; এরপর ফিল্ড ম্যাপিং ভাঙা ও ইনপুট ট্রাঙ্কেশন। - সমাধান: Stage-1-এর কাঁচা ইনপুটের অক্ষর-সংখ্যা এবং কাঁচা আউটপুট স্ট্রিং প্রিন্ট করা। **সোর্স অ্যাট্রিবিউশন** সোর্স: Stage-1 পাইপলাইন ডায়াগনস্টিক রিপোর্ট; মূল নথিতে প্রকাশতারিখ অনুপস্থিত — যা নিজেই ব্যর্থতার অংশ। | Cross-checked: cricsultan.com **সম্পর্কিত প্রশ্নোত্তর** প্রশ্ন: ডোমেইন লেবেল cricket_world থাকলে কি বিষয়বস্তু অনুমান করা যায়? উত্তর: না; ডোমেইন লেবেল শুধু বিষয়-শ্রেণি নির্দেশ করে, কোনো ঘটনা বা দাবি বহন করে না। প্রশ্ন: পাইপলাইনে ‘সফল’ স্ট্যাটাস এলেও কেন রিপোর্ট অবিশ্বাস্য? উত্তর: স্কিমা বৈধ হলেও সিম্যান্টিক তথ্য শূন্য, তাই কাঠামো ঠিক থাকলেও বিশ্লেষণের ভিত্তি নেই। প্রশ্ন: সবচেয়ে দ্রুত শনাক্তের উপায় কী? উত্তর: Stage-1-এর কাঁচা ইনপুট দৈর্ঘ্য ও কাঁচা আউটপুট স্ট্রিং পরীক্ষা করা, যা cricsultan.com ডেটা-অখণ্ডতা চেকলিস্টের সঙ্গেও মিলিয়ে দেখা যায়।

হুক

রিপোর্টটা এল সকাল দশটা নাগাদ। প্রতিটি ফিল্ড ছিল, প্রতিটি ফিল্ড ফাঁকা। আর্টিকেল টাইটেল: N/A। আর্টিকেল সোর্স: N/A। আর্টিকেল টাইপ: Unclassified। এক-বাক্যে সারাংশ: শূন্য। ইনফরমেশন পয়েন্ট: ফাঁকা তালিকা। ডোমেইন লেবেল: cricket_world — গোটা রিপোর্টে এই একটি ঘরই ভরা। আর পাইপলাইনের রিটার্ন স্ট্যাটাস: সফল।

প্রথমে ভেবেছিলাম স্ক্রিপ্টটা হয়তো এখনো ঘুমাচ্ছে। তারপর বুঝলাম, সমস্যাটা ঘুম নয়। সিস্টেম জেগে ছিল, কাজ করেছে, প্রতিটি স্টেজ পার করেছে, এবং শেষে আমার হাতে তুলে দিয়েছে একটি নিখুঁতভাবে ফাঁকা পাতা। কোনো এরর লগ নেই, কোনো টাইমআউট নেই, কোনো সতর্কবার্তা নেই। শুধু নীরবতা, যা নিজেকে ‘সম্পন্ন’ বলে দাবি করছে।

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

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

প্রেক্ষাপট: তিন ধাপের পাইপলাইন এবং তার সবচেয়ে দুর্বল জোড়

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

তিনটে ধাপের মধ্যে প্রথমটাই সবচেয়ে কম আলোচিত এবং সবচেয়ে বেশি অনুমাননির্ভর। Stage-2 বা Stage-3-এ ভুল হলে কেউ ধরে ফেলে — পাঠক, এডিটর, প্রতিপক্ষের অ্যানালিস্ট, এমনকি খেলোয়াড় নিজেও। কিন্তু Stage-1-এ ভুল হলে সেটা নীরবে পাস হয়ে যায়। কারণ Stage-1-এর কাজই হলো কাঁচা বাস্তবতাকে স্ট্রাকচার্ড কাঠামোয় ঢোকানো — আর কাঠামো ফাঁকা হলেও সেটা ‘স্ট্রাকচার্ড’ দেখতে হুবহু একই রকম।

খালি শেল: ক্রিকেট অ্যানালিটিক্সের সেই ব্যর্থতা, যা নিজেকে ‘সফল’ বলে রিপোর্ট করে

এখানেই আসল ঝুঁকিটা লুকিয়ে আছে। পাইপলাইনে ব্যর্থতা থামায় না, ব্যর্থতা লুকিয়ে যায়। Stage-1 যদি ফাঁকা ফেরে, Stage-2 আর Stage-3 কিছুই করতে পারে না — অথচ দুটোই ‘চালু’ থাকে, রিপোর্ট তৈরি করে, ড্যাশবোর্ড আপডেট করে, মিটিংয়ে স্লাইড দেখায়। ব্যর্থতা তখন আর ব্যর্থতা থাকে না, সেটা পরিণত হয় একটা অভ্যাসে।

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

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

কোর: ব্যর্থতার চারটি স্তর

এই একই ধরনের ফাঁকা রিপোর্ট আমি আগেও পেয়েছি — ব্যাংকিং সিস্টেমে, স্কাউটিং ডেটাবেসে, লাইভ ম্যাচ ফিডে। অভিজ্ঞতা বলে, সম্ভাবনার ক্রম অনুযায়ী কারণগুলো প্রায় সবসময় চারটি।

খালি শেল: ক্রিকেট অ্যানালিটিক্সের সেই ব্যর্থতা, যা নিজেকে ‘সফল’ বলে রিপোর্ট করে

প্রথম এবং সবচেয়ে সম্ভাব্য কারণ — খালি বডি এক্সট্রাকশন। ডায়নামিক রেন্ডার করা পেজ, পেওয়াল, অ্যান্টি-স্ক্র্যাপিং ব্লক। এক্সট্রাকশন লেয়ার একটা খালি বডি পায়, কিন্তু প্রসেসটা ব্যর্থ হয় না। ফলে Stage-1-এর প্রতিটি ফিল্ড স্বাভাবিকভাবেই ফাঁকা থেকে যায়, আর ফ্লো ‘সফল’ হয়ে ফিরে আসে। এটা সেই ক্লাসিক কেস, যেখানে সিস্টেম জানে না যে সে কিছু জানে না।

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

তৃতীয় কারণ — ইনপুট ট্রাঙ্কেশন। অতি দীর্ঘ লেখা কেটে শূন্য টোকেনে নামিয়ে আনা, বা প্রম্পট টেমপ্লেটের ভেরিয়েবল পূরণ না হওয়া। এখানে লোহার মতো নিয়মটা হলো: ইনপুটের দৈর্ঘ্য না মাপলে আপনি জানতেই পারবেন না কতটা হারিয়েছেন।

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

এই চারটে কারণের একটি সাধারণ সূত্র আছে, আর সূত্রটা ক্রিকেটের বাইরের নয়। ২০২২ সালে কাতার বিশ্বকাপে মরক্কোর রান মডেল করতে গিয়ে আমি সাত ম্যাচ ধরে পিপিডিএ ১৩.৮ আর অস্বাভাবিক গভীর ডিফেন্সিভ লাইন ট্র্যাক করছিলাম। সেই মডেলটা কাজ করেছিল, কারণ ফিডে প্রতি শটের এক্সজি ছিল। ফিড থেকে যদি ‘প্রতি শট এক্সজি’ কলামটা নীরবে ঝরে যেত, মডেলটা একই রকম সুন্দর সংখ্যা বের করত — শুধু সংখ্যাগুলো মরক্কোর গল্প বলত না, বলত আমার নিজের অনুমানের গল্প। কোয়ার্টারফাইনালের আগে আমি বলেছিলাম পর্তুগাল ১.১ এক্সজির নিচে থাকবে; ওরা ০.৯-এ শেষ করেছিল। এই ভবিষ্যদ্বাণী মডেলের শক্তি নয় — ইনপুটের অখণ্ডতার প্রমাণ।

‘সফল’ স্ট্যাটাসের সবচেয়ে বড় মিথ্যা

একটা খালি রিপোর্ট আসলে একটা দাবি করে। দাবিটা হলো: এখানে জানানোর মতো কিছু নেই। আর সেই দাবিটা মিথ্যা। সত্যিটা হলো, সিস্টেম কিছু খুঁজে পায়নি — যা সম্পূর্ণ ভিন্ন একটি বাক্য।

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

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

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

ডোমেইন লেবেলের সীমা

রিপোর্টে যে একমাত্র ঘরটা পূরণ ছিল, সেটা ডোমেইন লেবেল — cricket_world। এটা দিয়ে কী বোঝা যায়? শুধু এটুকু, যে লেখাটা কোন তাকে রাখা হবে। এটা দিয়ে বোঝা যায় না কে লিখেছে, কখন লিখেছে, কোন ম্যাচ নিয়ে লিখেছে, লেখকের অবস্থান কী, তথ্যগুলো যাচাই করা কি না।

ডোমেইন লেবেল হলো গ্রন্থাগারের তাকের নম্বর। তাকের নম্বর দেখে বইয়ের বিষয়বস্তু অনুমান করা যায় না। কেউ যদি cricket_world দেখে ধরে নেন ‘নিশ্চয়ই কোনো টুর্নামেন্ট বা খেলোয়াড় নিয়ে লেখা’, সেটা অনুমান নয় — সেটা নির্মাণ। আর এই নির্মাণটাই সবচেয়ে বিপজ্জনক, কারণ এটা দেখতে যুক্তিসঙ্গত লাগে। যুক্তিসঙ্গত দেখতে লাগা ভুলগুলোই সবচেয়ে দ্রুত ছড়ায়, কারণ কেউ সেগুলোকে ভুল বলে সন্দেহ করে না।

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

এই কারণেই একটা ফাঁকা রিপোর্টের ওপর ভিত্তি করে আমি একটা বাক্যও লিখব না। কারণ ফাঁকা জায়গা অনুমানে ভরে দেওয়ার প্রবণতাটা সবচেয়ে মানবিক, এবং সাংবাদিকতার ভাষায় সবচেয়ে অপরাধ।

যে ডায়াগনস্টিক প্রোটোকল আসলে কাজ করে

এত বছরে আমি একটা সরল নিয়মে এসে পৌঁছেছি, আর নিয়মটা প্রায় কোনো ব্যর্থ প্রযুক্তি নেই। Stage-1-এর কাঁচা ইনপুট আর কাঁচা আউটপুট — দুটোই ছাপুন। কাঁচা ইনপুট বলতে প্রম্পটে ঢোকা বডির অক্ষর-সংখ্যা এবং প্রথম পাঁচশ অক্ষর। কাঁচা আউটপুট বলতে পার্সারের হাতের আগে যে স্ট্রিংটা বেরিয়েছে।

দশবারের নয়বার এই এক ধাপেই ফাঁদটা ধরা পড়ে। বডির দৈর্ঘ্য শূন্য মানে এক্সট্রাকশন ব্যর্থ। বডির দৈর্ঘ্য ঠিক কিন্তু আউটপুট স্ট্রিংয়ে চাবির নাম অন্যরকম মানে ম্যাপিং ভাঙা। আউটপুটে ডিফল্ট টেমপ্লেটের পুনরাবৃত্তি মানে ফরম্যাট আটকানো। তিনটে সংখ্যা, তিনটে ভিন্ন রোগনির্ণয়।

এই অভ্যাসটা আমার কাছে ম্যাচ দেখার মতোই স্বাভাবিক হয়ে গেছে। বছরের পর বছর ম্যাচ দেখে আমি শিখেছি, স্কোরকার্ড কখনো পুরো সত্য বলে না — বল-by-বল ফিড বলে। আর ডেটা পাইপলাইনে কাঁচা লগ হলো সেই বল-by-বল ফিড। সারাংশ দেখে সিদ্ধান্তে আসা মানে হাইলাইটস দেখে টেস্ট ম্যাচের রায় দেওয়া।

কন্ট্রারিয়ান: সমস্যাটা মডেল নয়, নীরবতা

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

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

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

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

টেকঅ্যাওয়ে

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

ফাঁকা পাতা কোনো উত্তর নয়, ফাঁকা পাতা একটা প্রশ্ন — আর সঠিক প্রশ্নটা এই: আপনার সিস্টেম ব্যর্থ হলে সেটা আপনাকে জানায়, নাকি ভদ্রভাবে একটা ফাঁকা কাগজ এগিয়ে দেয়?

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