• Home
  • About
  • Archives
  • Contact
  • Projects
Logo

  • Data Science
  • Machine Learning
  • Research
  • Tutorial

Membuat Model GloVe Dari Korpus Wikipedia Bahasa Indonesia | Catatan Penelitian #8

11 January 2021
Rifqi Fauzi Rahmadzani
7 Comments
  • Email
  • Facebook
  • Twitter
  • Pinterest
  • LinkedIn
11 January 2021
7 Comments

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.

  • Email
  • Facebook
  • Twitter
  • Pinterest
  • LinkedIn
Previous

Cara Kerja Word Embedding GloVe | Catatan Penelitian #7

Next

Cara Kerja Word Embedding FastText | Catatan Penelitian #9

The Author

Rifqi Fauzi Rahmadzani

Being someone who is able to contend with my interest and to learn new imaginative, intuitive, and communicative things. The greatest hope of my ability can be beneficial to others.

  • facebook
  • twitter
  • instagram
  • linkedin

7 Comments

  • Riski
    2 years ago
    Reply

    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

    • Rifqi Fauzi Rahmadzani
      1 year ago
      Reply

      Bisa langsung email saja

      • Hilya
        1 year ago
        Reply

        Halo mas, apa boleh saya email untuk filenya juga mas? terima kasih

      • Tsaniya
        1 year ago
        Reply

        Halo mas, apa boleh saya email untuk filenya juga mas? terima kasih

  • Rizki
    2 years ago
    Reply

    untuk run demo.sh membutuhkan waktu berapa tuh gan?

    • Rifqi Fauzi Rahmadzani
      1 year ago
      Reply

      Tergantung kebutuhan data dan spesifikasi yang digunakan. Saya mencoba Google Colab dengan data dumps Wikipedia Indonesia kurang lebih 4 jam

  • tiara
    6 months ago
    Reply

    Halo mas rifqi, izin bertanya, apakah dataset wiki nya perlu melewati preprocessing terlebih dahulu atau tidak ya mas?
    Sebelumnya terima kasih mas

Leave A Comment Cancel reply

author image

The Author

Rifqi Fauzi Rahmadzani

  • facebook
  • twitter
  • instagram

Being someone who is able to contend with my interest and to learn new imaginative, intuitive, and communicative things. The greatest hope of my ability can be beneficial to others.

Logo

© 2021 Rifqifai.com. Developed by Rifqi Fauzi Rahmadzani