মানুষের বলা শব্দগুলো AI বোঝে কীভাবে ? wordNET এবং word2vec

word2vec vectorization transformer AI MT Machine Translation Bangla AI Explain
মানুষের বলা শব্দগুলো AI বোঝে কীভাবে ? wordNET এবং word2vec

আমরা যখন গুগল করি, বা ফোনের কিবোর্ডে পরের শব্দটি কী লিখব তার সাজেশন পাই, তখন মনে হয় কম্পিউটার মনেহয় আমাদের ভাষাটা সত্যি সত্যি বুঝে ফেলেছে। কিন্তু একটা যন্ত্র, একটা জড়বস্তু, সে কীভাবে ‘ভালোবাসা’ আর ‘ঘৃণা’র তফাৎ বোঝে? বা কীভাবেই বা জানে যে ‘প্রেমিক’ আর ‘প্রেমিকা’র মধ্যে সম্পর্ক আছে?

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

প্রথমেই আসি পুরনো পদ্ধতিতে, যার নাম 'ওয়ার্ডনেট' (WordNet)

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

এটাকে একটা 'শব্দ-ভাণ্ডার' বলতে পারেন। এই ভাণ্ডারে কয়েক ধরনের সম্পর্ক খুব বিখ্যাত।

যেমন, 'সমার্থক শব্দ' (Synonym)। এটা আমরা সবাই জানি। মানে, একই অর্থ বোঝায় এমন শব্দ। ওয়ার্ডনেটকে বলে দেওয়া হলো:

  • 'গাড়ি' মানে যা, 'মোটরগাড়ি' মানেও তাই।
  • 'সুন্দর' মানে যা, 'মনোরম' বা 'সুশ্রী' মানেও কাছাকাছি।
  • 'বাড়ি' মানেই 'গৃহ' বা 'আবাস'।

এটা তো সহজ। কিন্তু ওয়ার্ডনেট আরও এক ধাপ এগিয়ে গেল। সে শব্দের 'প্রকারভেদ' বা 'দল-সদস্য' সম্পর্কও তৈরি করলো। টেকনিক্যাল ভাষায় একে 'হাইপোনিম' (Hyponym) বলে, কিন্তু আমরা সহজ করে বুঝি।

ধরুন, 'ফুল' একটা বড় দল বা ক্যাটাগরি।

  • এই 'ফুল' দলের সদস্যরা হলো: 'গোলাপ', 'জবা', 'বেলি', 'শাপলা'।
  • একইভাবে, 'পশু' একটা বড় দল। তার সদস্যরা হলো: 'বাঘ', 'সিংহ', 'কুকুর', 'বিড়াল'।
  • আবার ধরুন 'রঙ' হলো দল। তার সদস্যরা: 'লাল', 'নীল', 'সবুজ'।

ওয়ার্ডনেট এভাবেই লাখ লাখ শব্দকে একটা আরেকটার সাথে বেঁধে ফেলে। 'কুকুর' হলো এক ধরনের 'পশু', 'পশু' হলো এক ধরনের 'প্রাণী'। পুরো একটা বংশলতিকার মতো।

wordnet

কিন্তু এই পদ্ধতির কিছু বড়সড় সমস্যা আছে।

  • প্রথমত, এটা হাতে হাতে তৈরি করতে হয়। ভাষাবিদরা বসে বসে এই সম্পর্কগুলো ঠিক করেন। এটা বিশাল খাটুনির কাজ, সময়সাপেক্ষ আর ব্যয়বহুল।

  • দ্বিতীয়ত, ভাষা তো থেমে থাকে না। প্রতিদিন নতুন শব্দ আসছে। 'সেলফি', 'ভ্লগ', 'ট্রল' এই শব্দগুলো ওয়ার্ডনেট চিনবে কীভাবে? যতক্ষণ না কেউ এগুলোকে আবার হাতে ধরে যোগ করছে, ততক্ষণ চেনার উপায় নেই।

  • তৃতীয়ত, এবং সবচেয়ে বড় সমস্যা হলো, ওয়ার্ডনেট শব্দের আসল 'মেজাজ' বা 'প্রসঙ্গ' বোঝে না।

যেমন, 'গরম' শব্দটা ভাবুন।

  • "ভীষণ গরম পড়েছে" (তাপমাত্রা)
  • "লোকটার মাথাটা গরম" (রাগী)
  • "এটা এখন গরম খবর" (আলোচিত)

ওয়ার্ডনেট এই সূক্ষ্ম পার্থক্যগুলো ধরতে পারে না। সে শুধু জানে 'গরম' মানে 'উষ্ণ'।

এইখানেই এলো নতুন জাদুকর। তার নাম 'ওয়ার্ডটুভেক' (Word2Vec)

এই পদ্ধতিটা ঠিক উল্টো। সে বললো,

"আমাকে কোনো অভিধান বানিয়ে দিতে হবে না। আমাকে শুধু পড়তে দাও।"

ওয়ার্ডটুভেকের মূলমন্ত্র হলো: "একটা শব্দকে চেনা যায় তার আশেপাশের শব্দগুলো দিয়ে।" (You shall know a word by the company it keeps.)

ব্যাপারটা বুঝিয়ে বলি।

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

সে দেখলো:

  • "রাজা সিংহাসনে বসলেন।"
  • "রানী মুকুট পরলেন।"
  • "রাজা রাজ্য শাসন করেন।"
  • "রানী খুব দয়ালু ছিলেন।"

আবার সে দেখলো:

  • "আমি ভাত খাচ্ছি।"
  • "সে রুটি খাচ্ছে।"

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

কিন্তু 'রাজা' বা 'রানী' কেউই 'ভাত' বা 'রুটি'র মতো করে 'খাওয়া'র সাথে সম্পর্কিত নয়।

এই সম্পর্কের ওপর ভিত্তি করে ওয়ার্ডটুভেক প্রত্যেকটা শব্দের জন্য একটা 'ঠিকানা' বা 'ম্যাপ' তৈরি করে। এটা আসলে কতগুলো সংখ্যার সেট (গণিতের ভাষায় ভেক্টর)। এই ম্যাপটা খুব অদ্ভুত।

এই ম্যাপে, যে শব্দগুলোর অর্থ বা ব্যবহার কাছাকাছি, তাদের ঠিকানাগুলোও কাছাকাছি হয়। যেমন, 'কুকুর', 'বিড়াল', 'খরগোশ'—এরা সবাই ম্যাপের একটা কোণায় একসাথে থাকবে। 'টেবিল', 'চেয়ার', 'আলমারি'—এরা আরেকটা কোণায় থাকবে। কিন্তু 'কুকুর' আর 'আলমারি'র ঠিকানা হবে দুই মেরুতে।

clustering

মজাটা শুরু হয় এর পরে। এই ম্যাপটা এত ভালো যে এটা শুধু কাছাকাছি থাকাই বোঝে না, সম্পর্কের 'দিক'ও (direction) বোঝে।

যেমন, 'রাজা' থেকে 'রানী'র দিকে যেতে ম্যাপে যেটুকু রাস্তা যেদিকে যেতে হয়; 'পুরুষ' থেকে 'নারী'র দিকে যেতেও ঠিক একই পরিমান রাস্তা একই দিকে যেতে হয়!

addressing

কম্পিউটার তখন এমন অদ্ভুত গণিত করতে পারে:

(রাজার ঠিকানা) - (পুরুষের ঠিকানা) + (নারীর ঠিকানা) = (রানীর ঠিকানা)

এই আবিষ্কারটা কৃত্রিম বুদ্ধিমত্তার জগতে বিপ্লব এনে দিয়েছিল। কারণ, এই প্রথম কম্পিউটার কোনো মানুষের সাহায্য ছাড়া, নিজে নিজে, শুধু লেখা পড়েই শব্দের 'ধারণা' বা 'প্রসঙ্গ' বুঝতে শিখলো।

সে বুঝতে পারলো 'গরম' (তাপমাত্রা) আর 'গরম' (রাগী) এক জিনিস নয়, কারণ তাদের আশেপাশের শব্দগুলো (company) সম্পূর্ণ আলাদা।

আজ আমরা যে গুগল ট্রান্সলেট ব্যবহার করি, বা জিমেইল যে আমাদের হয়ে উত্তরের পরামর্শ দেয়, তার সবকিছুর পেছনেই আছে ওয়ার্ডটুভেকের এই 'প্রসঙ্গ থেকে শেখা'র ধারণাটা।

তো, সংক্ষেপে, ওয়ার্ডনেট হলো একটা গোছানো লাইব্রেরি, যেখানে প্রতিটি বইয়ের ট্যাগ লাগানো আছে। আর ওয়ার্ডটুভেক হলো সেই ছাত্র, যে লাইব্রেরির সব বই পড়ে নিজে নিজেই নোট তৈরি করে ফেলেছে।

Share this article

Sakhawat Adib

Written by Sakhawat Adib

I'm a Software Engineering undergraduate at IUT passionate about AI/ML/DL research. Love to read academic discoveries. Would love to spread the knowledge of science throughout the world.

Get an email whenever Sakhawat Adib publishes.

References

[1]

WordNet: A Lexical Database for English

Miller, George A. · 1995
[2]

Efficient Estimation of Word Representations in Vector Space

Tomas Mikolov and Kai Chen and Greg Corrado and Jeffrey Dean · 2013
Read the paper
[3]

Distributed Representations of Words and Phrases and their Compositionality

Tomas Mikolov and Ilya Sutskever and Kai Chen and Greg Corrado and Jeffrey Dean · 2013