বির্বতিত ওয়েব সার্চের ভিতর জেনেটিক এলগোরিদম

ইন্টারনেটের বড় বড় সার্চ ইঞ্জিন যেমন গুগল কিভাবে কাজ করে সেটা নিয়ে আমি আলোচনা করতে বসিনি। আমরা সাধারন মানুষের দৈনিক কাজে যেভাবে সার্চ ইঞ্জিন ব্যবহার করি সেটাকে একটা নিয়মতান্ত্রিক পদ্ধতির সাথে বেঁধে ফেলতে এই লেখার উৎপত্তি। এতে করে ঐ বিষয়ে যে সমস্ত জানা ব্যাপার আছে সেগুলো খুব সহজে আমরা ব্যবহার করতে পারব।

বির্বতিত ওয়েব সার্চ বিষয়টা শুনতে যতো খটোমটো লাগছে আসলে ততটা খটোমটো নয়। আপনি হয়ত এমনিতেই এই পদ্ধতিতে সার্চ করে থাকেন। একটা লেখা লিখেছিলাম কিভাবে লিটারেচার সার্চ করতে হয় তার উপর। সেই পদ্ধতি যেকোনো ক্ষেত্রে প্রযোজ্য বলে অনুবাদ করে দিচ্ছি এখানে:

"ধরুন আমাকে একটি সমস্যা সমাধান করতে দেয়া হল। আমি সমস্যাটা থেকে কতগুলো কিওর্য়াড বাছাই করি এবং সেটা দিয়ে গুগলে সার্চ করি। তাতে যে ফলাফলগুলো পাই সেখান থেকে আমি নতুন কিওর্য়াড বাছাই করি এবং সেগুলো দিই। এভাবে যতক্ষন না ভালো কিছু পাই ততক্ষন চালাতে থাকি আমার সার্চ।"

এই পদ্ধতি কিভাবে জেনেটিক এলগোরিদমের সাথে যায়? জেনেটিক এলগোরিদমের মূল কিন্তু আমাদের সভত্যা এবং প্রানী জাতির বির্বতনের সাথে জড়িয়ে আছে। আপনি হয়ত 'survival of the fittest' কথাটি শুনে থাকবেন। এর অর্থ হচ্ছে প্রকৃতি দূর্বল সন্তান পছন্দ করে না। তাই প্রতি জেনারেশনে দূর্বল প্রানীরা ঝরে পড়ে এবং উন্নততর প্রজাতি টিকে যেতে থাকে। এখন বলুন বির্বতিত ওয়েব সার্চের সাথে মিলটা ধরতে পেরেছেন?

জেনেটিক এলগোরিদম হচ্ছে একটি নিয়মতান্ত্রিক পদ্ধতি যেটা উপরের এই প্রক্রিয়াকে অনুকরন করে। উইকিপিডিয়ায় এর উপর সুন্দর দুটি আর্টিকেল আছে, নাম জেনেটিক এলগোরিদম এবং জেনেটিক প্রোগ্রামিং

এতক্ষনে নিশ্চয়ই বুঝতে পারছেন আসলে এই ওয়েব সার্চ জেনেটিক এলগোরিদমেরই একটি প্রয়োগ। আপনাদের সুবিধার্থে এখানে আরেকবার বির্বতিত ওয়েব সার্চের পদ্ধতি লিখে দিচ্ছি:

১। আপনার বিষয়বস্তুর সাথে সর্ম্পকিত কিন্তু হয়ত এলোমেলো এমন কিছু কিওর্য়াড বেছে নিন
২। এই কিওর্য়াডগুলোর জন্য সার্চ করুন
৩। যে সমস্ত ফলাফল পেয়েছেন তার মধ্যে থেকে ভালোগুলো বাছাই করুন। ভালো ফলাফল থেকে আবার কিছু কিওয়ার্ড বাছাই করুন।
৪। নতুন এই ভালো কিওয়ার্ড গুলো দিয়ে আবার সার্চ করুন যতক্ষন না ঠিক যা চাইছেন তাই পেয়ে যান
৫। যদি বেশ কিছুক্ষন ধরে খুঁজেও কিছু না পান তাহলে থামুন

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

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

যদি আপনি উপরের সমস্যা গুলো সম্বন্ধ্যে অবহিত থাকেন তাহলে কিন্তু বির্বতিত ওয়েব সার্চ আপনার চলার পথের একটি ভাল পাথেয় হতে পারে।

এখন আপনি বলুন দেখি কিভাবে ওয়েব সার্চ করে থাকেন?



(ইংরেজী ব্লগে প্রকাশিত একটি লেখার অনুবাদবিজ্ঞানী.কমে প্রকাশিত)

বাংলা ইউনিকোডের সহজ পাঠ

ইউনিকোডের উপকারিতা
১। সার্চ করার সুবিধা। ইউনিকোডে থাকলে সার্চ করতে ভীষন সুবিধা হয়। কেননা তখন পৃথিবী যেকোন সার্চ ইঞ্জিন যে কোন ভাবে সেটা খুঁজে বের করতে পারে। শুধুমাত্র সাইট স্পেসিফিক সার্চ ইঞ্জিনের উপর নির্ভর করতে হয় না।

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

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

৪। যেহেতু বাংলা ইংরেজী এবং অন্যান্য ভাষা মিশিয়ে ব্যবহার করা যায় তাই আপনি সহজে একে বিভিন্ন প্রোগ্রামে অর্ন্তভুক্ত অবস্থায় দেখতে পাবেন। নোটপ্যাডে ফন্ট না বদলে একই সঙ্গে বাংলা এবং ইংরেজী (এবং যে কোন ইউনিকোড লেখা) লেখা এবং দেখা সম্ভব (এবং স্বাভাবিক)। মনে করেন আপনি একটা ফাইল সেভ করবেন তার অর্ধেক নাম থাকবে বাংলায় অর্ধেক ইংরেজীতে এবং অর্ধেক আরবীতে - এটা শুধুমাত্র সম্ভব ইউনিকোডে, ফন্ট না বদলে।

ইউনিকোড উপস্থাপনা
আজ থেকে একশ বছর আগে কিভাবে পত্রিকা প্রকাশিত হত? তখনকার দিনে বিভিন্ন ভাষার বিভিন্ন ফন্ট এবং সাইজের জন্য বিভিন্ন বাক্স থাকত। মনে করুন ইংরেজীর জন্য বাক্স ক, বাংলার জন্য বাক্স খ, ইত্যাদি। তখন "black কাক" লিখতে তারা হরফ বসাতো পাশাপাশি এইভাবে: ক২,ক১২,... খ১,খ৩৪,খ১। মনে করুন কোন অক্ষরের পর কোন অক্ষর বসাবে এই ধারাটা নিয়ে একজন ভারতে গেল। কিন্তু ভারতের প্রকাশকরা খ বাক্স ব্যবহার করে হিন্দীর জন্য। তখন কি ভজঘট পাকিয়ে যাবে চিন্তা করুন।

unicode









ইউনিকোড কনসোর্টিয়াম নামের একটি প্রতিষ্ঠান করল কি এরকম বিভিন্ন ভাষার যত রকম বাক্স আছে, সব একসাথে একটা বড় বাক্সের অর্ন্তভুক্ত করল (চিত্র ১)। এতে করে "black কাক" লিখতে আপনাকে লিখতে হবে 2,12,...,10000,10034,10000 ইত্যাদি। এইভাবে একটি সার্বজনীন পদ্ধতি তৈরীর মাধ্যমে বিশ্বের যে কোন জায়গায় এটাকে "blackকাক" হিসেবেই চিনবে, অন্য কিছু নয়।

ইউনিকোড কিবোর্ড লেআউট
এখন মনে করুন সারা পৃথিবীর মোট পঞ্চাশ হাজার (ধরে নিন) অক্ষরের জন্য কিবোর্ডে একটি করে চাবি বসানো হল। তাহলে কিবোর্ডের সাইজ কি হবে? তাই কিবোর্ডে ভাষা পরিবর্তনের একটি প্রথা প্রর্বতন করা হল। এতে করে আপনি আপনার কিবোর্ড এর ভাষা পরিবর্তন করে একটি ভাষার উপর কাজ করতে পারবেন।

ইউনিকোড প্রবর্তনের সময় থেকে বিভিন্ন ভাষায় বিভিন্ন রকম সমস্যা দেখা দিতে লাগল। ইউনিকোড সময়ের সাথে সাথে সেগুলোর সমাধানও করে আসতে লাগল। যেমন আরবী ভাষার ডান-থেকে বাম দিকে লেখার সমস্যা, কিংবা চীনা ভাষার খাড়াখাড়ি লেখার সমস্যা ইত্যাদি। এশিয়ার ভাষাগুলোকে এজন্য জটিল ভাষা বা কম্প্লেক্স স্ক্রীপ্ট বলা হয়। আমি এখন শুধু মাত্র ইন্ডিক এবং বাংলা ভাষার ইউনিকোড ভিত্তিক সমস্যা গুলো আলোচনা করব।

সর্ট অর্ডার
কম্পিউটারের জন্য সর্ট এবং সার্চ করাটা খুব গুরুত্বপূর্ণ ব্যাপার। বলা যায় কম্পিউটারের ভিত্তি এই সর্টিং এবং সার্চিংয়ের উপরই দাঁড়িয়ে আছে। তাই অক্ষরগুলোকে এমন ভাবে উপস্থাপন করতে হবে যেন তা এই সর্টিং এবং সার্চিংয়ের বিপরীতে বাঁধা না হয়।সমস্যা হল, বাংলায় ক এর পর আসে খ, কিন্তু এদের মাঝখানে আবার কা, কু, কি এসব আসে। বিষয়টা আরো জটিল করতে আ-কার, ও-কার এসব অক্ষর আবার সামনে বসে। তাই ইউনিকোড কর্তা ব্যাক্তিরা ঠিক করলেন সর্ট অর্ডার ঠিক করার জন্য কোন 'কার' ব্যাঞ্জনবর্ণের আগে বসতে পারবে না।

এর ফলে কার দেখানোর যে সমস্যা তৈরী হবে তা অন্যভাবে সমাধান করা হবে।প্রাথমিক ইউনিকোডে 'কার' গুলো পরে বসত ঠিকই
কিন্তু তা স্ক্রীনে দেখানোর আগে কোন রকম ঠিকঠাক করা হত না। যার ফলে পুরোনো ইউনিকোড কম্পিউটারে 'কে' দেখবেন এভাবে 'ক ‌ে'।
ঠিক একই কারনে ও-কার কে একার এবং আকার হিসেবে না রেখে একটা স্বতন্ত্র অক্ষর হিসেবে স্থান দেয়া হয়েছে।

সঠিক ভাবে দেখানো
সর্ট অর্ডারতো ঠিক হলো। এখন এ-কার, ও-কার গুলোকে কিভাবে দেখানো হবে? তার উপর, এ-কারে যখন শব্দের মাঝখানে বসে তখন তার কোন মাত্রা থাকে না, আবার শব্দের শুরুতে যখন বসে তখন একটা মাত্রা থাকে। যুক্তাক্ষর গুলো স্বতন্ত্র কোন অক্ষর নয়। অথচ সেগুলো ঠিকঠাক মতো দেখাতে হবে।

অক্ষরগুলোকে নিয়ে ঠিকঠাক ভাবে দেখানোটাকে বলা হয় ক্যারেক্টার রেন্ডারিং। রেন্ডারিংয়ের মাধ্যমেই আসলে ক্যারেক্টার কোনটা কিভাবে বসবে সেটা ঠিক করা হয়।

খন্ড-ত ইস্যু
প্রাথমিক ইউনিকোডে খন্ড-ত কে স্বতন্ত্র অক্ষর হিসেবে ধরা হয় নি। একে ত-হস হিসেবে ধরা হয়েছিল। তাই যখনই ত-হসন্ত দেখা যেত তখনই সেটা ভুল ভাবে খন্ড-ত হয়ে যেত। সম্প্রতি খন্ড-ত কে আলাদা অক্ষরের মর্যাদা দেয়া হয়েছে। তাই ইউনিকোড ভিত্তিক নতুন ফন্টগুলোতে এই সমস্যার সমাধান দেখতে পাবেন।

রেফ এবং য-ফলা ইস্যু
র-হসন্তের পর কোন ব্যাঞ্জনবর্ণ আসলে সেটা ব্যাঞ্জনবর্ণের উপর রেফ হয়ে যায়। আবার ব্যাঞ্জনবর্ণের পর য-ফলা আসল সেটা ব্যাঞ্জনবর্ণের য-ফলা হয়। কিন্তু র-হসন্তের পর য-ফলা আসলে সেটা 'র্য' হতে পারে আবার 'র‌্য' ও হতে পারে। ডিফল্ট হিসেব এটা 'র্য' হিসেব বর্তমানে দেখানো হয়। এর সমাধান হিসেবে অনেকে দাবী করেছেন য-ফলাকে খন্ড-ত এর মত একটা আলাদা বর্ণ হিসেবে মর্যাদা দেয়া হোক। কিন্তু ইউনিকোড কর্তাব্যক্তিরা সেটা মানতে রাজি হননি।

এই সমস্যাটা আরো অনেক ইন্ডিক ভাষায় আছে। সবার জন্য নতুন অক্ষর ঢুকাতে গেলে এর মধ্যে বিশাল হয়ে যাওয়া ইউনিকোড আরো বিশাল হয়ে যাবে।ইউনিকোড কর্তাব্যক্তিরা এর একটা অন্য সমাধান দিয়েছেন। তার দুটো অক্ষর ব্যবহার করতে বলেছেন। একটা হলো, 'জোর করে জুড়ে দাও' - zero width joiner (ZWJ) এবং আরেকটি হল 'জোর করে জুড়ে দেয়া বিরত রাখ' - zero width non joiner (ZWNJ)। তাই র-হসন্ত-য কে র‌্য হিসেবে দেখতে র এর পর আপনাকে য-ফলার সাথে জুড়ে দেয়া বন্ধ করতে হবে। অর্থাৎ র-ZWNJ-হসন্ত-য টাইপ করতে হবে।

দাঁড়ি এবং ডাবল-দাঁড়ি ইস্যু (বানান ভুল লেখলাম কি?)
বাংলার ইউনিকোড প্রস্তাবনায় কোন দাঁড়ি নেই। ইউনিকোড কর্তা ব্যাক্তিরা সম্ভবত: আসামীয় বা অন্য কোন ভাষার 'ডান্ডা' ব্যবহার করতে পরামর্শ দিয়েছেন। এটা পছন্দ হয়নি বাঙ্গালী যারা ইউনিকোডের সাথে কাজ করছেন। তারা এখনও দাবী জানিয়ে যাচ্ছেন নিজেদের একটা দাঁড়ি এবং একটা ডবল-দাঁড়ির জন্য।

আশা করি এই পোস্ট আপনার অনেক 'কেন'র উত্তর দিবে।


(বিজ্ঞানী.কমে প্রথম প্রকাশিত)

আমার সর্ম্পকে

  • আমি
  • আমি থাকি
আমার প্রোফাইল

অন্যান্য ব্লগ