• Home
  • About
  • Archives
  • Contact
  • Projects
Logo

  • Data Science
  • Machine Learning
  • Research
  • Tutorial

Membuat Model FastText Menggunakan Compiler C++ Dan Library Gensim Python | Catatan Penelitian #10

12 February 2021
Rifqi Fauzi Rahmadzani
1 Comment
  • Email
  • Facebook
  • Twitter
  • Pinterest
  • LinkedIn
12 February 2021
1 Comment

Sebelumnya sudah saya bahas mengenai pembuatan model word embedding menggunakan Word2Vec dan GloVec. Kali ini saya akan melakukan training menggunakan data yang sama seperti pada data yang dipakai sebelumnya yaitu korpus Wikipedia Bahasa Indonesia. Sama halnya dengan Word2Vec, FastText merupakan library word embedding yang dikeluarkan oleh Facebook. Fastext sendiri adalah bagian dari pengembangan Word2Vec yang lebih awal dikenal sebagai library word embedding.

Ada beberapa cara menggunakan library FastText yaitu dengan menggunakan compiler C++ dan library Gensim.

FastText Dengan C++

Cara pertama yaitu menggunakan proses kompilasi code C++. Proses pemasangannya bisa menggunakan cara di bawah ini atau cara paling mudahnya menggunakan python dengan pip install fasttext.

$ git clone https://github.com/facebookresearch/fastText.git
$ cd fastText
$ mkdir build && cd build && cmake ..
$ make && make install

Untuk melakukan training menggunakan FastText dapat diakses melalui perintah bash seperti berikut.

$ ./fasttext skipgram -input wiki.id.text -output fasttext_wiki_id

Di mana wiki.id.text merupakan data input dari korpus Wikipedia. Secara default ukuran dimensi vektor kata adalah sebesar 300 dimensi. Model ini akan disimpan dalam dua file yaitu fasttext_wiki_id.bin (untuk format binary) dan fasttext_wiki_id.vec (untuk format teks).

FastText Dengan Library Gensim Python

Cara kedua adalah dengan memanfaatkan library Gensim. Proses ini mirip sama ketika membuat model Word2Vec hanya saja sedikit pengubahan code fungsi pelatihan menjadi FastText.

import multiprocessing
import logging
import os.path
import sys
import multiprocessing
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
 
program = os.path.basename(sys.argv[0])
logger = logging.getLogger(program)
 
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s')
logging.root.setLevel(level=logging.INFO)
logger.info("running %s" % ' '.join(sys.argv))
 
namaFileInput = "wiki.id.text"
namaFileOutput = "fasttext_wiki_id300_0.txt"
 
 
# size 300 = 300 dimensi vektor, window 10 = 10 pengaruh kata disekitarnya, min_count 5 = kata-kata yang muncul < 5 kali akan dikeluarkan dari kosakata dan diabaikan selama pelatihan, sg 0 = cbow / sg 1 = skip gram 
model = FastText(LineSentence(namaFileInput), size=300, window=10, min_count=5, sg=0, workers=multiprocessing.cpu_count())
 
# trim unneeded model memory = use (much) less RAM
model.init_sims(replace=True)
model.wv.save_word2vec_format(namaFileOutput, binary=False)

Dalam penggunaaan library Gensim di atas kalian dapat dengan mudah mengatur hyperparameter dengan mempertimbangkan nilai setiap parameternya sebagaimana berikut.

size: Ukuran dimensi vector yang mewakili setiap token atau kata. Jika kalian memiliki data yang terbatas, nilai size yang digunakan sebaiknya lebih kecil karena akan mempengaruhi kata unik di sekitarnya. Namun, jika memiliki banyak data kalian dapat bereksperimen dengan berbagai ukuran.

window: Jarak maksimum antara kata target dengan kata di sekitarnya. Jika nilai window yang kalian gunakan besar, maka terdapat banyak kata terkait disekitarnya (baik di posisi kiri dan kanan dari kata konteks). Secara teori, jika window lebih kecil akan memberikan istilah yang lebih spesifik terhadap suatu konteks kata.

min_count: Frekuensi minimal jumlah kata. Model akan mengabaikan kata-kata yang tidak memenuhi nilai min_count. Kata yang jarang muncul biasanya tidak terlalu penting, jadi lebih baik untuk dihilangkan. Parameter ini mungkin lebih berpengaruh pada effisiensi penggunaan memory dan ukuran file model.

sg: 0 untuk arsitektur Word2Vec CBOW dan 1 untuk arsitektur Word2Vec Skip-gram.

workers: Berapa banyak threads yang digunakan untuk melakukan multiprocessing.

Model yang sudah disimpan dapat dilakukan skenario pencarian similarity atau hubungan antar kata seperti yang ada pada postingan saya terkait pembuatan model menggunakan Word2Vec.

  • Email
  • Facebook
  • Twitter
  • Pinterest
  • LinkedIn
Previous

Cara Kerja Word Embedding FastText | Catatan Penelitian #9

Next

Cara Kerja Long Short-Term Memory (LSTM) | Catatan Penelitian #11

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

1 Comment

  • Abhishek
    2 years ago
    Reply

    nice content, and valuable feedback

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