ওয়ার্ড এমবেডিং (Word Embedding) হলো একটি ল্যাঙ্গুয়েজ মডেলিং টেকনিক যা শব্দগুলোকে বাস্তব সংখ্যার ভেক্টর (vector) এ ম্যাপ করে। শব্দ বা ফ্রেজগুলোকে বহু-আয়ামী ভেক্টর স্পেসে রিপ্রেজেন্ট করে। এমবেডিং জেনারেট করার পদ্ধতিগুলো: নিউরাল নেটওয়ার্ক, কো-অকারেন্স ম্যাট্রিক্স, প্রোবাবিলিস্টিক মডেল ইত্যাদি।
Word2Vec হলো ওয়ার্ড এমবেডিং জেনারেট করার জন্য দুটি মডেল সম্বলিত: CBOW (Continuous Bag of Words) এবং Skip-gram। এগুলো শ্যালো (shallow) টু-লെയার নিউরাল নেটওয়ার্ক (ইনপুট, হিডেন, আউটপুট লെയার)।
উদাহরণ: Word2Vec মডেল ট্রেনিং ও সিমিলারিটি চেক
from nltk.tokenize import sent_tokenize, word_tokenize
import warnings
warnings.filterwarnings(action='ignore')
import gensim
from gensim.models import Word2Vec
# টেক্সট ফাইল পড়া
sample = open("C:\\Users\\Vishesh\\Desktop\\alice.txt", "r")
s = sample.read()
# এসকেপ ক্যারেক্টার রিপ্লেস
f = s.replace("\n", " ")
# সেন্টেন্স ও ওয়ার্ড টোকেনাইজেশন
data = []
for i in sent_tokenize(f):
temp = []
for j in word_tokenize(i):
temp.append(j.lower())
data.append(temp)
# CBOW মডেল (sg=0 ডিফল্ট)
model1 = gensim.models.Word2Vec(data, min_count=1, size=100, window=5)
print("Cosine similarity 'alice' & 'wonderland' - CBOW:", model1.similarity('alice', 'wonderland'))
print("Cosine similarity 'alice' & 'machines' - CBOW:", model1.similarity('alice', 'machines'))
# Skip-gram মডেল (sg=1)
model2 = gensim.models.Word2Vec(data, min_count=1, size=100, window=5, sg=1)
print("Cosine similarity 'alice' & 'wonderland' - Skip Gram:", model2.similarity('alice', 'wonderland'))
print("Cosine similarity 'alice' & 'machines' - Skip Gram:", model2.similarity('alice', 'machines'))
প্যারামিটার ব্যাখ্যা
size- ভেক্টর ডাইমেনশন (১০০)window- কনটেক্সট উইন্ডো আকার (৫)min_count- ন্যূনতম ফ্রিকোয়েন্সি (১)sg- ০=CBOW, ১=Skip-gramsimilarity(w1, w2)- কোসাইন সিমিলারিটি (0-1)
CBOW vs Skip-gram
- CBOW: কনটেক্সট দিয়ে টার্গেট ওয়ার্ড প্রিডিক্ট করে। দ্রুত, ছোট ডেটাসেটের জন্য ভালো।
- Skip-gram: টার্গেট ওয়ার্ড দিয়ে কনটেক্সট প্রিডিক্ট করে। ধীর, বড় ডেটাসেট ও রেয়ার ওয়ার্ডের জন্য ভালো।