Chapter 28
এমবেডিং
Embeddings
🎬 অর্থের জ্যামিতি
Embedding শব্দ/বাক্যকে dense vector-এ পরিণত করে যেখানে সদৃশ অর্থের জিনিসগুলো কাছাকাছি থাকে। এই vector space-এই ভাষার "অর্থ" গাণিতিকভাবে ধরা পড়ে।
One-hot বনাম Embedding
One-hot
Embedding
Sparse, |V|-dim
Dense, 50–1024-dim
সব শব্দ orthogonal
সদৃশতা cosine-এ ধরা যায়
Word2Vec (Mikolov et al., 2013)
দুটি স্থাপত্য: CBOW (পার্শ্ববর্তী শব্দ থেকে কেন্দ্র) এবং Skip-gram (কেন্দ্র থেকে পার্শ্ব)। জাদু: king − man + woman ≈ queen।
from gensim.models import Word2Vec
sents = [["আমি","পাইথন","শিখছি"], ["সে","বাংলা","ভালোবাসে"]]
m = Word2Vec(sents, vector_size=100, window=5, min_count=1, sg=1)
print(m.wv.most_similar("পাইথন"))GloVe, FastText
- GloVe: global co-occurrence matrix factorization।
- FastText: subword (char n-gram) → OOV/বাংলা morphology-তে ভালো।
Keras Embedding Layer
from tensorflow.keras import layers
emb = layers.Embedding(input_dim=vocab_size, output_dim=128, mask_zero=True)
x = emb(token_ids) # (B, T) → (B, T, 128)Pretrained embeddings load
import numpy as np
matrix = np.zeros((vocab_size, 300))
for w, i in word_index.items():
if w in glove_dict:
matrix[i] = glove_dict[w]
emb = layers.Embedding(vocab_size, 300, weights=[matrix], trainable=False)Contextual Embeddings — ELMo, BERT, …
Word2Vec/GloVe-এ "bank" সবসময় একই vector। BERT-এ "river bank" আর "money bank"-এর vector আলাদা — context অনুযায়ী।
from sentence_transformers import SentenceTransformer
m = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2")
v = m.encode(["আমি বাংলা ভালোবাসি", "I love Bengali"])
# cosine similarity → ~0.85Visualization — t-SNE / UMAP
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt
red = TSNE(2).fit_transform(vectors)
plt.scatter(red[:,0], red[:,1])
for i, w in enumerate(words): plt.annotate(w, red[i])🔑 কোনটি ব্যবহার করব?
ছোট ডেটা/classical ML → TF-IDF বা pretrained GloVe। আধুনিক pipeline → sentence-transformer বা BERT embedding (FAISS দিয়ে semantic search)।
অনুশীলন
১. নিজের corpus-এ Word2Vec train করে similar word দেখুন।
২. Sentence-transformer দিয়ে semantic search ছোট demo বানান।
৩. t-SNE-এ ১০০টি শব্দ visualize করুন।
সারসংক্ষেপ
✨ এই অধ্যায়ে যা শিখলাম
- Embedding = অর্থের vector space।
- Word2Vec/GloVe static; BERT/sentence-transformer contextual।
- FastText subword — morphology-rich ভাষায় শক্তিশালী।