কম্পিউটার টিউটোরিয়াল

পাইথনে Word2Vec ব্যবহার করে ওয়ার্ড এমবেডিং (Word Embedding)

ওয়ার্ড এমবেডিং (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-gram
  • similarity(w1, w2) - কোসাইন সিমিলারিটি (0-1)

CBOW vs Skip-gram

  • CBOW: কনটেক্সট দিয়ে টার্গেট ওয়ার্ড প্রিডিক্ট করে। দ্রুত, ছোট ডেটাসেটের জন্য ভালো।
  • Skip-gram: টার্গেট ওয়ার্ড দিয়ে কনটেক্সট প্রিডিক্ট করে। ধীর, বড় ডেটাসেট ও রেয়ার ওয়ার্ডের জন্য ভালো।
  1. পাইথন ব্যবহার করে স্টপওয়াচ তৈরি করা

  2. পাইথনে WhatsApp অটোমেশন (WhatsApp using Python)

  3. পাইথনে cx_Freeze ব্যবহার করে এক্সিকিউটেবল বানানো

  4. পাইথন ব্যবহার করে ওয়ার্ড ক্লাউড (Word Cloud) তৈরি করা