ফাঁকা ফাইলের হিসাব: Stage-1 ব্যর্থতা যখন ক্রিকেট বিশ্লেষণকে থামিয়ে দেয়
প্রশ্ন: Stage-2 ক্রিকেট বিশ্লেষণ শুরু করতে Stage-1 তথ্যবিন্দু না থাকলে কী করণীয়? উত্তর: ফাঁকা ইনপুটে কোনো ক্রিকেট বিশ্লেষণ তৈরি করা উচিত নয়; প্রথমে উৎস পুনঃনিষ্কাশন বা ম্যানুয়াল Stage-1 সম্পন্ন করতে হবে। কী-ফ্যাক্ট: (১) Information Points তালিকা খালি। (২) Core Viewpoints তালিকা খালি। (৩) Entities Involved চিহ্নিত করা অসম্ভব। (৪) ডোমেইন লেবেল cricket_world, প্রত্যাশিত Cricket। (৫) প্রাথমিক রোগনির্ণয়: পাইপলাইন ব্যর্থতা (উচ্চ আত্মবিশ্বাস)। উৎস: Stage-2 Deep Analysis (অদ্বিতীয়, প্রকাশের তারিখ নেই)। সম্পর্কিত প্রশ্ন: — Stage-1 কীভাবে পুনরায় চালু করা যায়? — উৎস আবার ফেচ/পার্স করে নতুন নিষ্কাশন চালান। — paywall/JS রেন্ডারিং সমস্যা কী সংকেত? — এটি সাধারণত বট-ব্লক পৃষ্ঠার ইঙ্গিত; বিকল্প ব্যবস্থা প্রয়োজন। — cricket_world লেবেল কেন ক্ষতিকর? — এটি ট্যাক্সোনমি ম্যাচিং ব্যাহত করে; ক্রিকেট ডেটা খুঁজতে সঠিক লেবেল 'Cricket' প্রয়োজন।
আজ সকালে বিশ্লেষণ ডেস্কে একটি ফাইল এল, নাম Stage-2 Deep Analysis। নাম শুনে মনে হলো কোনো বড় ম্যাচের প্রস্তুতি; কিন্তু ফাইল খুলতেই দেখা গেল সব ঘর ফাঁকা। Article Title: N/A। Article Source: N/A। Article Type: Unclassified। One-sentence Summary: (blank)। আমার ৩৮ বছরের সাংবাদিক জীবনে অনেক খালি স্কোরকার্ড দেখেছি, কিন্তু এমন খালি বিশ্লেষণ ফাইল প্রথম। The Khulna ledger did not lie: 132 matches, 2,847 shots, and one quiet conclusion — আমার নিজের সেই লেজার আজও বলে, প্রতিটি সিদ্ধান্তের পেছনে একটি সংখ্যা থাকতে হয়। এই ফাইলে একটি সংখ্যাও নেই; আছে শুধু কাঠামো, আর সেই কাঠামোই আমার কাছে আজকের সবচেয়ে বড় ক্রিকেট সংবাদ।
প্রসঙ্গ: দুই স্তরের পাইপলাইন। Stage-1 একটি প্রতিবেদন পড়ে সেখান থেকে তথ্য আহরণ করে: শিরোনাম, উৎস, ধরন, মূল তথ্যবিন্দু, মূল মতামত, সংশ্লিষ্ট সত্তা। Stage-2 সেই তথ্য ৮টি মাত্রায় প্রসারিত করে: ফরম্যাট প্রসঙ্গ, খেলোয়াড় মেট্রিক, র্যাংকিং, বাণিজ্যিক কাঠামো, গভর্নেন্স, ঝুঁকি, আখ্যান এবং শিল্প-প্রচলন। প্রতিটি মাত্রা Stage-1-এর information points-এর ওপর নির্ভরশীল। কোনো তথ্যবিন্দু না থাকলে Stage-2 শুধু একটি ফাঁকা টেমপ্লেট, একটি মতামতের কঙ্কাল, কোনো প্রতিবেদন নয়।

২০১৭ সালে খুলনা প্রেস গ্যালারির বুথে আমি ১৩২টি ম্যাচের ২,৮৪৭টি শট হাতে গোনা শুরু করি। তখন আমার কাছে কোনো ডিজিটাল ডেটাবেস ছিল না; তথ্য ছিল মাঠে, স্কোরকার্ডে, আম্পায়ারের সংকেতে। সেই তথ্যবিন্দুগুলোই পরে একটি xG টেবিল হয়ে ওঠে, যা আবাহনী লিমিটেড ঢাকার শিরোপা যাত্রাকে দেখিয়েছিল ১.৪৪ xG প্রতি ম্যাচে এবং ০.৮১ conceded হিসেবে। আজকের অটোমেশনেও নীতিটি একই: তথ্যবিন্দু ছাড়া বিশ্লেষণ একটি মতামত মাত্র।

এবার সেই ফাইলের ভেতরে গভীরে যাওয়া যাক। Input Integrity Assessment নামের একটি গেট দেওয়া হয়েছে। গেটের কাজ সহজ: Stage-1-এর আউটপুট যদি ব্যবহারযোগ্য না হয়, তাহলে Stage-2 শুরুই হবে না। টেবিলের প্রতিটি সারি পরীক্ষা করলে দেখা যায়: Article Title N/A, Article Source N/A, Article Type Unclassified, Author Stance N/A, Article Purpose N/A, Information Points empty list, Core Viewpoints empty list, Entities Involved খালি, Time Sensitivity not assessed, Source Quality বিচার করা যায় না, Domain Label cricket_world। শুধু একটি ক্ষেত্র সঠিকভাবে ভরা ছিল: Domain Label cricket_world। কিন্তু সেটিও স্কিমা-প্রত্যাশিত Cricket-এর বদলে। অর্থাৎ গেটটি আক্ষরিক অর্থে একটি অপব্যবহারযোগ্য ইনপুট পেয়েছে।
সবচেয়ে গুরুত্বপূর্ণ ক্ষেত্রটি হলো Information Points। ফাইলের নিজের ভাষায়, এটিই load-bearing field। এই একটি ক্ষেত্র খালি হওয়ার অর্থ হলো পুরো বিশ্লেষণ কাঠামো দাঁড়াতে পারে না। Diagnostic conclusion স্পষ্ট: zero information points এবং zero entities-এর ভিত্তিতে কোনো substantive cricket analysis তৈরি করা fabrication ছাড়া সম্ভব নয়। আমি ৩৮ বছর ধরে যে নিয়ম মেনে চলেছি, এখানেও সেই একই নিয়ম: কোনো সংখ্যা ছাড়া কোনো গল্প নয়।
ফাইলটি নিজেই সবচেয়ে সম্ভাব্য কারণটি চিহ্নিত করেছে। Most probable cause: pipeline failure, এবং Confidence: High। অর্থাৎ Stage-1-এর ফেচ, পার্স, বা এক্সট্র্যাকশন ধাপে কোথাও ত্রুটি ঘটেছে। এটি একটি নিবন্ধের শিরোনাম বা উৎস ছাড়া খালি স্কেলিটন রেখে গেছে — ঠিক যেমন একজন ক্রিকেটার যদি ব্যাটিং অর্ডারে নাম লেখায় কিন্তু মাঠে না আসে। Secondary possibility হলো আর্টিকেলটি paywall, JavaScript-rendered, বা bot-block পেজ। কিন্তু সেক্ষেত্রে সাধারণত একটি শিরোনাম বা URL অন্তত পাওয়া যায়। এখানে শিরোনামও নেই, উৎসও নেই, তাই পাইপলাইন ব্যর্থতার সম্ভাবনাই বেশি।
এই ফাইল আমার কাছে একটি মূল্যবান ডেটা পয়েন্ট। কারণ এটি প্রমাণ করে যে একটি গুণমান-নিয়ন্ত্রণ গেট কতটা শক্তিশালী হতে পারে। অনেক নিউজরুমে AI-চালিত বিশ্লেষণ খালি ইনপুট দেখেও একটি মসৃণ গল্প বানিয়ে ফেলে। সেখানে শিরোনাম থাকে, মতামত থাকে, কিন্তু ভিত্তি থাকে না। এই ফাইলটি fabrication করেনি; এটি থেমে গেছে, এবং সেই থেমে যাওয়াই সঠিক সিদ্ধান্ত।
আটটি মাত্রা ভেঙে দেখা যাক। ফরম্যাট প্রসঙ্গ: এটি কি টেস্ট, ওয়ানডে, নাকি টি-টোয়েন্টি? না জানলে কোন মাপকাঠি প্রযোজ্য হবে, কোন বল-বাই-বল কৌশল গুরুত্বপূর্ণ, তা বোঝা যায় না। খেলোয়াড় মেট্রিক: রান, উইকেট, স্ট্রাইক রেট, ইকোনমি — একটিও নেই। র্যাংকিং: আইসিসি পয়েন্ট, টেবিল অবস্থান — সব অনুপস্থিত। বাণিজ্যিক কাঠামো: ফ্র্যাঞ্চাইজি মূল্য, সম্প্রচার চুক্তি, স্পনসরশিপ — কিছুই নেই। গভর্নেন্স: আম্পায়ার সিদ্ধান্ত, ডিআরএস, ম্যাচ রেফারি — উল্লেখ নেই। ঝুঁকি: ইনজুরি, ফিক্সিং, শিডিউল চাপ — কোনো তথ্য নেই। আখ্যান: ঐতিহাসিক প্রতিদ্বন্দ্বিতা, ভেন্যু কন্ডিশন, দলীয় মনস্তত্ত্ব — বর্ণনাহীন। শিল্প-প্রচলন: কোন লিগ কোন দিকে যাচ্ছে, কোন ট্রান্সফার মডেল বদলাচ্ছে — সব অন্ধকার। প্রতিটি মাত্রা একটি স্তম্ভ; ভিত্তি না থাকলে স্তম্ভগুলো কেবল বাতাসে দোল খায়।
ডেটা সাংবাদিকতায় আমার একটি পুরনো নিয়ম আছে: Root: Data Monk archetype and football domain — যেকোনো ডোমেইনে সংখ্যা আগে, গল্প পরে। ক্রিকেট হোক বা ফুটবল, একটি ম্যাচ রিপোর্টের আগে শট-ম্যাপ দরকার। আমি যখন রাশিয়া ২০১৮-এর আগে ১,২৪০টি আন্তর্জাতিক ম্যাচের ভিত্তিতে টায়ার লিস্ট তৈরি করি, তখনও সেই নিয়মই ছিল। Croatia-কে চতুর্থ স্থানে রাখা হয়েছিল chance-quality differential-এর ভিত্তিতে: ১.৩১ xG created per 90, ০.৭৮ conceded। পাঠকরা টাইপো বলেছিলেন। Croatia ফাইনালে উঠেছিল। পরে আমি একটি error log প্রকাশ করেছিলাম, যেখানে দেখিয়েছিলাম মডেলটি France-এর set-piece xG-কে কম ওজন দিয়েছিল। Root: Russia 2026 tier list, final, and error log — সেই error log আজও আমাকে মনে করিয়ে দেয় যে একটি মডেলকে audit না করা পর্যন্ত সেটি মতামত, আর একটি ইনপুট যাচাই না করা পর্যন্ত একটি ফাঁকা Stage-1-কে আর্টিকেল বলা যায় না।

এখন আসি secondary flag-এ। Domain Label লেখা হয়েছে cricket_world, কিন্তু স্কিমা-প্রত্যাশিত লেবেল হলো Cricket। একটি একক ট্যাক্সোনমি ত্রুটি ছোট মনে হতে পারে; কিন্তু ডেটাবেসে এটি বিশাল ব্যাঘাত তৈরি করে। আমি ২০২১ সালে বাংলাদেশ প্রিমিয়ার লিগ ক্লাবের ট্রান্সফার মার্কেট অ্যাডমিনিস্ট্রেটর হিসেবে FIFA TMS-এর নিবন্ধন প্রক্রিয়া সামলেছি — Root: Transfer Market Administrator role and INTJ pattern-seeking। একটি ক্লাবের নাম বা খেলোয়াড়ের আইডি ভুল হলে পুরো ইন্টারন্যাশনাল ট্রান্সফার সার্টিফিকেট প্রক্রিয়া আটকে যায়। একইভাবে, cricket_world লেবেল দিয়ে সার্চ করলে সঠিক ক্রিকেট ডেটা খুঁজে পাওয়া যাবে না, বিশেষ করে যখন কোনো অটোমেটেড সিস্টেম স্কিমা-নির্দিষ্ট Cricket লেবেলের ওপর নির্ভর করে। মেটাডেটার এই সূক্ষ্ম ত্রুটি ভবিষ্যতে আরও বড় অমিল তৈরি করতে পারে।
সাংবাদিকতার দৃষ্টিতে এই ফাইলটি আসলে একটি নীরব সংকেত। শূন্য তথ্য মানে এই নয় যে কিছু ঘটেনি; বরং মানে উৎস থেকে পর্দা, অর্থাৎ extraction-এর পর্দা, সঠিকভাবে ওঠেনি। Paywall, JavaScript rendering, bot-block — প্রতিটি প্রযুক্তিগত বাধা একটি গল্প বলে। ভবিষ্যতে যখনই কোনো অটোমেটেড পাইপলাইন আমাকে একটি প্রতিবেদন দেবে, আমি প্রথমে প্রশ্ন করব: উৎসটি কী ছিল? শিরোনাম কী ছিল? কোন তথ্যবিন্দু আহরণ করা হয়েছে? যদি উত্তরগুলো N/A হয়, তাহলে আমার জন্য সবচেয়ে সৎ ক্রীড়া প্রতিবেদন হলো সেই ফাঁকা স্থানটি স্বীকার করা।
একটি স্বজ্ঞাত প্রতিক্রিয়া হতে পারে: খালি ফলাফল মানে ব্যর্থ কাজ। কিন্তু আমার খাতা উল্টো কথা বলে। এই ফাইলটি সফল, কারণ এটি মিথ্যা বলেনি। Error log-এর দর্শনই বলে — যেখানে মডেল ভুল করেছে, সেখানে ভুল স্বীকার করা জরুরি। এখানে error log আগেই এসেছে: Input Integrity Assessment গেটটি ফাঁকা ইনপুট শনাক্ত করে থেমে গেছে। এটি একটি null result, যা নিউজরুমের জন্য বাস্তব খবর। কোনো সংখ্যা ছাড়া ২,৮৪৭ শটের মিথ্যা লেজার তৈরি না করাই হলো সঠিক গণনা। মাঝে মাঝে সবচেয়ে দায়িত্বশীল সাংবাদিকতা হলো কিবোর্ড বন্ধ রাখা।
তবুও, আমি পাইপলাইন ব্যর্থতাকে শুধু 'ব্যর্থতা' হিসেবে রাখতে চাই না। এটি একটি হিউরিস্টিক: যখন Stage-1 খালি আসে, তখন ধরে নিতে হবে ফেচ বা পার্স লেয়ারে সমস্যা। পরের ধাপে উৎসটি ম্যানুয়ালি খুঁজে বের করে আবার extraction চালু করতে হবে। এই রুটিন আমার কাছে ফিক্সড সিজনাল ফিচারের মতো: প্রতিটি টুর্নামেন্টের পরে আমি error log প্রকাশ করি; প্রতিটি খালি Stage-1-এর পরে আমার উচিত একটি extraction audit চালানো। ডেটা প্রোভেন্যান্স — তথ্য কোথা থেকে এল, কীভাবে এল — এটাই আধুনিক ক্রিকেট সাংবাদিকতার প্রথম অধ্যায়।
যখন আমি ২০২০ সালে ১১টি লিগের ২,৪১২টি ম্যাচ কোড করেছি খালি স্টেডিয়ামে, তখন শিখেছিলাম পরিবেশগত প্রসঙ্গ কতটা বড়। Home win rate ৪৫.১ থেকে নেমে ৪১.৬ শতাংশে দাঁড়িয়েছিল; home penalty awards কমেছিল ১৯ শতাংশ। সেই সংখ্যাগুলো শেখায়, প্রতিটি পরিসংখ্যানের পেছনে crowd, travel, registration rules, এবং নিয়ন্ত্রক চাপ থাকে। এখানে সেইরকম একটি প্রসঙ্গ আছে: Stage-2-এর বিশ্লেষণ শুরু করার আগে Stage-1-এর ডেটা কোয়ালিটি যাচাই করা একটি শর্ত, ঐচ্ছিক নয়। ক্রিকেটের কোনো ম্যাচে যদি দেখা যায় ১১ জন খেলোয়াড়ের মধ্যে ১০ জনই অনুপস্থিত, তাহলে দল ঘোষণা করা যায় না। এখানেও সেই চিত্র।
আমার লেখার একটি নিয়ম হলো: Core insights bold রাখি। তাই আমি লিখব: একটি খালি Stage-1 ইনপুট অন্যতম সত্য ক্রিকেট সংবাদ, কারণ এটি শিল্পের অটোমেশন দুর্বলতাকে উন্মোচন করে। এই একটিমাত্র বাক্যই পুরো ফাইলটির মূল্য ধারণ করে।
কিছু পাঠক হয়তো ভাববেন, এত কথা বললাম, কিন্তু ক্রিকেটের স্কোরই বললাম না। জবাব হলো: যে মুহূর্তে information points নেই, মাঠের স্কোরও নেই। একজন সাংবাদিকের কাজ হলো স্কোরের পেছনের গল্প; কিন্তু স্কোরই যখন পাওয়া যায় না, তখন স্কোরের অনুপস্থিতিটুকুই প্রতিবেদন। এটি অস্বস্তিকর, কিন্তু সৎ।
সামনের দিকে তাকিয়ে: ২০২৬ বিশ্বকাপের ১০৪ ম্যাচের সম্ভাব্য ক্যালেন্ডার, ২০২৫-এর ৩২ দলের ক্লাব বিশ্বকাপের অতিরিক্ত নিবন্ধন উইন্ডো — এসবের আগে আমাদের তথ্য পদ্ধতিকে আরও শক্ত করতে হবে। যদি Stage-1-এ একটি শিরোনামও নিষ্কাশন করা না যায়, তাহলে সেখানে মিনিট-লোড মডেল চালানো মানে ভিত্তিহীন ভবন। আমি আগামী মৌসুমে প্রতিটি খেলোয়াড়ের মিনিট লোড মডেল চালানোর আগে source integrity gate-এর উত্তরণ নিশ্চিত করব।
The Khulna ledger did not lie: 132 matches, 2,847 shots, and one quiet conclusion। ভবিষ্যতের সেই লেজারে একটি নতুন এন্ট্রি যোগ হবে: এক দিন, একটি Stage-2 ফাইল, শূন্য তথ্যবিন্দু — এবং তবুও একটি সম্পূর্ণ গুণমান-পরীক্ষার গল্প।
