Salah satu teknik pembuatan pre-trained word embedding adalah dengan menggunakan GloVe. Sebelumnya juga sudah saya jelaskan bagaimana prinsip kerja GloVe. Ekperimen pembuatan GloVe kali ini juga dengan memanfaatkan data korpus Wikipedia Bahasa Indonesia. Namun untuk implementasinya saya tidak menemukan dalam bahasa python, dari sumbernya sudah ditulis dengan bahasa C dalam format bash. Untuk melakukan training menggunakan GloVe kalian dapat mengunduh sorce codenya langsung dari https://nlp.stanford.edu/projects/glove/ atau langsung dari repositorynya https://github.com/stanfordnlp/GloVe.
Setelah berhasil mendapatkan source code tersebut lakukan langkahnya seperti di bawah ini.
1. ekstrak file GloVe dan ketik make untuk melakukan build source code.
2. Sebelum menjalankan proses training lakukan modifikasi code pada file demo.sh sebagaimana berikut.
#!/bin/bash
# Makes programs, downloads sample data, trains a GloVe model, and then evaluates it.
# One optional argument can specify the language used for eval script: matlab, octave or [default] python
make
if [ ! -e text8 ]; then
if hash wget 2>/dev/null; then
wget http://mattmahoney.net/dc/text8.zip
else
curl -O http://mattmahoney.net/dc/text8.zip
fi
unzip text8.zip
rm text8.zip
fi
CORPUS=wiki.id.text
VOCAB_FILE=vocab.txt
COOCCURRENCE_FILE=cooccurrence.bin
COOCCURRENCE_SHUF_FILE=cooccurrence.shuf.bin
BUILDDIR=build
SAVE_FILE=glove_wiki_id_300.txt
VERBOSE=2
MEMORY=4.0
VOCAB_MIN_COUNT=5
VECTOR_SIZE=300
MAX_ITER=15
WINDOW_SIZE=10
BINARY=2
NUM_THREADS=8
X_MAX=10
$BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE
if [[ $? -eq 0 ]]
then
$BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE
if [[ $? -eq 0 ]]
then
$BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE
if [[ $? -eq 0 ]]
then
$BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE
fi
fi
fi
konversi dilakukan dengan memanfaatkan library Gensim untuk prosesnya silakan melihat postingan saya tentang Word2Vec.
Line 22 nama model yang disimpan setelah dilakukan proses training.
Untuk beberapa parameter sesuaikan dengan pengaturan pada kasus yang kalian lakukan dengan pertimbangan pada postingan saya berikut. VOCAB_MIN_COUNT = min_count, VECTOR_SIZE = size, WINDOW_SIZE = window. Untuk parameter lainnya saya biarkan secara default.
3. Simpan file demo.sh dan jalankan menggunakan perintah !bash demo.sh. Proses training ini akan memakan waktu yang cukup lama. Tergantung seberapa besar data yang kalian gunakan.
Untuk mengetes hasilnya kalian dapat memanfaatkan similarity code pada library Gensim di postingan Pembuatan model Word2Vec. Karena model GloVe ini bisa dikonversi ke format Word2Vec. Proses konversi dari GloVe ke format Word2Vec menggunakan code berikut.
import gensim
from gensim.test.utils import datapath, get_tmpfile
from gensim.models import KeyedVectors
from gensim.scripts.glove2word2vec import glove2word2vec
namaFileGlove = "glove_wiki_id_300.txt"
glove_file = datapath(namaFileGlove)
tmp_file = get_tmpfile("w2vec_glove_wiki_id_300.txt")
glove2word2vec(glove_file, tmp_file)
Analogi lebih lanjut mengenai perbandingan hasil model Word2Vec dengan GloVe silakan bisa melihat similarity kata antara kedua model tersebut. Di mana keduanya akan menghasilkan nilai kata yang bervariatif dan kedua model meiliki spesifikasi masing-masing. Kedua model tersebut juga dapat dimanfaatkan untuk proses ektrasi fitur dalam kasus NLP.
wah terimakasih mas kontennya sangat membantu saya yg kebetulan lagi penelitian skripsi tentang glove.
oya untuk hasil training glove nya apakah saya boleh minta mas untuk file glove_wiki_id_300.txt
terimakasih banyak mas
Bisa langsung email saja
Halo mas, apa boleh saya email untuk filenya juga mas? terima kasih
Halo mas, apa boleh saya email untuk filenya juga mas? terima kasih
untuk run demo.sh membutuhkan waktu berapa tuh gan?
Tergantung kebutuhan data dan spesifikasi yang digunakan. Saya mencoba Google Colab dengan data dumps Wikipedia Indonesia kurang lebih 4 jam
Halo mas rifqi, izin bertanya, apakah dataset wiki nya perlu melewati preprocessing terlebih dahulu atau tidak ya mas?
Sebelumnya terima kasih mas