Word Embedding Bahasa Indonesia menggunakan Fasttext (Part 1.5)

Updated 11 Juli 2019: Fasttext released version 0.9.1

Pada artikel sebelumnya saya sempat menuliskan bagaimana menggunakan Gensim untuk me-load pre-trained model word embedding FastText. Ternyata metode tersebut “kebetulan” mudah digunakan untuk data bahasa Indonesia. Ketika kita memilih bahasa lain yang memiliki ukuran data lebih besar, menggunakan Gensim bisa jadi memunculkan masalah karena untuk me-load pre-trained model FastText, Gensim membutuhkan resource RAM yang cukup tinggi

Sebagai contoh jika kita coba me-load pre-trained model bahasa Inggris di Google Colab yang memiliki kapasitas RAM 12GB, Google Colab akan crash karena notebook kita menggunakan sumberdaya melebihi yang disediakan.

Berikut contoh program untuk me-load model bahasa Inggris menggunakan Gensim (detail sintaks program sebelumnya sudah sempat saya bahas di post sebelumnya)

Dan hasilnya, RAM kita yang 12GB itu secara perlahan akan habis digunakan. Lalu berakhir Google Colab kita akan mengalami crash dengan pesan berikut:

Untuk itu ada cara lain yang ingin saya bahas singkat di post ini bagaimana cara me-load pre-trained model Fasttext jika RAM kita terbatas

Menggunakan Fasttext Python Library

Seperti yang telah saya singgung di artikel sebelumnya, terdapat dua library yang dapat kita gunakan saat ingin menerapkan FastText di Python. Yang pertama adalah menggunakan Gensim, dan yang kedua adalah menggunakan package resmi dari FastText. Dokumentasinya dapat dibaca di halaman github ini.

Sedikit trivia, sebenarnya package FastText hanya tersedia untuk bahasa C++ dan dijalankan menggunakan command line. Sedangkan versi Python ini awalnya dibuat lebih dulu oleh orang Indonesia, yakni Bayu Aldiansyah. Lalu package ini dilanjutkan pengembangannya oleh tim Facebook AI Research.

Proses Instalasi

Di versi terbaru, yakni 0.9.1, Proses instalasi cukup dilakukan melalui pip dengan menjalankan perintah di bawah.

Setelah terinstall, kita dapat me-load library fastText pada program python kita menggunakan perintah

Yang menurut saya kurang dari package ini adalah dokumentasinya yang masih sederhana. Saya perlu beberapa kali membaca kode sumber aslinya untuk melihat fitur-fitur yang ada pada package ini.

Load Pre-trained Model

Untuk proses me-load pre-trained model, package python fastText juga sama meminta kita untuk menyiapkan file *.bin nya bukan file *.vec nya. (bedanya apa? bisa baca post sebelumnya) Ya, walapun kita sebenarnya bisa saja mengconvert file *.vec menjadi *.bin. Sintaks untuk me-load adalah berikut:

Proses loading akan membutuhkan waktu lama, tapi tenang, RAM yang akan digunakan totalnya akan lebih sedikit dibanding saat menggunakan Gensim. Total RAM yang saya gunakan untuk me-load menggunakan package python FastText hanya sekitar 7GB

Sehingga proses mengubah kata menjadi vektor pun dapat dilakukan tanpa mengalami crash. Untuk dokumentasi lengkap fungsi-fungsi yang ada bisa lihat di file kode sumbernya. Misalnya, menggunakan Python FastText ini kita tidak hanya bisa mendapatkan vektor dari sebuah kata, tetapi juga seluruh kalimat, menggunakan method get_vector_sentence:

Sekian, semoga bermanfaat.

Mengenal Google Colab

Apa itu Google Colab?

Seperti Google Drive, Google Doc, dan sebagainya, Google Colab adalah salah satu produk Google berbasis cloud yang bisa kita gunakan secara gratis. Perbedaannya adalah Google Colab dibuat khusus untuk para programmer atau researcher yang mungkin kesulitan untuk mendapatkan akses komputer dengan spek tinggi. Google Colab adalah coding environment bahasa pemrograman Python dengan format “notebook” (mirip dengan Jupyter notebook), atau dengan kata lain Google seakan meminjami kita komputer secara gratis! untuk membuat program oleh Google.

Saya sendiri beberapa kali telah menggunakan Google Colab untuk beragam keperluan dan merasakan banyak manfaatnya, beberapa yang saya rasakan:

  • Free GPU! Google Colab memudahkan kita untuk menjalankan program pada komputer dengan spek tinggi (GPU Tesla, RAM ~12GB, Disk ~300GB yang masih bisa sambung dengan Google Drive, akses internet cepat untuk download file besar) dan running dalam waktu yang lama (Google Colab mengizinkan kita untuk merunning program hingga 12 jam). Karenanya, bagi teman-teman yang ingin belajar Deep Learning tidak perlu khawatir lagi akan terhalang sulitnya mendapatkan akses komputer dengan spek tinggi.
  • Colaborate! Google Colab juga memudahkan kita berkolaborasi dengan orang lain dengan cara membagi kodingan secara online (mirip Google Doc). Kita bisa lebih mudah bereksperimen secara bersamaan, atau sekadar menggunakan fitur ini untuk mempelajari codingan orang lain yang telah rapi (karena format notebook)
  • Mudah berintegrasi! Google Colab terbilang sangat fleksibel dalam hal integrasi. Kita dapat dengan mudah menghubungkan Google Colab dengan jupyter notebook di komputer kita (local runtime), menghubungkan dengan Google Drive, atau dengan Github
  • Fleksibel! Salah satu yang saya favoritkan adalah kita bisa dengan mudah merunning deep learning program via HP! ya karena pada esensinya Google Colab hanya perlu running di browser, kita bisa mengawasi proses training (atau bahkan coding) via browser smartphone kita selama smartphone kita terhubung dengan Google Drive yang sama.

Bagimana cara menggunakannya?

Seperti Aplikasi Google pada umumnya, yang kita butuhkan adalah akun Google dan silakan ke https://colab.research.google.com/. Setelah itu kita akan disuguhkan tampilan sebagai berikut:

Untuk membuat notebook baru, cukup klik New Python 3 Notebook (atau Python 2 tergantung apa yang akan digunakan) lalu kita akan dibawa ke halaman yang mirip dengan Jupyter Notebook. Nantinya, setiap notebook yang kita buat akan disimpan di Google Drive kita.

Pengaturan GPU

Jika kita ingin menjalankan program Python kita menggunakan GPU (atau bahkan TPU), kita cukup perlu klik “Edit > Notebook Settings”, lalu pada bagian “Hardware Accelerator” pilih GPU. Saat tulisan ini dibuat GPU yang disediakan adalah Nvidia Tesla dan sudah terinstall Cuda (software “penghubung” komputasi menggunakan GPU) versi terbaru.

Hal-hal lain seputar Colab

Di bagian ini saya akan menjelaskan catatan-catatan tambahan penggunaan Google Colab yang tidak wajib kalian tahu, tapi siapa tahu akan bermanfaat nantinya.

Package Installation

Ketika kita butuh instal python package di Colab, kita bisa melakukan instalasi menggunakan pip.

Jika diperhatikan perintahnya sama seperti perintah instalasi pip pada umumnya, hanya saja bedanya di awali dengan tanda !. Tanda tersebut digunakan sebagai penanda bahwa perintah yang akan kita jalankan adalah command line. Kita juga bisa menggunakan tanda ! untuk perintah terminal lain seperti !wget untuk mendownload dataset dan sebagainya.

Menghubungkan dengan Google Drive

Google Colab akan mereset notebook beserta semua temporary filenya maksimal 12 jam sekali. Karenanya akan lebih baik jika file yang akan kita gunakan atau kita hasilkan tersimpan dengan rapi di Google Drive. Kita bisa melakukan hal tersebut dengan menjalankan program di bawah

Jika perintah di atas dijalankan, maka kita akan diberikan URL yang akan mengantarkan kita ke halaman permohonan akses Google Drive. Jika ktia sudah mengizinkan, kita akan diberikan kode yang dapat dituliskan di kolom kecil di akhir output tersebut.

Setelah terhubung, maka akan tampak daftar file di bagian kiri Notebook

Untuk mengakses file-file tersebut, kita arahkan proses load / save ke path gdrive/My Drive/FOLDERTUJUAN

Penutup

Saya pribadi sangat merasa terbantu hingga saat ini dengan adanya Google Colab. Saya jadi tidak perlu repot izin pinjam komputer lab atau mengusulkan pembelian komputer spek tinggi di kantor. Saya sudah menggunakan Colab untuk beberapa projek Deep Learning yang tidak terlalu besar, dan sampai saat ini kesannya positif, lumayan untuk belajar atau bahkan untuk menghasilkan model yang baik di kasus-kasus sederhana. Batasan 12 jam running juga tidak terlalu menghalangi karena dengan spek komputer yang sudah baik, proses running jadi tidak perlu selama itu kok.

Selamat mencoba! dan semoga bermanfaat!