যে রিপোর্টে একটা লেবেল ছিল, কোনো ম্যাচ ছিল না
**মূল উত্তর:** Stage-1 এক্সট্রাকশন রেকর্ডে শুধু Domain Label: football পূরণ হয়েছিল; শিরোনাম, সূত্র, ধরন, মূল বক্তব্য ও তথ্যবিন্দু সবই ফাঁকা বা N/A ছিল। ফলে রেকর্ডটি কোনো গভীর ট্যাকটিক্যাল বিশ্লেষণ সমর্থন করতে পারে না — লেবেলটি ম্যাচ থেকে আসেনি, ডিফল্ট থেকে এসেছে। **মূল তথ্য:** - ১২টি স্ট্রাকচার্ড ফিল্ডের মধ্যে বিষয়বস্তু ছিল মাত্র ১টিতে, সেটিও সমর্থনহীন লেবেল। - Article Type ছিল Unclassified; ফলে প্রতিবেদন, গুজব ও ট্যাকটিক্যাল বিশ্লেষণের ফ্রেমওয়ার্ক নির্ধারণ অসম্ভব। - Information Points খালি হওয়ায় Entities ও Timeline শূন্য — স্কিমার নির্ভরতা-শৃঙ্খল ভেঙে পড়েছে। - Time Sensitivity ও Source Quality মূল্যায়ন হয়নি; ফুটবলে তারিখহীন দাবির মেয়াদ শূন্য। - সমাধান: উজানের বডি পুনরায় এনে বাইট ও টোকেন গণনা করে ফেচ-ব্যর্থতা ও পার্স-ব্যর্থতা আলাদা করা। **সূত্র:** Stage-1 স্ট্রাকচার্ড এক্সট্রাকশন মূল্যায়ন প্রতিবেদন (অভ্যন্তরীণ, প্রকাশের তারিখ অনুল্লেখিত — N/A)। **সম্ভাব্য পরবর্তী প্রশ্ন:** প্রশ্ন: ফাঁকা ফিল্ড থাকলে বিশ্লেষণ কেন সম্ভব নয়? উত্তর: কারণ মূল বক্তব্য ও তথ্যবিন্দু ছাড়া কোনো দাবি যাচাই বা ভুল প্রমাণ করার পথ থাকে না। প্রশ্ন: দুর্বলতা ফেচিংয়ে নাকি পার্সিংয়ে, কীভাবে নির্ণয় করবেন? উত্তর: একই লিংক আবার এনে বডির বাইট ও টোকেন গণনা করলে; বডি শূন্য হলে ফেচ, বডি থাকলে পার্সার। প্রশ্ন: Domain Label: football কি কোনো কাজে আসে? উত্তর: এটি একটি সনাক্তযোগ্য তদন্তসূত্র, কারণ কোন নিয়মে লেবেলটি বসানো হলো তা জানলে উজানের ব্যর্থতার ধরন বোঝা যায়।
সোমবার সকালে ডেস্কে যে ফাইলটা এল, তার নাম ছিল Stage-1 আউটপুট। বারোটা ফিল্ড। একটাতে লেখা: football। বাকি এগারোটার অবস্থা — শিরোনামে N/A, সূত্রে N/A, ধরনে Unclassified, মূল বক্তব্যে খালি বুলেট, তথ্যবিন্দুতে খালি তালিকা, সত্তা শনাক্তকরণে লেখা 'উপরের তথ্যবিন্দু থেকে চিহ্নিত করতে হবে' — অথচ সেই তথ্যবিন্দুর তালিকাই খালি। সময়-সংবেদনশীলতা: মূল্যায়ন করা হয়নি। সূত্রের মান: মূল্যায়ন করা হয়নি।
কেউ হয়তো বলবেন, এ তো তথ্যের অভাব। না। তথ্যের অভাব আর ফাঁকা কাঠামোর মধ্যে একটা ব্যবধান আছে, আর সেই ব্যবধানটাই আমার কাজের কেন্দ্রে। একটা ঘাটতি মানে তুমি কম জানো; একটা ফাঁকা কাঠামো মানে তোমাকে জানানো হচ্ছে যেন তুমি জানো, অথচ কিছুই জানা যায়নি। প্রথমটা সততা, দ্বিতীয়টা ভুল información — ক্ষমা করবেন, দ্বিতীয়টা ভুল তথ্যের চেহারা নিয়ে আসা শূন্যতা।
আমি এই ফাইলটা নিয়ে বসেছিলাম কারণ কেউ চেয়েছিল এর ওপর একটা গভীর ট্যাকটিক্যাল বিশ্লেষণ। আর আমি বসে গিয়ে প্রথমে যা করলাম, তা হলো একটা হিসাব — কতগুলো ফিল্ডে সত্যিই বিষয়বস্তু আছে। এক। বারোভাগের এক। তারপর আমি হিসাব করলাম, ওই এক ফিল্ডটা কোথা থেকে এল। শিরোনাম নেই, সূত্র নেই, তথ্যবিন্দু নেই — তাহলে কোন নিয়মে 'football' লেখা হলো? উত্তরটা সহজ এবং অস্বস্তিকর: হয় URL-এর পথ থেকে, নয়তো ফিডের কোনো ক্যাটাগরি থেকে, নয়তো কোনো ডিফল্ট মান থেকে। অর্থাৎ লেবেলটা ম্যাচ থেকে আসেনি, লেবেলটা ম্যাচের বদলে বসানো হয়েছে।
খাতা আর স্কিমার মধ্যে পার্থক্য
২০১৭ সালে আমি যখন গার্মেন্টস এক্সপোর্টার চাকরি ছেড়ে হাফ-স্পেস ঢাকা চালু করি, তখন আমার হাতে কোনো স্কিমা ছিল না। ছিল একটা স্প্রেডশিট আর টেলিভিশন ফিড। ওই মৌসুমের শেষ ২৪টা ম্যাচ আমি নিজে হাতে কোড করি — ১,৪০০ পজেশন সিকোয়েন্স, প্রতিটার টাইমস্ট্যাম্প, প্রতিটার শুরু আর শেষ। চেলসির ৩-৪-৩ নিয়ে তখন সবাই কঁতে-র কথা লিখছিল। আমার কোডিং বলছিল অন্য কথা: ব্যবস্থাটা চলছিল ফাব্রেগাসের পার্শ্ববর্তী পাসিং লেন থেকে, আর কঁতে ছিলেন সেই লেনগুলো রক্ষা করার লোক। ৯০ হাজার পাঠক ওই লেখাটা পড়েছিলেন।
সেই অভিজ্ঞতা আমাকে একটা জিনিস শিখিয়েছিল, যা আজকের ফাইলটার সঙ্গে সরাসরি সম্পর্কিত: স্কিমা কোনো তথ্য নয়। স্কিমা হলো প্রশ্ন করার ছাঁচ। একটা পজিশন-শিটে ৪-২-৩-১ লেখা থাকতে পারে, কিন্তু ওই চার-দুই-তিন-এক আসলে কী করছিল, তা জানতে হলে গুনতে হয় — কতগুলো রিকভারি, কার আগে, কোন মিনিটে। ২০১৮ বিশ্বকাপে ফ্রান্স-ক্রোয়েশিয়া ফাইনালের পর আমি ঠিক এটাই করেছিলাম: ৬০ মিনিটের আগে ক্রোয়েশিয়ার অর্ধে ফ্রান্সের ১৪টা রিকভারি গুনে বের করেছিলাম, আর দেখিয়েছিলাম গ্রিয়েজমান দশ নম্বর চ্যানেল খালি রেখে কীভাবে পগবা আর মাতুইদির প্রেসিং সহজ করছিলেন। সেই ডায়াগ্রাম পরে একটা ইউরোপীয় অ্যানালিটিক্স নিউজলেটার ছাপে।

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

ফাঁকগুলো একে একে
প্রথম ফাঁক: শিরোনাম আর সূত্র। এই দুটো একটা লেখার জন্মপরিচয়। শিরোনাম না থাকলে বোঝা যায় না লেখাটা ম্যাচ-প্রতিবেদন, প্রতিক্রিয়া, নাকি গুজব। সূত্র না থাকলে বোঝা যায় না কে বলছে — ক্লাবের প্রেস অফিস, নাকি একজন এজেন্টের ঘনিষ্ঠ সাংবাদিক, নাকি কেউ একটা পুরোনো টুইট থেকে জোড়া লাগানো পোস্ট। ফুটবলে এই পার্থক্যটা নির্ণায়ক। একটা ১-০ প্রীতি ম্যাচে আর একটা ১-০ ফাইনালে একই জিনিস নয়, যদিও স্কোরলাইন অভিন্ন। সূত্রবিহীন একটা দাবিও ঠিক তেমন — সংখ্যাটা একই দেখায়, কিন্তু তার ওজন শূন্য।
দ্বিতীয় ফাঁক: ধরন অনির্ধারিত। এটাকে আমি সবচেয়ে ব্যয়বহুল ঘাটতি বলে মনে করি, কারণ ধরন ঠিক করে দেয় বিশ্লেষণের কাঠামো। ট্রান্সফার গুজব আর ট্যাকটিক্যাল বিশ্লেষণ — দুটোকে একভাবে হ্যান্ডেল করা যায় না। ২০২৩ সালের ৩১ জানুয়ারি এনসো ফার্নান্দেস বেনফিকা থেকে চেলসিতে যান, ১০৬.৮ মিলিয়ন পাউন্ডে, কাতারে যুব খেলোয়াড়ের পুরস্কার জেতার পর। আমি ন'ঘণ্টার মধ্যে 'What £106.8m Actually Buys' ফাইল করেছিলাম। ন'ঘণ্টায় লেখা সম্ভব হয়েছিল শুধু এই কারণে যে ওই সিদ্ধান্তটা আগেই নেওয়া ছিল — লেখাটা কী ধরনের, তা আমি জানতাম, আর ইনপুট হিসেবে আমার হাতে ছিল কাতারে তার সাতটা ম্যাচের নিজের কোডিং, প্রগ্রেসিভ পাসিং জোন আর প্রেসিং ট্রিগারের মানচিত্র। ধরনটা যদি 'Unclassified' থাকত, ন'ঘণ্টা নয়, ন'দিনেও ওই লেখা বেরোত না।
তৃতীয় ফাঁক: মূল বক্তব্য খালি। এটাই সবচেয়ে গুরুত্বপূর্ণ, কারণ গভীর বিশ্লেষণের বিষয়ই হলো বক্তব্যের গঠন। কে কী দাবি করছে, কেন করছে, তার পেছনে কোন স্বার্থ আছে — এই তিনটা না জানলে বিশ্লেষণ দাঁড়ায় না। ২০২২ বিশ্বকাপে মরক্কোর সাতটা ম্যাচ আমি কোড করেছিলাম। ওয়ালিদ রেগরাগির ৪-১-৪-১ স্পেনের বিরুদ্ধে গিয়ে বসে যেত ৫-৪-১-এ, পর্তুগালের বিরুদ্ধেও তাই — পাঁচ ম্যাচে এক গোল খেয়ে, সেটাও নিজেদের গোল। প্রচারমাধ্যমের বড় অংশ একে বলছিল 'প্রতিরক্ষার অলৌকিকতা'। আমার কোডিং বলছিল অন্য কিছু: এটা অলৌকিকতা নয়, এটা একটা নির্ধারিত সময়সূচি মেনে সংকুচিত হওয়া কাঠামো, যার প্রতিটা ধাপ আগেই ঠিক করা ছিল।
পার্থক্যটা কোথায়? 'অলৌকিকতা' একটা অবিস্মরণীয় দাবি — ওকে ভুল প্রমাণ করা যায় না, কারণ ও কোনো পরীক্ষা প্রস্তাব করে না। 'নির্ধারিত সংকোচন' একটা পরীক্ষাযোগ্য দাবি — পরের ম্যাচে যদি ওরা আগেভাগে চাপ দিতে শুরু করে, তাহলে আমার পড়া ভুল। মূল বক্তব্য ফাঁকা মানে শুধু বিশ্লেষণের বিষয় নেই তা নয়, মানে ভুল প্রমাণ করার পথটাও বন্ধ।
চতুর্থ ফাঁক: তথ্যবিন্দু খালি, তাই সত্তা খালি, তাই সময়রেখা অসম্ভব। এই ত্রুটিটা স্কিমার ভেতরেই লেখা আছে, আক্ষরিক অর্থে: সত্তা 'উপরের তথ্যবিন্দু থেকে চিহ্নিত করতে হবে'। তথ্যবিন্দু শূন্য হলে সত্তা শূন্য। এটা কোনো আকস্মিকতা নয়, এটা একটা নির্ভরতা-শৃঙ্খল, আর শৃঙ্খলের প্রথম কড়িটা ভাঙলে বাকিটা নিজে থেকেই ভেঙে পড়ে। ক্রস-ভেরিফিকেশনের জন্য অন্তত দুটো বিন্দু দরকার যারা পরস্পরের সঙ্গে দ্বিমত পোষণ করতে পারে। একটাই বিন্দু থাকলে সেটা যাচাই নয়, সেটা পুনরাবৃত্তি।
পঞ্চম ফাঁক: সময়-সংবেদনশীলতা মূল্যায়ন করা হয়নি। ফুটবলে সবকিছুর মেয়াদ আছে — ট্রান্সফার উইন্ডো, চোট, কিকঅফের সময়, কোচের চাকরি। ২০২০ সালের মে-জুনে জার্মান বুন্দেসলিগার ৯০টা ম্যাচ আমি নিজে হাতে কোড করেছিলাম, কারণ একটা সম্পাদক আমার স্টাডিটা ফিরিয়ে দিয়ে বলেছিলেন তিনি 'আরও প্রামাণিক কণ্ঠস্বর' চান। আমি তর্ক করিনি, গুনেছি। ফলাফল: ঘরের মাঠে জয়ের হার ৪৩.২ শতাংশ থেকে নেমে ৩২.১ শতাংশ, আর অতিথি দলগুলোর উচ্চ-প্রেসিং সাফল্য ছয় শতাংশ পয়েন্ট বেড়ে গেছে। ওই পুরো কাজটা দাঁড়িয়েছিল তারিখ আর দর্শক-সংখ্যার ওপর — কোন ম্যাচ কবে, কত দর্শক, কোন স্টেডিয়ামে। দর্শক ছিল শূন্য-তিন গোলের সমান, আর অ্যালগরিদম আমাকে এটা ভুলতে দেয়নি।
তারিখহীন একটা দাবি দাবি নয়, আবহাওয়া। আর চোটের ক্ষেত্রে তো কথাটা আরও তীব্র — ক্লাবগুলো ঠিক ততটুকুই প্রকাশ করে যতটুকু তাদের মू্যায়নে সুবিধা দেয়। তাই একটা চোটের তথ্য যদি সূত্রহীনভাবে আসে, সেটা না থাকাই ভালো।
কেন এমন রেকর্ড তৈরি হলো
এখানে একটা প্রযুক্তিগত ব্যাখ্যা আছে, আর সেটা ফুটবল-সম্পর্কিত একটা উপমা দিয়ে বোঝানো সহজ। টেমপ্লেট রেন্ডার হয়েছে — মানে পৃষ্ঠাটা সুন্দরভাবে তৈরি হয়েছে, শিরোনামের জায়গা আছে, বুলেটের জায়গা আছে, ফিল্ডের নামগুলো ঠিক জায়গায় বসেছে। কিন্তু ভেতরে কিছু ঢোকেনি, কারণ উজানের আনা টুলটা সম্ভবত খালি বডি ফিরিয়ে এনেছে — হয় সাইটটা ব্লক করেছে, নয়তো পেজটা জাভাস্ক্রিপ্টে তৈরি হচ্ছিল আর পার্সার সেটা পড়তে পারেনি।
ফুটবলের ভাষায় এটা ঠিক সেই মুহূর্তের মতো যখন একটা স্ট্যাট ফিড এমন একটা ম্যাচের জন্য ০-০ ফেরত দেয় যেটা কখনো খেলা হয়নি। স্কোরলাইনটা রেন্ডার হয়। ম্যাচটা হয়নি। আর যে কেউ ওই স্কোরলাইনটা দেখে টেবিল বানিয়ে ফেলে, সে একটা অস্তিত্বহীন ফিক্সচারের পয়েন্ট যোগ করতে বসে যায়।
আমি ন'বছর ধরে একাই পুরো পাইপলাইন — কোডার, ডায়াগ্রামার, সম্পাদক, প্রুফার। এই সীমাবদ্ধতার একটা উপকার আছে: ভুলটা কোথায় হয়, তা আমি চিনি, কারণ ভুলটা আমিই করেছি। আমি জানি এই ব্যর্থতা কেমন দেখতে — তুমি দেখো পৃষ্ঠাটা এসেছে কি না, দেখো না ফিল্ডগুলো ওজন বহন করছে কি না। রেন্ডার সফল, বিষয়বস্তু শূন্য। এটাই সবচেয়ে বিপজ্জনক ধরনের ব্যর্থতা, কারণ ব্যর্থ আউটপুট দেখতে বৈধ লাগে।
যে জিনিসটা আমাকে সবচেয়ে বেশি ভয় দেখায়
এখানেই আমার মূল দ্বিমত। সবাই বলবে, ইনপুট কম ছিল, তাই বিশ্লেষণ হলো না। আমি বলব, আধা-ভরা রেকর্ড একটা ফাঁকা রেকর্ডের চেয়ে অনেক বেশি বিপজ্জনক। কারণ দশটা ফিল্ডের তিনটা ভরা থাকলে বাকি সাতটা ফাঁকা জায়গা বর্ণনা দিয়ে ভরে ফেলার প্রলোভন তৈরি হয়। শূন্য ভরা থাকলে সেই প্রলোভনটাই জন্মায় না।
আর দ্বিতীয় কথা: 'Domain Label: football' কে আমি 'কিছুই না' বলে উড়িয়ে দিতে রাজি নই। এটা একটা দাবি, এবং দাবিটার একটা উৎস আছে। কোন নিয়মটা আগে ফায়ার হলো? কোন ফিল্ডের ওপর ভর করে এই লেবেলটা বসানো হলো, যখন শিরোনামই নেই? এই প্রশ্নটার উত্তর জানা দরকার, কারণ উত্তরটা আমাদের বলে দেবে উজানে আসলে কী ঘটেছিল। এটা একটা তদন্তের সূত্র, ভিত্তি নয়।
আমি জানি আমার পড়াটা কীভাবে ভুল প্রমাণিত হতে পারে। যদি দেখা যায় উজানের বডি আসলে খালি ছিল না, কিন্তু পার্সার সেটা ফেলে দিয়েছে — তাহলে ব্যর্থতা পার্সিংয়ে, ফেচিংয়ে নয়। সমাধানও তাহলে আলাদা: আবার আনা নয়, পার্সার সারানো। পরীক্ষাটা সহজ — লিংকটা আবার আনো, বডির হ্যাশ রাখো, বাইট সংখ্যা মেলাও, টোকেন গোনো। বডি শূন্য আর ফিল্ড শূন্য হলে সমস্যা আনার পথে। বডি আছে অথচ ফিল্ড শূন্য হলে সমস্যা পড়ার পথে।
আর আমার নিজের পক্ষপাতের কথাও বলে রাখি। আমার খাতা-প্রেম বলে দেয় ফাঁকা ঘরগুলো ेंूক সংখ্যা বসাতে — এখানে একটা শূন্য-তিন, ওখানে একটা পিপিডিএ, ওখানে একটা প্রেস-ট্রিগার গণনা। ঠিক এই আকাঙ্ক্ষাটাই ২০২০ সালে আমাকে প্রায় ভুল পথে নিয়ে গিয়েছিল, যখন একজন সম্পাদক 'আরও প্রামাণিক কণ্ঠস্বর' চেয়েছিলেন এবং আমি প্রায় সেটা সাজিয়ে দেওয়ার কথা ভেবেছিলাম।
প্রতিটা ট্যাকটিক একটা মন্ত্র, যার মেয়াদ আছে; আর প্রতিপক্ষ হলো সেই ঘড়ি। তথ্যের ক্ষেত্রেও একই নিয়ম। সূত্রহীন তথ্যের মেয়াদ শূন্য মিনিট।
পরের ম্যাচে কী দেখব
আমি এই ফাইলটা থেকে একটা লেখা বের করছি না, বের করছি একটা নিয়ম। পাইপলাইনে ফিল্ড-পূর্ণতার শর্ত বসাতে হবে: শিরোনাম শূন্য হলে রেন্ডার থামুক। যে পৃষ্ঠার সূত্র নেই, সে পৃষ্ঠা ছাপা যাবে না — ফাঁকা জায়গা সাজিয়ে নয়, বন্ধ করে দিয়ে।
কিন্তু আসল প্রশ্নটা এই Stage-1 নিয়ে নয়। আসল প্রশ্নটা হলো, ফুটবল সাংবাদিকতায় প্রকাশিত কতগুলো সংখ্যা এমন একটা ধাপ পেরিয়ে এসেছে, যেটা নীরবে শূন্য ফেরত দিতে পারত, আর কেউ কখনো যাচাই করেনি? পরের ট্রান্সফার ডেডলাইনে, পরের ম্যাচডেতে, পরের চোটের খবরে — টেমপ্লেট দেখার আগে বডিটা দেখুন।
আমি ফুটবল দেখি সৌন্দর্যের জন্য নয়, দেখি সিস্টেমটা কোথায় মিথ্যা বলে সেই মুহূর্তটার জন্য। আজ সিস্টেমটা মিথ্যা বলেছে একটা ফাঁকা পৃষ্ঠা দিয়ে, যেটা দেখতে একটা প্রতিবেদনের মতো। পরের বার সে আরও ভালো ছদ্মবেশ পরবে।
