Skip to main content
Menggunakan Word Embeddings Word2Vec
  1. Blog/

Menggunakan Word Embeddings Word2Vec

·2353 words·36 mins· loading · loading ·
topik lanjutan embedding
Rumah Coding
Author
Rumah Coding
Tempatnya belajar coding
Table of Contents

I. Pendahuluan
#

A. Pengantar tentang Word Embeddings
#

Word embeddings adalah representasi kata dalam bentuk vektor yang dapat diproses oleh komputer. Teknik ini merupakan terobosan dalam pengolahan bahasa alami (NLP) karena mampu menangkap hubungan semantik dan sintaksis antar kata. Sebelum pengembangan word embeddings, representasi kata dalam NLP biasanya menggunakan metode tradisional seperti one-hot encoding, yang memiliki keterbatasan dalam menangkap makna dan konteks kata karena hanya menghasilkan vektor biner dengan panjang yang sangat besar dan sparsitas yang tinggi. Word embeddings, di sisi lain, menghasilkan vektor dengan dimensi yang lebih rendah dan mampu menangkap makna kontekstual kata dengan lebih efektif. Teknik ini menggunakan algoritma pembelajaran mesin untuk menganalisis teks dalam jumlah besar dan menentukan representasi vektor untuk setiap kata berdasarkan konteks penggunaannya.

B. Pentingnya Word Embeddings dalam NLP
#

Word embeddings telah merevolusi banyak aplikasi dalam NLP, termasuk analisis sentimen, penerjemahan mesin, pengenalan entitas bernama, dan penjawab pertanyaan. Dengan representasi yang lebih kaya dan kontekstual, word embeddings memungkinkan model NLP untuk memahami makna kata dalam konteksnya, sehingga meningkatkan akurasi dan performa model. Misalnya, dengan menggunakan word embeddings, model dapat memahami bahwa kata “bank” dapat merujuk pada “lembaga keuangan” atau “tepi sungai” berdasarkan konteks kalimatnya. Selain itu, word embeddings memungkinkan transfer learning dalam NLP, di mana model yang telah dilatih pada korpus teks besar dapat digunakan kembali untuk tugas-tugas spesifik dengan penyesuaian minimal, sehingga mengurangi kebutuhan data dan waktu pelatihan. Keunggulan-keunggulan ini membuat word embeddings menjadi komponen penting dalam pengembangan sistem NLP yang lebih cerdas dan efisien.

II. Konsep Dasar Word Embeddings
#

A. Definisi Word Embeddings
#

Word embeddings adalah teknik representasi kata dalam bentuk vektor angka yang memungkinkan komputer memahami hubungan semantik dan sintaksis antar kata. Setiap kata diwakili oleh sebuah vektor dalam ruang berdimensi tinggi, di mana kata-kata yang memiliki makna atau konteks yang mirip akan berada dekat satu sama lain. Representasi ini dibuat melalui teknik pembelajaran mesin yang menganalisis teks dalam jumlah besar dan menghasilkan vektor untuk setiap kata berdasarkan konteks penggunaannya. Algoritma seperti Word2Vec, GloVe, dan FastText adalah beberapa metode populer yang digunakan untuk menghasilkan word embeddings.

B. Keunggulan Word Embeddings dibandingkan Representasi Kata Tradisional
#

Word embeddings memiliki beberapa keunggulan dibandingkan dengan representasi kata tradisional seperti one-hot encoding. Pertama, word embeddings menghasilkan vektor berdimensi rendah, sehingga lebih efisien dalam hal penyimpanan dan pemrosesan dibandingkan one-hot encoding yang menghasilkan vektor sangat besar dan jarang. Kedua, word embeddings mampu menangkap hubungan semantik antar kata, memungkinkan model untuk memahami makna kata dalam konteks yang berbeda. Misalnya, kata “manusia” dan “orang” akan memiliki vektor yang dekat satu sama lain dalam ruang vektor, mencerminkan kemiripan maknanya. Ketiga, word embeddings memungkinkan transfer learning, di mana representasi kata yang telah dipelajari dari satu korpus teks dapat digunakan kembali pada tugas-tugas lain, meningkatkan efisiensi dan mengurangi kebutuhan data pelatihan tambahan.

C. Aplikasi Word Embeddings dalam NLP
#

Word embeddings memiliki beragam aplikasi dalam NLP yang membantu meningkatkan performa berbagai tugas. Dalam analisis sentimen, word embeddings memungkinkan model untuk memahami nuansa emosional dalam teks, sehingga dapat mengklasifikasikan sentimen dengan lebih akurat. Dalam penerjemahan mesin, word embeddings membantu model memahami dan menerjemahkan kata-kata dalam konteks yang sesuai, menghasilkan terjemahan yang lebih alami dan akurat. Selain itu, word embeddings digunakan dalam pengenalan entitas bernama (NER) untuk mengidentifikasi nama orang, tempat, dan organisasi dalam teks. Mereka juga digunakan dalam sistem penjawab pertanyaan untuk memahami dan menjawab pertanyaan berdasarkan konteks yang relevan. Dengan kemampuan untuk menangkap makna kontekstual, word embeddings telah menjadi komponen penting dalam berbagai aplikasi NLP modern, memungkinkan pengembangan sistem yang lebih cerdas dan efisien.

III. Word2Vec
#

A. Pengertian Word2Vec
#

Word2Vec adalah teknik pembelajaran mesin yang digunakan untuk menghasilkan word embeddings. Dikembangkan oleh tim peneliti di Google pada tahun 2013, Word2Vec telah menjadi salah satu metode paling populer dan berpengaruh dalam bidang Natural Language Processing (NLP). Word2Vec berfungsi dengan mengubah kata-kata menjadi vektor berdimensi tinggi, di mana hubungan semantik dan sintaksis antar kata dapat direpresentasikan dalam ruang vektor.

Algoritma Word2Vec bekerja dengan menggunakan model pembelajaran mendalam yang sederhana, tetapi sangat efektif. Terdapat dua arsitektur utama dalam Word2Vec: Continuous Bag of Words (CBOW) dan Skip-gram. Kedua arsitektur ini memiliki pendekatan yang berbeda dalam memprediksi konteks kata.

CBOW mencoba memprediksi sebuah kata berdasarkan kata-kata kontekstual di sekitarnya. Misalnya, jika kita memiliki kalimat “saya suka makan apel”, model CBOW akan mencoba memprediksi kata “makan” berdasarkan kata-kata “saya”, “suka”, dan “apel”. Pendekatan ini cenderung lebih cepat dan efektif untuk korpus teks yang besar karena mengkonsolidasi informasi dari konteks yang lebih luas dalam satu waktu.

Di sisi lain, arsitektur Skip-gram bekerja dengan cara yang berlawanan: ia mencoba memprediksi kata-kata kontekstual berdasarkan kata pusat. Dalam contoh sebelumnya, Skip-gram akan menggunakan kata “makan” untuk memprediksi kata “saya”, “suka”, dan “apel”. Skip-gram lebih baik dalam menangani korpus teks yang jarang karena memberikan bobot lebih pada kata-kata yang sering muncul di konteks yang luas.

Kedua metode ini melatih jaringan saraf untuk menghasilkan vektor yang merepresentasikan kata-kata dengan cara yang mempertahankan hubungan semantik mereka. Setelah pelatihan, kata-kata dengan makna yang serupa akan memiliki vektor yang terletak dekat satu sama lain dalam ruang vektor. Sebagai contoh, kata-kata seperti “raja”, “ratu”, “pangeran”, dan “putri” akan dikelompokkan bersama, menunjukkan hubungan semantik mereka.

Word2Vec tidak hanya digunakan untuk menghasilkan embeddings kata-kata, tetapi juga telah membuka jalan bagi berbagai penelitian dan aplikasi dalam NLP. Keunggulan Word2Vec dalam menangkap makna kontekstual dan hubungannya dengan kata-kata lain telah menjadikannya alat penting dalam toolkit NLP modern. Dengan menggunakan embeddings yang dihasilkan oleh Word2Vec, model dapat melakukan berbagai tugas NLP dengan tingkat akurasi dan efisiensi yang lebih tinggi.

B. Arsitektur CBOW (Continuous Bag of Words)
#

Continuous Bag of Words (CBOW) adalah salah satu dari dua arsitektur utama yang digunakan dalam Word2Vec untuk menghasilkan word embeddings. CBOW bekerja dengan memprediksi kata pusat (target word) berdasarkan kata-kata kontekstual di sekitarnya (context words). Pendekatan ini mirip dengan bagaimana manusia memahami makna suatu kata dengan melihat kata-kata di sekitarnya.

Arsitektur CBOW dirancang untuk mengoptimalkan proses pelatihan dengan menggunakan jaringan saraf yang sederhana namun efektif. Berikut adalah langkah-langkah dasar dalam proses pelatihan menggunakan CBOW:

  1. Pemilihan Kata Kontekstual: Dalam kalimat “saya suka makan apel”, kata-kata “saya”, “suka”, dan “apel” adalah kata-kata kontekstual untuk kata pusat “makan”. CBOW menggunakan kata-kata kontekstual ini untuk memprediksi kata pusat.

  2. Input Layer: Kata-kata kontekstual diubah menjadi vektor one-hot. Setiap kata dalam kosakata memiliki representasi vektor yang hanya memiliki satu nilai “1” dan sisanya “0”. Misalnya, jika kita memiliki kosakata dengan 10.000 kata, vektor one-hot untuk setiap kata akan memiliki panjang 10.000 dengan satu posisi bernilai “1” dan sisanya “0”.

  3. Projection Layer (Hidden Layer): Vektor one-hot dari kata-kata kontekstual diumpankan ke layer tersembunyi yang terdiri dari matriks bobot (weight matrix). Matriks ini berfungsi untuk memproyeksikan kata-kata one-hot ke dalam ruang vektor berdimensi lebih rendah. Jika dimensi ruang vektor adalah 300, maka setiap kata kontekstual akan dipetakan menjadi vektor berdimensi 300. Rata-rata dari vektor-vektor kontekstual ini kemudian dihitung untuk menghasilkan vektor kontekstual rata-rata.

  4. Output Layer: Vektor kontekstual rata-rata ini kemudian diumpankan ke layer output yang juga merupakan matriks bobot. Layer ini memprediksi distribusi probabilitas atas seluruh kosakata, menunjukkan kemungkinan kata pusat berdasarkan kata-kata kontekstual.

  5. Fungsi Aktivasi dan Softmax: Pada layer output, fungsi softmax digunakan untuk menghitung distribusi probabilitas. Softmax mengambil input dan mengubahnya menjadi probabilitas antara 0 dan 1 yang jumlahnya sama dengan 1. Probabilitas tertinggi di antara kata-kata dalam kosakata diidentifikasi sebagai kata pusat yang diprediksi.

  6. Pembaharuan Bobot (Backpropagation): Setelah prediksi dilakukan, kesalahan antara kata pusat yang diprediksi dan kata pusat yang sebenarnya dihitung menggunakan fungsi loss, biasanya cross-entropy loss. Kesalahan ini digunakan untuk memperbarui bobot melalui proses backpropagation, yang bertujuan untuk meminimalkan kesalahan pada iterasi berikutnya.

Arsitektur CBOW memiliki beberapa keunggulan. Salah satu kelebihannya adalah efisiensi komputasi. Karena CBOW menggunakan konteks agregat untuk memprediksi kata pusat, ia cenderung lebih cepat dilatih dibandingkan dengan arsitektur Skip-gram yang memprediksi konteks untuk setiap kata pusat. CBOW juga cenderung bekerja dengan baik dalam menangkap informasi kontekstual dalam korpus teks yang besar dan padat.

Namun, CBOW juga memiliki keterbatasan. Salah satu tantangannya adalah dalam menangani korpus teks yang jarang atau sparse datasets. Dalam situasi di mana konteks sangat bervariasi, prediksi CBOW mungkin kurang akurat dibandingkan Skip-gram. Meski begitu, CBOW tetap menjadi pilihan populer untuk banyak aplikasi NLP karena keseimbangan antara efisiensi dan performa.

Dengan memahami cara kerja arsitektur CBOW, kita dapat lebih menghargai bagaimana Word2Vec mengubah cara kita merepresentasikan kata-kata dan makna dalam teks, membuka jalan bagi kemajuan besar dalam teknologi NLP.

C. Arsitektur Skip-Gram
#

Arsitektur Skip-Gram adalah salah satu dari dua pendekatan utama yang digunakan dalam algoritma Word2Vec untuk menghasilkan word embeddings. Berbeda dengan arsitektur CBOW (Continuous Bag of Words) yang memprediksi kata pusat berdasarkan kata-kata kontekstual di sekitarnya, Skip-Gram bekerja dengan cara sebaliknya: ia menggunakan kata pusat untuk memprediksi kata-kata kontekstual. Pendekatan ini terbukti efektif dalam menangkap makna kata dalam berbagai konteks linguistik.

Berikut adalah langkah-langkah dasar dalam proses pelatihan menggunakan arsitektur Skip-Gram:

  1. Pemilihan Kata Pusat dan Konteks: Dalam kalimat “saya suka makan apel”, jika “makan” adalah kata pusat, maka kata-kata “saya”, “suka”, dan “apel” adalah kata-kata kontekstual yang diharapkan diprediksi oleh model. Skip-Gram mempelajari hubungan ini dengan memprediksi kata-kata kontekstual berdasarkan kata pusat.

  2. Input Layer: Kata pusat diubah menjadi vektor one-hot, yang merupakan representasi vektor di mana hanya satu elemen yang bernilai “1” dan sisanya “0”. Vektor one-hot ini berfungsi sebagai input bagi model Skip-Gram.

  3. Projection Layer (Hidden Layer): Vektor one-hot dari kata pusat ini diumpankan ke layer tersembunyi yang terdiri dari matriks bobot. Matriks ini memproyeksikan vektor one-hot ke dalam ruang vektor berdimensi lebih rendah, yang biasanya lebih kecil dari dimensi kosakata. Jika dimensi ruang vektor adalah 300, kata pusat akan dipetakan menjadi vektor berdimensi 300.

  4. Output Layer: Vektor hasil proyeksi dari kata pusat digunakan untuk memprediksi kata-kata kontekstual. Layer output juga merupakan matriks bobot yang memproyeksikan kembali vektor berdimensi lebih rendah ke ruang kosakata asli. Hasilnya adalah distribusi probabilitas atas seluruh kosakata, menunjukkan kemungkinan kata-kata kontekstual berdasarkan kata pusat.

  5. Fungsi Aktivasi dan Softmax: Fungsi softmax digunakan pada layer output untuk menghitung distribusi probabilitas. Fungsi ini mengubah input menjadi probabilitas antara 0 dan 1 yang jumlahnya sama dengan 1. Kata-kata dengan probabilitas tertinggi diidentifikasi sebagai kata-kata kontekstual yang diprediksi.

  6. Pembaharuan Bobot (Backpropagation): Setelah prediksi dilakukan, kesalahan antara kata kontekstual yang diprediksi dan kata kontekstual yang sebenarnya dihitung menggunakan fungsi loss, biasanya negative sampling atau hierarchical softmax untuk meningkatkan efisiensi komputasi. Kesalahan ini digunakan untuk memperbarui bobot melalui proses backpropagation, yang bertujuan untuk meminimalkan kesalahan pada iterasi berikutnya.

Arsitektur Skip-Gram memiliki beberapa keunggulan penting:

  • Kemampuan Menangkap Makna Semantik: Skip-Gram sangat efektif dalam menangkap makna semantik dari kata-kata, terutama dalam korpus teks yang besar dan beragam. Model ini mampu belajar representasi kata yang mempertahankan makna dan hubungan kontekstual dalam berbagai situasi linguistik.

  • Efektivitas pada Dataset Sparse: Skip-Gram cenderung bekerja lebih baik pada dataset yang sparse atau jarang, di mana kata-kata kontekstual mungkin tidak selalu muncul dalam jumlah besar di sekitar kata pusat. Dengan memprediksi konteks dari kata pusat, Skip-Gram mampu belajar dari lebih banyak variasi dalam data.

Namun, arsitektur Skip-Gram juga memiliki tantangan. Salah satu tantangan utamanya adalah kebutuhan komputasi yang lebih besar dibandingkan CBOW, terutama ketika memproses korpus teks yang sangat besar. Ini disebabkan oleh kebutuhan untuk memprediksi banyak kata kontekstual untuk setiap kata pusat, yang dapat memperlambat proses pelatihan.

Secara keseluruhan, Skip-Gram adalah arsitektur yang kuat dan fleksibel dalam menghasilkan word embeddings yang berkualitas tinggi. Keunggulannya dalam menangkap makna kata dan hubungannya dalam konteks linguistik menjadikannya pilihan populer dalam berbagai aplikasi Natural Language Processing (NLP), termasuk analisis teks, pemrosesan bahasa alami, dan banyak lagi.

D. Implementasi Word2Vec menggunakan Gensim
#

1. Langkah-langkah Menginstal Gensim

Gensim adalah pustaka Python yang populer untuk pemodelan topik dan vektor dokumen, serta implementasi model Word2Vec. Untuk mulai menggunakan Gensim, kita perlu menginstalnya terlebih dahulu. Instalasi dapat dilakukan melalui pip, manajer paket Python. Berikut adalah perintah untuk menginstal Gensim:

pip install gensim

Perintah ini akan mengunduh dan menginstal Gensim beserta semua dependensi yang diperlukan. Selain Gensim, pastikan juga untuk memiliki pustaka Numpy yang biasanya sudah diinstal sebagai bagian dari paket standar Python.

2. Membuat Model Word2Vec

Setelah Gensim terinstal, langkah berikutnya adalah membuat model Word2Vec. Pertama, kita perlu mengumpulkan data teks yang akan digunakan untuk melatih model. Data ini bisa berupa daftar kalimat atau teks dokumen yang telah di-tokenisasi. Berikut adalah contoh sederhana untuk membuat model Word2Vec menggunakan Gensim:

from gensim.models import Word2Vec

# Contoh data: Daftar kalimat yang telah di-tokenisasi
sentences = [
    ['saya', 'suka', 'makan', 'apel'],
    ['apel', 'sangat', 'enak'],
    ['saya', 'suka', 'buah'],
    ['buah', 'sangat', 'segar']
]

# Membuat model Word2Vec
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)

Dalam contoh ini, kita menggunakan beberapa parameter penting:

  • vector_size: Ukuran vektor kata yang akan dihasilkan.
  • window: Jumlah kata di sekitar kata pusat yang akan dipertimbangkan sebagai konteks.
  • min_count: Jumlah minimum kemunculan kata dalam korpus untuk dimasukkan dalam model.
  • workers: Jumlah thread yang akan digunakan untuk pelatihan paralel.

3. Melatih Model dengan Dataset

Setelah model Word2Vec dibuat, langkah berikutnya adalah melatih model tersebut dengan dataset yang lebih besar. Proses pelatihan ini akan mengoptimalkan bobot dalam model untuk menghasilkan representasi vektor yang akurat. Berikut adalah contoh cara melatih model:

# Melatih model dengan dataset
model.train(sentences, total_examples=model.corpus_count, epochs=model.epochs)

Metode train akan menjalankan proses pelatihan pada dataset yang disediakan. Parameter total_examples dan epochs mengindikasikan jumlah total contoh dalam korpus dan jumlah iterasi pelatihan.

4. Menyimpan dan Memuat Model

Setelah model Word2Vec dilatih, penting untuk menyimpan model agar bisa digunakan kembali di masa mendatang tanpa harus melatih ulang. Berikut adalah cara menyimpan dan memuat model:

# Menyimpan model ke file
model.save("word2vec.model")

# Memuat model dari file
model = Word2Vec.load("word2vec.model")

Dengan menggunakan metode save dan load, kita dapat menyimpan model yang telah dilatih ke dalam file dan memuatnya kembali kapan saja diperlukan.

5. Contoh Penggunaan Word2Vec

Setelah model dilatih dan dimuat, kita dapat mulai menggunakan vektor kata yang dihasilkan untuk berbagai tugas NLP. Berikut adalah beberapa contoh penggunaan Word2Vec:

# Mendapatkan vektor untuk kata 'apel'
vector = model.wv['apel']
print(vector)

# Mendapatkan kata-kata yang paling mirip dengan 'apel'
similar_words = model.wv.most_similar('apel', topn=5)
print(similar_words)

# Melakukan operasi aritmetika pada vektor kata
result = model.wv.most_similar(positive=['saya', 'buah'], negative=['makan'], topn=1)
print(result)

Dalam contoh di atas, kita mendapatkan vektor untuk kata ‘apel’, mencari kata-kata yang paling mirip dengan ‘apel’, dan melakukan operasi aritmetika pada vektor kata untuk menemukan kata yang relevan berdasarkan konteks tertentu.

Dengan menggunakan Gensim, implementasi Word2Vec menjadi lebih mudah dan efisien, memungkinkan pengembang untuk menerapkan embedding kata pada berbagai aplikasi NLP dengan cepat.