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.85

Visualization — 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 ভাষায় শক্তিশালী।