ডাটা কমপ্রেশন নিয়ে আমার আলোচনা করার একটি কারণ আছে। বাংলাভাষায়ও এখন তথ্যের প্রবাহ অবাধ ও অসীম। অনলাইন সংবাদপত্র, ব্লগ, ই-বুক - সর্বোপরি ডিজিটাল বাংলাদেশের ক্ষেত্রে ডাটা কমপ্রেশন অত্যন্ত গুরুত্বপূর্ণ। আমাদের বাংলাভাষায় লিখা ফাইল নিয়ে কমপ্রেশনের চিন্তা এখনও কেউ করেছেন বা করছেন কিনা জানি না , এখনও চিন্তা না করে থাকলে আমাদের এটা নিয়ে চিন্তা শুরু করা উচিত।
ধরা যাক, কেউ একজন তার প্রিয়জনকে ১০ মেগাবাইটের একটি ফাইল পাঠাতে চান।এক্ষেত্রে প্রথমে যে বাঁধাটি আসতে পারে, সেটি হল, ইমেইল প্রোভাইডার যেমন - ইয়াহু, এমএসএন, জিমেইল ইত্যাদি এত বড় ফাইল পাঠানো সমর্থন করবে কিনা? যদিওবা ইমেইল প্রোভাইডার সাপোর্ট করে বা আপনার নিজস্ব ইমেইল সিস্টেম থাকে, ফাইলটি পাঠাতে সময় লেগে যেতে পারে অনেক। যেমন - আপনার ইন্টারনেট ব্যান্ডউইথ (স্পীড) যদি ১.৫ মেগাবাইট প্রতি সেকেন্ড হয় তাহলে ১০ মেগাবাইটের ফাইলটি পাঠাতে প্রায় ৭ সেকেন্ড লেগে যাবে। কম্পিউটার যেখানে মিলি-মাইক্রো-ন্যানো সেকেন্ডে কাজ করে, সেখানে ৭ সেকেন্ড অনেক বেশি সময়, সময়ের পরিমাণটা আরো বেড়ে যাবে যদি ব্যান্ডউইথ হয় আরো কম, তারপরে নিরাপত্তার জন্য যদি এনক্রিপ্ট (Encrypt) করে পাঠাতে হয়, তাহলে তো সময় বাড়তেই থাকবে। কাজেই দ্রুত ফাইল পাঠানোর জন্য ফাইলের তথ্য ও গুণাগুণ অক্ষত রেখে আকার (size) কমানো দরকার। আবার তথ্যের পরিমাণ প্রতিনিয়ত বেড়েই চলেছে। এত বিশাল তথ্যের ভান্ডার রাখার জন্য জায়গাও প্রচুর দরকার। এত জায়গা কোথায়? শুধু তাই নয় বেশি জায়গার জন্য খরচের পরিমাণটাও বেশি। এক্ষেত্রেও প্রয়োজন দেখা দিয়েছে ফাইলের তথ্য ও গুণাগুণ অবিকৃত রেখে ফাইলের আকার সংকুচিত করার। এসব প্রয়োজনেই ডাটা কমপ্রেশন প্রযুক্তিটি এসেছে।
মনে রাখা দরকার ডাটা কমপ্রেশন প্রযুক্তিটি কিন্তু নূতন নয় কিন্তু কম্পিউটার ও যোগাযোগ প্রযুক্তির দ্রুত উন্নয়নের ফলে ডাটা কমপ্রেশনের ব্যবহারিক উপযোগিতা এখন অনেক বেড়ে গিয়েছে। যাই হোক, ডাটা কমপ্রেশনের ইতিহাসের দিকে না গিয়ে প্রযুক্তিটি নিয়ে আলোচনা করা যাক। ব্যবহারিক ক্ষেত্রে আমরা সবাই ডিজিটাল ক্যামেরায় তোলা জে-পেগ (jpeg) প্রকৃতির ইমেজ ফাইলের সাথে পরিচিত। এই জে-পেগ ফাইল হল একটি কমপ্রেসড ফাইল। অনেক পেশাদারী ফটোগ্রাফারই ক্যামেরা কেনার সময় ছবি ‘র’ (Raw) ফাইল আকারে সংরক্ষিত করা যায় কিনা দেখে ক্যামেরা কিনেন। এতে ছবি এডিটিং-এ নিজের দক্ষতা আরো বেশি করে দেখানো যায়। তাছাড়া আমরা সবাই কম-বেশি জিপ ফাইলের (Zip file) সাথেও পরিচিত। কিন্তু ফাইলের এই সংকোচন প্রযুক্তিটি কী? কীভাবে ফাইলকে সংকুচিত করা হয়?
ডাটা কমপ্রেশনের সাথে যে দুটি গুরুত্বপূর্ণ বিষয় জড়িয়ে আছে, তা হল - এনকোডিং (Encoding) ও ডিকোডিং (Decoding)। অর্থাৎ তথ্যকে প্রথমে এনকোড করতে হবে, তারপরে এনকোডেড তথ্য অপর-প্রান্তে পাঠাতে হবে বা মেমোরিতে সংরক্ষণ করতে হবে। তারপর প্রাপক যখন তথ্য আবার পাবে বা সংরক্ষিত তথ্য আবার পড়ার প্রয়োজন দেখা দিবে, তা আবার ডিকোড করতে হবে।ধরা যাক, একটি চিঠির লাইন - “আমরা ভালো আছি।”, প্রতিটি অক্ষরের জন্য এক বাইট (byte) হিসেবে দাড়ি ও স্পেসসহ উপরোক্ত লাইনটি সংরক্ষণ বা ইমেইল করার জন্য আমাদের দরকার হবে ১০ টি বাইট। কিন্তু আমরা তিনটি শব্দ ও মাঝের স্পেসকে এনকোড করতে পারি এভাবে - আমরা -১, ভালো -২, আছি -৩, স্পেস -৪, দাড়ি -৫। তবে আমরা এই লাইনটিকে সংরক্ষণ করতে পারি বা পাঠাতে পারি এভাবে - ১৪২৪৩৫ এবং দরকার হচ্ছে সর্বমোট ৬ টি বাইট।আমরা এক্ষেত্রে ৪ টি বাইট ইতিমধ্যে কমিয়ে ফেললাম। অবশ্য উপরোক্ত এনকোডেড লাইনটি ডিকোডিংয়ের সময়ে ডিকোডিং এলগোরিদম ও তথ্য এনকোডিংযের ডিকশনারি (data dictionary) -দুটোরই প্রয়োজন পড়বে। আবার ধরা যাক একটি লাইন এমন- “আমরা ভালো আছি।মা-বাবা ভালো আছে।মা-বাবা আগামীকাল চট্টগ্রাম যাবে” - এই লাইনটির জন্য সাধারণভাবে সংরক্ষণ বা ইমেইল করার জন্য প্রয়োজন পড়বে ৩৯ বাইট। আর যদি এনকোড করি - আমরা -১, ভালো -২, আছি - ৩, মা-বাবা -৪, আছে - ৫, আগামীকাল - ৬, চট্টগ্রাম - ৭, যাবে - ৮, দাড়ি -৯, স্পেস - ০, তবে দরকার হবে ১০২০৩৯৪০২০৫৯৪০৬০৭০৮ - সর্বমোট ১৯ বাইট। এক্ষেত্রে আমরা অনেক বেশি বাইট বাঁচাতে পারলাম কারণ এখানে দুটি শব্দের - মা-বাবা, ভালো পুনরাবৃত্তি আছে। ব্যাপারটা আমি সহজে ব্যাখ্যা করলাম। এখানে আরো একটু জটিলতা আছে যেমন টেক্সট (text) কমপ্রেশনের সময় শব্দকে বিবেচনায় না এনে অক্ষরগুলি ও তাদের ধারাবাহিক প্যাটার্ন বিবেচনা করা হয় এবং কমপ্রেশনের জন্য যে ডিকশনারিটি তৈরি করা হয় সেখানে অক্ষরগুলি কিংবা তাদের প্যাটার্নের ধারাবাহিকতা বিবেচনা করা হয় । এভাবে ফাইল যত বড় হবে তত বেশি বাইট বাঁচিয়ে ফাইলের আকার ছোট করা যাবে। কমপ্রেশনের ক্ষেত্রে আরো বিভিন্ন রকম এলগোরিদম আছে যার মাধ্যমে দক্ষতার সাথে তথ্যকে কমপ্রেসড করা যায়। তথ্যকে ডিকোড করার সময় কোনরকম তথ্য না হারিয়ে সম্পূর্ণ আগের অবস্থায় ফাইলকে নিয়ে আসার এই উপায় হল লস্লেস কমপ্রেশন (Lossless compression) । সাধারণত টেক্সট ফাইলের ক্ষেত্রে লস্লেস কমপ্রেশন প্রযুক্তি ব্যবহার করা হয় যেমন জিপ ফাইল। বিপরীত প্রযুক্তিটি হল লসি কমপ্রেশন (Lossy compression) । নাম থেকেই বোঝা যাচ্ছে যে, এক্ষেত্রে এনকোড ও ডিকোড করার পর কিছু তথ্য হারিয়ে যায়। লসি কমপ্রেশন ইমেজ, অডিও, ভিডিও ফাইলের ক্ষেত্রে করা হয় যেমন জে-পেগ, এম-পেগ (mpeg), এমপি থ্রি (mp3)। কিছু তথ্য বাদ দেওয়া মানেই তথ্যের গুণগত মান কমে যায় না। এক্ষেত্রে সাধারণত নয়েজ (noise) বা পৌনঃপুনিক কম্পোনেন্টগুলি বাদ দেওয়া হয়। ব্যাপারটা সহজে বোঝার জন্য এভাবে বলা যায় - কবিতা হল লসি কমপ্রেশনের একটি উদাহরণ।গদ্য যেখানে অনেক বড় আকারে লিখতে হয়, কবিতার মাধ্যমে সেক্ষেত্রে অল্প কথায় চমকপ্রদ উপায়ে ভাব প্রকাশ করা যায়।কাজেই লসি কমপ্রেশনের মাধ্যমে তথ্যের গুনগত মানের পরিবর্তন হয় না, অনেক ক্ষেত্রে মানের পরিমাণ বেড়েও যেতে পারে।আবার গুনগত মানের পরিমাণ কমে গেলেও লক্ষ্য রাখা হয় যাতে পার্থক্যটা চোখে পড়ার মত না হয়।
লস্লেস কমপ্রেশনের ক্ষেত্রে ক্লড শ্যানোন (Claude E. Shannon) ১৯৪৮ সালে একটি থিওরি নিয়ে আসেন এবং ইনফর্মেশন থিওরিতে তিনি স্ট্যাটিস্টিক্যাল ফিজিক্স থেকে এনট্রপি (Entropy) ব্যাপারটা নিয়ে আসেন।এনট্রপি হল অনিশ্চয়তা মাপার পরিমাপক।যেমন একটি কয়েনের দুইদিকেই যদি হেড থাকে, তাহলে হবে ‘শূন্য এনট্রপি’ কারণ টস করলে হেড আসবেই; আবার যদি কয়েনের একদিকে হেড ও অপরদিকে টেল থাকে ও যদি একবার মাত্র টস করা হয় তাহলে এনট্রপি হবে ১। প্রশ্ন জাগে, এই এনট্রপি তাহলে কমপ্রেশনের সাথে কীভাবে সম্পর্কিত? শ্যানন ছিলেন খুবই বুদ্ধিমান। তিনি ইংরেজি বর্ণমালা ও সেসব নিয়ে গঠিত শব্দমালা নিয়ে চিন্তা শুরু করে দিলেন। তিনি লক্ষ্য করলেন ইংরেজি লেখার ক্ষেত্রে অনেকগুলি অক্ষরই বার বার আসে। যেমন - “Information theory” শব্দটির কথা চিন্তা করলে দেখা যায় ‘i’ দুইবার, ‘o’ তিনবার, ‘n’ দুইবার এসেছে। এভাবে বিভিন্ন রকম প্যাটার্নও বার বার আসে যেমন “or” এক্ষেত্রে দুইবার এসেছে। এভাবে তিনি দেখতে পেলেন ইংরেজি বর্ণমালায় এনট্রপি খুবই কম অর্থাৎ গাণিতিকভাবে পরবর্তী বর্ণ বা প্যাটার্ন ধারণা করা যায়। জটিলতার জন্য প্রোবাবিলিটি ডিস্ট্রিবিউশনের (probability distribution) মাধ্যমে কীভাবে এনট্রপি পরিমাপ করা হয়, তা আলোচনা থেকে বাদ দিলাম। এভাবেই তিনি গাণিতিকভাবে চমৎকার একটি এনকোডিং সিস্টেম তৈরি করে ফেললেন। এছাড়া পরে আরো অনেকরকম এলগোরিদম এসেছে যেমন হাফম্যান কোডিং (Huffman coding) , লেম্পেল-জীভ এলগোরিদম (Lempel-Ziv ba L-Z algorithm) ; লসি কমপ্রেশনের ক্ষেত্রে আছে স্কেলার কোয়ান্টাইজেশন (scaler quantization), ভেক্টর (vector) কোয়ান্টাইজেশন ইত্যাদি। এখনও কমপ্রেশন নিয়ে অনেক গবেষণা হচ্ছে কারণ বর্তমানের এই অসীম তথ্যপ্রবাহের যুগে ডাটা কমপ্রেশন খুবই গুরুত্বপূর্ণ।
প্রযুক্তিবিষয়ে লেখার ব্যাপারে অনেকের অভিযোগ থাকতে পারে যে, আমি ইংরেজি থেকে শুধুমাত্র বাংলায় অনুবাদ করছি - এখানে মৌলিক কিছু নেই। আমি কোন মৌলিক লেখা লিখছি না। সরাসরি অনুবাদও করছি না। আমি প্রযুক্তিকে সহজবোধ্য ভাষায় লেখার চেষ্টা করি। সরাসরি অনুবাদ করলে সফটওয়্যারকে কোমল-সম্ভার ও হার্ডওয়্যারকে কঠিন-সম্ভার বলতাম। আমি তা করি না। ইদানীং অনেকেই অন্তর্জাল বা মুঠোফোন ইত্যাদি শব্দসমূহ ব্যবহার করে থাকেন। আমার কাছে ব্যাপারটিকে বিদঘুটে মনে হয় তাই আমি অনেকক্ষেত্রেই সরাসরি ইংরেজি টার্মই ব্যবহার করে থাকি। যেমন ইংরেজিতে মোবাইল ফোন (mobile phone) বলা হয় কারণ এটা সহজে বহনযোগ্য কিংবা সেলফোন (cell phone) বলা হয় কারণ এটা সেলুলার নেটওয়ার্ক ব্যবহার করে কিন্তু বাংলায় কেন মুঠোফোন করা হল তা আমার মাথায় ঢুকে না। তেমনি ইন্টারনেটকে কেন অন্তর্জাল বলা হবে বুঝি না কারণ ইন্টারনেট হল অনেকগুলি নেটওয়ার্কের নেটওয়ার্ক। অন্তর্জাল বললে কি বোঝা যায় যে, এটা অনেকগুলি নেটওয়ার্কের নেটওয়ার্ক। ইন্টারনেটকে যদি অন্তর্জাল বলা হবে তাহলে ইন্ট্রানেট (Intranet) বা এক্সট্রানেটকে (Extranet) কী বলা হবে? আমার মনে আছে, বিদেশে উচ্চশিক্ষা নেয়ার সময়ে আমাকে নূতন করে ইংরেজি টার্ম শিখতে যথেষ্ট বেগ পেতে হয়েছিল। যাই হোক, তথ্যপ্রযুক্তিকে সহজবোধ্য ও মাতৃভাষায় প্রকাশের মাধ্যমে সর্বসাধারণ ও পরবর্তী প্রজন্মের নিকট জনপ্রিয় করে তোলার জন্য আমার এই প্রযুক্তিবিষয়ে লেখার প্রচেষ্টা । আমি মনে করি প্রযুক্তি ও বিজ্ঞান বিষয়ে আমাদের নিজেদের ভাষায় প্রচুর লেখালেখি হওয়া উচিৎ।
সঞ্চয় রহমান
মে ১৪, ২০১০; ভার্জিনিয়া, যুক্তরাষ্ট্র।
সর্বশেষ এডিট : ১৬ ই মে, ২০১১ সকাল ৯:০২

অনুগ্রহ করে অপেক্ষা করুন। ছবি আটো ইন্সার্ট হবে।


