Menu Close

Word2Vec

Word2Vec adalah algoritma pembelajaran representasi kata (word embedding) yang mengubah kata-kata menjadi vektor angka berdimensi tetap, sehingga kata-kata yang memiliki makna serupa berada dekat di ruang vektor.

Dikembangkan oleh tim Google (Mikolov et al., 2013), Word2Vec dapat menangkap hubungan semantik seperti:

vec("King") - vec("Man") + vec("Woman") ≈ vec("Queen")

Word2Vec memiliki dua arsitektur utama:

1. CBOW (Continuous Bag of Words)

  • Memprediksi kata target berdasarkan konteks di sekitarnya.
  • Cocok untuk dataset kecil.
  • Contoh:
    • Input: “I ___ a book”
    • Output: prediksi “read”

2. Skip-Gram

  • Memprediksi konteks dari kata target.
  • Lebih baik untuk dataset besar dan kata yang jarang.
  • Contoh:
    • Input: “read”
    • Output: kemungkinan “I”, “a”, “book”

Cara Kerja Word2Vec

  1. Input Layer: Satu-hot encoding dari kata.
  2. Projection Layer (Hidden Layer): Matriks bobot W yang memetakan kata ke vektor embedding.
  3. Output Layer: Softmax function untuk menghitung probabilitas kata target (CBOW) atau konteks (Skip-gram).

Training: Negative Sampling & Hierarchical Softmax

  • Softmax mahal jika kosakata besar (misalnya 100.000 kata).
  • Untuk efisiensi, Word2Vec menggunakan:
    • Negative Sampling: hanya perbarui sebagian kecil dari bobot.
    • Hierarchical Softmax: struktur pohon binary untuk mempercepat prediksi.

Output Word2Vec

  • Vektor berdimensi tetap, misalnya 100 atau 300 dimensi.
  • Setiap kata diwakili oleh vektor dalam ruang semantik.
  • Vektor ini bisa digunakan untuk:
    • Clustering kata
    • Pencarian semantik
    • Input untuk model NLP lain (seperti LSTM, CNN, dll.)
from gensim.models import Word2Vec
sentences = [["i", "love", "natural", "language", "processing"],
             ["word2vec", "creates", "vector", "representations", "of", "words"]]

model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, sg=1)  # sg=1: Skip-gram
vector = model.wv["language"]
print(vector)

Kelebihan Word2Vec

  • Efisien dan cepat
  • Menangkap makna semantik dan sintaksis
  • Bisa digunakan untuk analogi kata

Keterbatasan

  • Tidak mempertimbangkan urutan kata dalam kalimat
  • Tidak bisa menangani kata-kata baru (out-of-vocabulary)
  • Tidak kontekstual (kata “bank” selalu punya satu vektor)

Kesimpulan: Word2Vec

AspekWord2Vec
TipeStatic
TrainingPredict context/word
RepresentasiSatu vektor per kata
Ukuran modelRingan
OOVTidak bisa

Contoh:

import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from gensim.models import Word2Vec

# Contoh pelatihan model
sentences = [["i", "love", "machine", "learning"],
             ["deep", "learning", "is", "cool"],
             ["word2vec", "captures", "semantic", "meaning"]]

model = Word2Vec(sentences, vector_size=50, window=3, min_count=1, sg=1)

# Ambil 10 kata dan vektornya
words = list(model.wv.key_to_index.keys())[:10]
vectors = [model.wv[word] for word in words]

# Reduksi dimensi (dari 50 → 2)
pca = PCA(n_components=2)
result = pca.fit_transform(vectors)

# Plot
plt.figure(figsize=(8, 6))
plt.scatter(result[:, 0], result[:, 1])
for i, word in enumerate(words):
    plt.annotate(word, xy=(result[i, 0], result[i, 1]))
plt.title("Visualisasi Word2Vec (PCA)")
plt.show()

  1. Setiap titik = 1 kata Kata-kata seperti deep, learning, machine, semantic, meaning, dll., adalah hasil pelatihan Word2Vec dari kalimat-kalimat contoh. Masing-masing kata direpresentasikan sebagai vektor berdimensi tinggi (di belakang layar), lalu direduksi ke 2D dengan PCA.
  2. Jarak antara kata = kedekatan semantik Kata-kata yang dekat posisinya (secara geometris) di ruang 2D kemungkinan besar memiliki makna yang mirip dalam konteks pelatihan. Contoh dari grafik kamu: deep dan learning cukup dekat → masuk akal karena sering muncul bersama (“deep learning”) semantic, word2vec, dan meaning juga berdekatan → semua terkait dengan NLP dan representasi makna cool dan love agak berjauhan dari “machine” atau “semantic” → karena konteks mereka lebih umum
  3. Distribusi makna secara visual Kata captures dan deep terletak di bagian bawah kiri → mungkin memiliki konteks yang berbeda dari kata-kata seperti cool dan love di kanan atas. Dengan visualisasi ini, kita bisa melihat clustering alami kata-kata berdasarkan makna yang ditangkap oleh Word2Vec.

Kesimpulan

Visualisasi ini menunjukkan bahwa Word2Vec berhasil mengelompokkan kata-kata yang sering muncul bersama atau memiliki makna serupa ke posisi yang berdekatan. Meski hanya divisualisasikan dalam 2D (karena keterbatasan tampilan), di baliknya model belajar dari dimensi yang jauh lebih tinggi dan kaya.

Leave a Reply

Your email address will not be published. Required fields are marked *