Home »
Blog »
AI/ML Engineer সিরিজ » Series 07 » Episode 03
Word Embeddings: শব্দ কীভাবে সংখ্যার জগতে 'অর্থ' পায়
vector space ও semantic similarity (Series 07, Episode 03)
🟡 INTERMEDIATE
Series 07 — NLP, Transformers ও LLM
Episode 03 / 08
📑 এই পর্বে যা যা আছে
- ১. গল্প: "job" আর "চাকরি" এক নয়?!
- ২. সমস্যা: TF-IDF অর্থ বোঝে না
- ৩. Embedding কী — মূল ধারণা
- ৪. তিন স্তরে embedding
- ৫. Vector space ও বিখ্যাত king − man + woman
- ৬. Visual: শব্দ কীভাবে space-এ বসে
- ৭. Semantic similarity ও cosine similarity
- ৮. Code: pretrained embedding দিয়ে similarity
- ৯. Experiment: synonym খুঁজে বের করা
- ১০. embedding ≠ LLM (গুরুত্বপূর্ণ পার্থক্য)
- ১১. বাস্তব উদাহরণ ও AI Engineer perspective
- ১২. Boss Question
- ১৩. Job Requirement Decoder: "Embeddings"
- ১৪. সাধারণ ভুল
- ১৫. Interview Prep
- ১৬. হাতে-কলমে ও Project Connection
- ১৭. সারসংক্ষেপ ও পরবর্তী পর্ব
🧩 ১. গল্প: "job" আর "চাকরি" এক নয়?!
গত পর্বে Rahim TF-IDF দিয়ে একটা সুন্দর JD-matching feature বানাল। কিন্তু test করতে গিয়ে সে
হতভম্ব — একটা JD-তে লেখা "python developer", আরেকটাতে "python programmer"। তার similarity score
প্রায় শূন্য! অথচ আমরা সবাই জানি developer ≈ programmer।
Rahim: "আপা, TF-IDF তো 'developer' আর 'programmer'-কে সম্পূর্ণ আলাদা ধরছে। কিন্তু এগুলো তো একই জিনিস!"
Nila: "হ্যাঁ, কারণ TF-IDF শব্দকে শুধু একটা column-এর index হিসেবে দেখে — অর্থ (meaning) বোঝে না।
computer-কে অর্থ শেখাতে হলে আমাদের শব্দকে এমন সংখ্যায় বসাতে হবে যেখানে কাছাকাছি অর্থের শব্দ
কাছাকাছি বসে। এই ধারণাটাই word embedding — আধুনিক NLP-র সবচেয়ে গুরুত্বপূর্ণ ভিত্তি।"
❓ ২. সমস্যা: TF-IDF অর্থ বোঝে না
TF-IDF-এ প্রতিটা শব্দ একটা আলাদা column। "developer" column 5, "programmer" column 137 — এদের মধ্যে কোনো
সম্পর্ক নেই। এই representation-কে বলে one-hot / sparse — বেশিরভাগ ঘর শূন্য, আর কোনো
দুটো শব্দের মধ্যে "কাছাকাছি অর্থ" ধরার উপায় নেই।
আমরা চাই dense vector — যেখানে প্রতিটা শব্দ কয়েকশো সংখ্যার একটা ছোট vector, আর অর্থে
কাছাকাছি শব্দের vector গণিতিকভাবেও কাছাকাছি। এটাই embedding।
🧭 ৩. Embedding কী — মূল ধারণা
Embedding হলো একটা শব্দ (বা বাক্য/document)-কে fixed-size dense vector-এ রূপান্তর, যেখানে
সেই সংখ্যাগুলো শব্দের অর্থ ধারণ করে। এই vector গুলো model নিজে বিশাল text data থেকে
শিখে নেয় — মূল ধারণা: "একটা শব্দকে চেনা যায় তার সঙ্গী শব্দ দিয়ে" (distributional hypothesis)।
one-hot (TF-IDF যুগ):
"developer" = [0,0,0,1,0,0, ... ,0] (10,000 ঘর, একটাই 1)
"programmer" = [0,0,0,0,0, ...,1,0] (সম্পর্কহীন)
embedding (dense):
"developer" = [0.21, -0.44, 0.87, ...] (300 সংখ্যা)
"programmer" = [0.19, -0.41, 0.85, ...] (প্রায় কাছাকাছি!)
🪜 ৪. তিন স্তরে embedding
Level 1 — সহজ intuition:
ধরুন একটা মানচিত্র যেখানে প্রতিটা শব্দ একটা বিন্দু। "রাজা" আর "রানী" পাশাপাশি, "আম" আর "কলা"
পাশাপাশি, কিন্তু "রাজা" আর "কলা" অনেক দূরে। embedding মানে এই "শব্দের মানচিত্র" — অর্থ যত কাছে, বিন্দু তত কাছে।
Level 2 — technical:
প্রতিটা শব্দ একটা vector (যেমন ৩০০-মাত্রার)। Word2Vec, GloVe-এর মতো algorithm বিশাল corpus-এ শব্দের
আশপাশের context দেখে এই vector শেখে। ফলে সমান context-এ আসা শব্দগুলোর vector কাছাকাছি হয়।
Level 3 — AI Engineer perspective:
এখন আমরা সাধারণত static word embedding (Word2Vec) নিজে train করি না। আমরা sentence embedding
model (যেমন sentence-transformers) ব্যবহার করি যা পুরো বাক্যের একটা vector দেয় —
এটাই semantic search, RAG (S08), আর recommendation-এর ভিত্তি। এটাই বেশিরভাগ AI Engineer-এর দৈনন্দিন কাজ।
👑 ৫. Vector space ও বিখ্যাত king − man + woman
embedding-এর সবচেয়ে বিখ্যাত ম্যাজিক — শব্দের মধ্যে সম্পর্কও vector গণিতে ধরা পড়ে:
vector("king") − vector("man") + vector("woman") ≈ vector("queen")
vector("Paris") − vector("France") + vector("Bangladesh") ≈ vector("Dhaka")
মানে embedding শুধু similarity নয়, শব্দের মধ্যেকার সম্পর্ক (analogy)-ও শেখে। এটা প্রমাণ
করে যে vector-এর দিক (direction) অর্থবহ।
🖼️ ৬. Visual: শব্দ কীভাবে space-এ বসে
(২-মাত্রায় সরলীকৃত ছবি)
পেশা অক্ষর
^
| developer programmer
| • •
| engineer •
|
| রাজা • • রানী
| (রাজকীয় গুচ্ছ)
| আম • • কলা
| (ফল গুচ্ছ)
+--------------------------------------> অর্থের অক্ষর
কাছাকাছি অর্থ = কাছাকাছি বিন্দু = ছোট distance
📐 ৭. Semantic similarity ও cosine similarity
দুটো embedding vector কতটা কাছাকাছি সেটা মাপতে আমরা সাধারণত cosine similarity ব্যবহার করি —
দুটো vector-এর মধ্যেকার কোণ। কেন cosine, দূরত্ব নয়? কারণ vector-এর দিক-ই অর্থ বহন করে, দৈর্ঘ্য নয়।
cosine similarity = 1.0 -> হুবহু একই দিক (অর্থে সবচেয়ে কাছে)
cosine similarity = 0.0 -> সম্পর্কহীন (৯০° কোণ)
cosine similarity = -1.0 -> বিপরীত
developer vs programmer -> ~0.85 (খুব কাছে)
developer vs banana -> ~0.05 (দূরে)
এই cosine similarity-ই পরে vector database (S08E03) আর RAG (S08E04)-এর
মূল ইঞ্জিন। আজ আপনি সেই ভিত্তিটা তৈরি করছেন।
💻 ৮. Code: pretrained embedding দিয়ে similarity
কেন sentence-transformers? — কারণ এটা pretrained model দিয়ে সরাসরি বাক্যের quality embedding দেয়,
নিজে train করা লাগে না, আর multilingual (বাংলা সহ) model আছে।
# pip install sentence-transformers
from sentence_transformers import SentenceTransformer, util
# multilingual model -> বাংলা + ইংরেজি একসাথে বোঝে
model = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2")
sentences = [
"python developer needed",
"python programmer wanted",
"sales officer for fmcg",
"পাইথন ডেভেলপার প্রয়োজন",
]
emb = model.encode(sentences) # shape: (4, 384)
print(emb.shape)
# প্রথম বাক্যের সাথে বাকি সবের similarity
sims = util.cos_sim(emb[0], emb)
for s, score in zip(sentences, sims[0]):
print(f"{score:.3f} {s}")
ফলাফল: "python developer" এর সাথে "python programmer" আর বাংলা "পাইথন ডেভেলপার" দুটোরই
similarity high আসবে, কিন্তু "sales officer" এর কম। TF-IDF যা কখনো পারত না — embedding সেটা অনায়াসে করছে।
🔬 ৯. Experiment: synonym খুঁজে বের করা
query = "machine learning engineer"
pool = [
"AI/ML engineer role",
"deep learning specialist",
"accountant for audit firm",
"data scientist position",
]
q = model.encode(query)
p = model.encode(pool)
scores = util.cos_sim(q, p)[0]
ranked = sorted(zip(pool, scores), key=lambda x: -x[1])
for text, sc in ranked:
print(f"{sc:.3f} {text}")
খেয়াল করুন — "accountant" নিচে চলে যাবে, আর "AI/ML engineer", "deep learning", "data scientist" উপরে থাকবে।
এটাই semantic search-এর মূল কৌশল।
🚧 ১০. embedding ≠ LLM (গুরুত্বপূর্ণ পার্থক্য)
অনেকে এই দুটো গুলিয়ে ফেলে। স্পষ্ট করি:
Embedding model: input text → একটা সংখ্যার vector। কাজ: অর্থ তুলনা, search, clustering।
সে নতুন কোনো লেখা "generate" করে না।
LLM (যেমন GPT): input text → নতুন text generate করে। কাজ: উত্তর লেখা, summarize, translate।
দুটোই Deep Learning/Transformer থেকে আসে, কিন্তু কাজ আলাদা। RAG (S08)-এ এরা একসাথে কাজ করে —
embedding দিয়ে relevant document খুঁজে, LLM দিয়ে উত্তর লেখা। কিন্তু embedding ≠ LLM।
🇧🇩 ১১. বাস্তব উদাহরণ ও AI Engineer perspective
- Daraz search: "সস্তা মোবাইল" লিখলে "cheap phone" product-ও আসে — embedding-based semantic search।
- bdjobs recommendation: আপনার CV embedding-এর কাছাকাছি JD embedding সাজেস্ট করা।
- Support bot: নতুন প্রশ্নের কাছাকাছি পুরনো answered প্রশ্ন খুঁজে বের করা।
Must Know: embedding কী, cosine similarity, sentence-transformers দিয়ে semantic similarity।
Good to Know: Word2Vec/GloVe-এর ধারণা, dimensionality, multilingual model।
Learn Later: নিজে embedding model train/fine-tune করা, contrastive learning।
💼 ১২. Boss Question
Boss: "আমাদের search box-এ customer 'সস্তা ফোন' লিখলে কিছুই আসে না, কারণ product title-এ লেখা
'low budget smartphone'। এটা কি ঠিক করা যায়?"
উত্তর: এটাই ঠিক embedding-এর কাজ। keyword matching-এর বদলে আমরা query আর product-এর
embedding তুলনা করব — তখন "সস্তা ফোন" আর "low budget smartphone" কাছাকাছি হবে, customer যা খুঁজছে তাই পাবে।
ফল: better search → বেশি বিক্রি → সরাসরি revenue বৃদ্ধি।
🔎 ১৩. Job Requirement Decoder: "Embeddings"
JD-তে:
"Understanding of embeddings and semantic similarity."
| প্রশ্ন | উত্তর |
| কী বোঝায়? | text-কে meaning-সহ dense vector-এ রূপান্তর করে similarity মাপতে পারা। |
| কেন চায়? | semantic search, recommendation ও RAG — সবই embedding-এর উপর দাঁড়ানো। |
| কোন সমস্যা সমাধান করে? | keyword matching-এর সীমা — synonym, ভিন্ন ভাষা, paraphrase ধরা। |
| junior-এর কী জানা লাগে? | embedding তৈরি করা, cosine similarity, একটা ছোট semantic search বানানো। |
| এখনই কী master লাগে না? | embedding model architecture বা নিজে train করা। |
| GitHub-এ কীভাবে দেখাবেন? | একটা semantic search demo — query দিলে ranked result। |
| Interview-তে? | "embedding কী?", "cosine similarity কেন?", "embedding vs LLM?", "king−man+woman?" |
⚠️ ১৪. সাধারণ ভুল
ভুল ১: embedding আর LLM এক ভাবা। → embedding vector দেয়, generate করে না।
ভুল ২: ইংরেজি-only model দিয়ে বাংলা embed করা। → multilingual model ব্যবহার করুন।
ভুল ৩: similarity-তে Euclidean distance ধরে নেওয়া। → text embedding-এ সাধারণত cosine similarity মানানসই।
ভুল ৪: query আর document ভিন্ন model দিয়ে embed করা। → একই model লাগবে, নইলে তুলনা অর্থহীন।
🎤 ১৫. Interview Prep
প্রশ্ন ১: Word embedding কী এবং TF-IDF থেকে কীভাবে আলাদা?
উত্তর: embedding হলো dense, meaning-ধারণকারী vector; TF-IDF sparse ও অর্থহীন index। embedding-এ
synonym কাছাকাছি বসে, TF-IDF-এ নয়।
প্রশ্ন ২: "king − man + woman ≈ queen" — এটা কী প্রমাণ করে?
উত্তর: embedding শুধু similarity নয়, শব্দের সম্পর্ক (analogy)-ও শেখে; vector-এর দিক অর্থবহ।
প্রশ্ন ৩: Embedding আর LLM কি এক?
উত্তর: না। embedding vector produce করে (search/similarity); LLM নতুন text generate করে। RAG-এ দুটো একসাথে লাগে।
✍️ ১৬. হাতে-কলমে ও Project Connection
১. ৫টা job title নিন (বাংলা+ইংরেজি মিশিয়ে)। সবগুলোর embedding বের করে একটা similarity matrix বানান।
২. একটা query দিয়ে top-2 নিকটতম title বের করার ছোট function লিখুন।
৩. একই কাজ TF-IDF দিয়ে করে তুলনা করুন — কোনটা synonym/বাংলা ভালো ধরল?
আমাদের flagship "Bangladesh Tech Career Assistant" এখন embedding পেয়ে অনেক বেশি স্মার্ট।
আগে TF-IDF দিয়ে শুধু exact শব্দ মিলত; এখন "python developer" আর "পাইথন প্রোগ্রামার" একসাথে match হবে।
এই embedding + cosine similarity-ই সরাসরি আমাদের পরবর্তী বড় লক্ষ্য — RAG (P8)-এর ভিত্তি।
📌 ১৭. সারসংক্ষেপ ও পরবর্তী পর্ব
এই পর্বে শিখলাম:
✓ Embedding = meaning-সহ dense vector; কাছাকাছি অর্থ = কাছাকাছি vector
✓ TF-IDF (sparse, অর্থহীন) বনাম embedding (dense, অর্থবহ)
✓ cosine similarity দিয়ে semantic similarity মাপা
✓ sentence-transformers দিয়ে বাংলা+ইংরেজি semantic search
✓ king − man + woman ≈ queen — সম্পর্কও vector গণিতে ধরা পড়ে
✓ embedding ≠ LLM — একটা vector দেয়, আরেকটা text generate করে
পরবর্তী পর্ব (S07E04): এতক্ষণ আমরা শব্দকে আলাদা করে দেখলাম। কিন্তু বাক্যে শব্দের
ক্রম ও প্রসঙ্গ তো গুরুত্বপূর্ণ — "কুকুর মানুষকে কামড়ালো" আর "মানুষ কুকুরকে কামড়ালো" এক নয়!
পরের পর্বে RNN ও LSTM — sequence মনে রাখার প্রথম চেষ্টা, এবং কেন সেই চেষ্টা attention-এর
জন্ম দিল।