একটা বড় সময় পর্যন্ত কোন কাজে স্ট্যাটিস্টিকাল মডেলিং এপ্লাই করতে গেলে লোকে হাতে ধরে ক্রাইটেরিয়া বের করতো, ডেটা অ্যানালাইসিস করে দেখতো কোন ক্রাইটেরিয়াগুলো এপ্লাই করলে তারা মনমতো রেজাল্ট পাচ্ছে। আজকে AI বলতে গেদুরা যেমন বড়সড় কমপ্লেক্স নিউরাল নেটওয়ার্ক আর্কিটেকচার বুঝে, সেগুলো তখন হয় রুল বেজড ছিল কিংবা যেটা বললাম যে ক্রাইটেরিয়া বের করে ডেটা মডেল করতো। তখন না ডেটার সাইজ বড় ছিলো, না ক্রাইটেরিয়া খুব বেশি ছিলো। আজকাল ডেটার যে বিঘত সাইজ আর যে পরিমাণ চাহিদা মানুষের , সে হোক রিকোমেন্ডেশন সিস্টেম কিংবা প্রোডাক্ট রিভিউ অ্যানালিসিস কিংবা ChatGPT এর মতন সিস্টেম, তাতে আর যাই হোক, রুল বেজড কিংবা অ্যানালাইসিস নির্ভর ক্রাইটেরিয়া সার্চ বেশ দুঃসাধ্য ব্যাপার। এখন প্রশ্ন করতে পারো, আচ্ছা ক্রাইটেরিয়া বা রুলগুলো তো ডেটা থেকেই বের করতো তাই না! তাহলে এই ক্রাইটেরিয়া কিংবা ফর্মালি বলতে গেলে ফিচার, বের করার কাজটা অটোমেট করা যায় না? এই প্রসেসটার একটা গালভরা নাম আছে - হিউরিস্টিক লার্নিং। স্ট্যাটিস্টিক্সের ভাষায় বলতে গেলে, সব ডেটায় একটা ডিস্ট্রিবিউশন থাকে, যেটা দিয়ে ডেটার ক্যারেক্টারিস্টিক বেশ ভালোভাবে আন্দাজ করা যায়। (যারা জীবনে একটা স্ট্যাটিস্টিক্সের কোর্স ও অ্যাটেন্ড করেছো, তাদের প্রোবাবিলিটি ডিস্ট্রিবিউশন, পপুলেশন মিন, স্যাম্পল মিন, স্যাম্পলিং এই টার্মগুলো জানার কথা।)
এখন কথা হচ্ছে আমি এতকিছু থাকতে স্ট্যাটিস্টিক্স নিয়ে পড়লাম কেন ? ChatGPT তো ফরফর করে প্রশ্নের উত্তর দেবার বেলায় এত কঠিন টার্মিনোলজি ইউস করে না! এর সাথে NLP এর সম্পর্ক কি ? তো যারা সবেমাত্র AI নিয়ে ঘাটাঘাটি শুরু করেছো কিন্তু মেশিন লার্নিং, ডিপ লার্নিং রিইনফোর্সমেন্ট লার্নিং এতসব টার্ম দেখে খাবি খাচ্ছো, তাদের জ্ঞাতার্থেঃ যখন তুমি নিজে ক্রাইটেরিয়া বের মেশিনকে শিখাবা সেটা মেশিন লার্নিং। যখন তুমি কুল পাচ্ছো না কি ক্রাইটেরিয়া সেট করবা এবং মেশিন থেকে ফাইনালি কি আউটপুট চাও সেটা ভালো করে জানো তখন সেটা ডিপ লার্নিং। ফাইনালি, তোমার হাতে ডেটা আছে, মেশিন হাইওয়েতে, সামনে এনা বাস - বাঁচলে মডেলের জন্য পজিটিভ এক্সপেরিয়েন্স, নাইলে পটল, তুমি জানো না আদতে কি হবে - রিইনফোর্সমেন্ট লার্নিং। এবং, এই সবগুলোকে স্ট্যাটিস্টিকাল লার্নিং মেথড বলে। এদের কাজ হচ্ছে তোমাকে ডেটার হালহকিকত জানার জন্য দরকারি ম্যাথেমেটিকাল টুল সাপ্লাই দেয়া। গণিত করতে গেলে যেমন থিওরেম বুঝে সেটা নতুন ইউস কেসে এপ্লাই করতে হয়, ওমন।
—
বাদবাকি সব ফিল্ডের মতন, NLP তেও একটা বড় সময় পর্যন্ত রুল বেজড এবং ফিচার ইঞ্জিনিয়ারড (হাতে ফিচার বের করা) মেথডগুলোই সর্বেসর্বা ছিলো। NLP তে ডিপ লার্নিং এর ইন্ট্রোডাকশন অন্যান্য ফিল্ড যেমন কম্পিউটার ভিশনের তুলনায় অনেক দেরিতে হয়েছে। এজ এ ফিল্ড, NLP এর কিছু ফান্ডামেন্টাল প্রবলেম আছে, যেগুলো সামলানোর মতন ডিপ লার্নিং টেকনিক লোকের হাতে ছিলো না । আজকে যেমন এত নিউরাল নেটওয়ার্ক আর্কিটেকচার দেখো, সবগুলো তখন ল্যাঙ্গুয়েজ স্পেসিফিক কাজে ভালো রেজাল্ট দিতো না । যেমন ডিপেন্ডেন্সি পার্সিং, সিম্যান্টিক রোল লেবেলিং এসব কাজে এখনো অল্প বিস্তর রুল বেজড টেকনিক খাটানো লাগে । মানুষের ভাষা বলতে বুঝতে সহজ কিন্তু সেটার জন্য একটা ম্যাথেম্যাটিকাল মডেল দাঁড় করানো বড়ই কঠিন কাজ। তাও আবার যখন পৃথিবীর একেক এলাকার মানুষের ভাষা একেকটা। চাইনিজের সাথে বাংলা মিলে না, বাংলার সাথে স্প্যানিশ মিলে না; কিছু ভাষায় একাধিক ফর্ম আছে, যেমন নরওয়েজিয়ান ভাষায় স্পোকেন আর রিটেন ফর্ম আলাদা (নাইনর্স্ক, বকমাল)। আবার একই ভাষায় একাধিক ডায়ালেক্ট থাকে, যেমন বাংলাদেশের সিলেট অঞ্চলের বাংলা আর চাঁটগার বাংলার মধ্যে বিস্তর তফাৎ। এরপর এই ম্যাস গ্লোবালাইজেশনের যুগে মানুষ কি আর শুধু নিজের ভাষায় কথা বলে? তারা নিজের ভাষার সাথে আরো দু চারটা ভাষা জোড়া দিয়ে নেয়, যেমন বাংলিশ (এই জিনিসটাকে ফর্মালি কোড সুইচিং বলে) । তো এত কমপ্লেক্স সিনারিওতে যদি সবাই মিলে রুল বের করতে বসে, তাহলে আর আমাদের কোনদিন প্র্যাকটিকাল কোন সিস্টেম বানানো লাগবে না। বসে আজীবন রুল আর ফিচার ই বের করতে হবে। যেমন পেন ট্রিব্যাংক বানাতে ১৯ বছরের বেশি সময় লেগেছে, তাও সেখানে হেনতেন লোক কাজ করেনি। ইংরেজি ভাষাতত্ত্বের উপর যত এক্সপার্ট লোকজন আছে সবাই মিলে কাজ করেছে। (তুমি যদি ট্রিব্যাংক কি জিনিস সেটা ভেবে মাথা চুলকাতে থাকো তাহলে - ট্রিব্যাংক হচ্ছে একটা বিশাল বড় ডেটাবেজ, যেটায় ভাষার কোন নির্দিষ্ট শব্দের স্থান কাল পাত্রভেদে অর্থ, ব্যবহার, সমার্থক শব্দ ইত্যাদি ডিফাইন করা থাকবে) তো এই যখন অবস্থা, তখন ডিপ লার্নিং এর শরণাপন্ন হওয়াই কি বুদ্ধিমানের কাজ নয় ? এজন্য আজকাল যেসব NLP সিস্টেম দেখো, ম্যাক্সিমাম ই ডিপ লার্নিং বেজড সিস্টেম।
NLP তে ডিপ লার্নিং ইউস করার পেছনে সবচে বড় মোটিভেশন হচ্ছে ল্যাঙ্গুয়েজের ইনহেরেন্ট ডিস্ট্রিবিউশন বের করা। ইনফ্যাক্ট এর জন্য কম্পিউটেশনাল লিঙ্গুইস্টিক্স এ একটা ডেডিকেটেড ফিল্ড আছে “ডিস্ট্রিবিউশনাল সিম্যান্টিক্স ” নামে। এখানে মূল ধারণাটুকু হচ্ছে এই যে ভাষার বিবর্তন কোন ব্যাকরণের নিয়ম ধরে হয় না। বরং মানুষ ক্রমাগত ভাষা ব্যবহার করতে করতে ভাষার সুরত বদলে দেয়। আজ থেকে ২০০ বছর আগে লোকে যে বাংলা বলতো, আজ সেরকম বাংলা কেউ বলবে না। কেউ যদি শেক্সপিয়ারের ইংরেজি থিয়েটারের বাইরে বলে, লোকে তাকে পাগল বলবে। কগনিটিভ সায়েন্সের একটা খুব ফ্যাসিনেটিং প্রবলেম হচ্ছে মানুষ কীভাবে ভাষা ব্যবহার করে, শিখে এবং শেষমেশ ভাষা বদলে ফেলে সেটা বুঝার চেষ্টা করা। মানুষ যখন অনর্গল কথা বলে যায়, তখন তাদের ব্যাকরণ জানা লাগে না । যে কোনদিন পড়ালেখা করেনি সেও নিজের ভাষায় কথা বলতে পারে। মানুষের ব্রেইন তার নিজের ভাষার জন্য একটা ডিস্ট্রিবিউশন শিখে নেয়, এবং কাজের সময় সেটা ইউস করে। এবং এই ডিস্ট্রিবিউশনটাই ব্রেনকে সাহায্য করে কোন শব্দের পর কোন শব্দ বলতে হবে সেটা বের করতে। নিচের দুইটা প্যারাগ্রাফ দেখো, কোনটার অর্থ বের করা সহজ ?
The château fort de Lourdes is a historic castle located in
Lourdes in the department of
Hautes-Pyrénées, France. It is strategically placed at the
entrance to the seven valleys
of the Lavedan. The castle's origins go back to Roman times,
but today the oldest
remains date from the 11th and 12th centuries
and consist of the foundations of the present fortifications.
the The department fortifications. the and remains Lourdes
placed the to Lourdes It date 11th château seven oldest origins
from of historic times, and castle's strategically Hautes-Pyrénées,
located the centuries but of a The go the today foundations France.
Lavedan. castle de fort the consist is of in 12th Roman in the at to
valleys back is present of entrance the
দ্বিতীয় প্যারাগ্রাফটায় প্রথম প্যারাগ্রাফের শব্দগুলোই আছে কিন্তু ওয়ার্ড অর্ডার উলট পালট করে দেয়া । প্রথমটার অর্থ বের করা সহজ। কেন সহজ ? কারণ ইংরেজি শেখার সময় তুমি ডিস্ট্রিবিউশনটা ওভাবেই আয়ত্ব করেছো। অর্থাৎ, পাশাপাশি শব্দ জোড়া দিলেই হবে না। তাদেরকে কিছু প্রোপার্টি মেনে চলতে হবে। এই প্রোপার্টিটা সবসময় ব্যাকরণ দিয়ে ডিফাইন করা যায় না, যেহেতু ভাষার বিবর্তন ব্যবহারের উপর নির্ভরশীল। সমস্যা। সমাধান কি ? সমাধান হচ্ছে এই যে, আমরা যখন কথা বলি, লেখি, পড়ি, পুরো প্রসেসটা একটা চেইনের মতন। এখানে একটা অর্ডার আছে। আমি ধুপ করে একটা শব্দ বলে বসবো না । আমি যদি আগে ১০ তা শব্দ বলে থাকি, তাহলে পরের শব্দটাও ওই আগের ১০ তার সাথে কোন না কোনভাবে রিলেটেড হবে। এই ব্যাপারটাকে ভাষার ডিস্ট্রিবিউশনাল প্রোপার্টি বলে। আজকে যে বিঘত সাইজের ল্যাঙ্গুয়েজ মডেল (LLM), সবগুলোর মূল কাজ হচ্ছে ইয়া বড় সব করপাস (ডেটাসেট) থেকে ডিস্ট্রিবিউশনাল প্রোপার্টি বের করতে পারা। আমার মতে ডিস্ট্রিবিউশনাল প্রোপার্টি কি সেটা সবচে সুন্দর করে বলেছিলেন J.R. Firth (1957),
You shall know a word by the company it keeps!
এখন ডিস্ট্রিবিউশনাল প্রোপার্টির সাথে ডিপ লার্নিং এর সম্পর্ক কি? এত কথার মাঝে যদি ভুলে গিয়ে না থাকো, ডিপ লার্নিং হিউরিস্টিক মডেল করে। মানে তুমি ডেটা দিলে সে ডেটা থেকে ডিস্ট্রিবিউশন শিখবে, এরপর যা শিখেছে সেটা এপ্লাই করে নতুন ডিস্ট্রিবিউশন এস্টিমেট বা প্রেডিক্ট করতে পারবে ( বাই দা ওয়ে এটা শুধু NLP এর জন্য না, তাবৎ দুনিয়ার যত জায়গায় তুমি কোন না কোন স্ট্যাটিস্টিকাল মেথড এপ্লাই করতে পারবে তার সবখানেই একই প্রিন্সিপাল মেইনটেইন করবে)। তো NLP তে ডিপ লার্নিং এপ্লাই করা হয় এই জন্য যাতে এই সব ভারী ভারী মডেল ডিস্ট্রিবিউশনাল প্রোপার্টি মডেল করে এবং সেটা কাজে লাগিয়ে ভাষার নতুন প্রোপার্টি এস্টিমেট করতে পারে ।
—
এতক্ষণে তুমি মাথা চুলকে বলে ফেলতে পারো, আমি যদি অতশত ভাষা নিয়ে কাজ না করি, শুধু বাংলা কিংবা শুধু ইংরেজি নিয়ে অ্যানালাইসিস করি, আমার কি ডিপ লার্নিং এর দরকার আছে ? সেখানে আমি হাতে নাহয় ফিচার বের করে নিবো । হ্যাঁ তুমি পারবে কিন্তু এখানে অনেক কিন্তু আছে। তুমি কি সব ফিচার বের করতে পারবে ? তোমার ফিচারগুলো কি ভাষার নতুন প্রোপার্টি প্রেডিক্ট করতে পারবে? ডেটাসেট খুব বড় হলে ? এগুলো তো থিওরেটিকাল কনসার্ন। ইমপ্লিমেন্ট করতে গেলে কি ঝামেলা হতে পারে ? এই প্রশ্নটার উত্তর আমি পরের পোস্টে দিবো। কারণ এইটা মোটা দাগে একটা ইঞ্জিনিয়ারিং কোয়েশ্চন। আমি হেনতেন অনেক করে ফেললাম কাগজে কলমে কিন্তু কাজের বেলায় গিয়ে দেখি কিছুই করা যাচ্ছে না এরচে বড় মসিবত আর নেই । পরের পোস্টে আমি একটা ছোট ল্যাঙ্গুয়েজ মডেল বানিয়ে দেখাবো কেন ডিপ লার্নিং আসলে লাগে । (না ঐটায় কোন ডিপ লার্নিং ইউস করবো না, ডিপ লার্নিং আসার আগে মানুষ ক্যামনে কাজ করতো সেইটা দেখাবো)