Word2Vec untuk Bahasa Indonesia

17 November 2016 at 10:10 | Posted in Uncategorized | Leave a comment

Saat saya googling sepertinya belum ada yang membagi model Word2Vec untuk corpus bahasa Indonesia. Saya yakin sudah ada yang melakukan sih, tapi belum sempat membaginya.  Intinya saya akan membuat Word2Vec model untuk semua artikel Wikipedia bahasa Indonesia. Hasilnya adalah pre-trained model yang nanti bisa digunakan untuk berbagai task NLP.  Sedangkan pembahasan seputar Word2vec atau embedded word sudah banyak di internet, jadi tidak perlu saya tulis di sini lagi.

Selanjutnya saya akan bahas proses pembuatannya, tapi kalau ada yang mau langsung menggunakan model ini, dapat download (500 MB) di: drive.google.com/file/...  sedangkan untuk menggunakannya, baca deeplearning4j.org/word2vec di bagian me-load model.

Proses yang saya lakukan adalah sbb (sekali lagi anda bisa langsung menggunakan pretrained model seperti yang saya tulis diparagraph sebelumnya tanpa perlu download wipedia dan men-train-nya). Untuk mendonwload XML Wikipedia bahasa Indonesia, ambil dari dumps.wikimedia.org/idwiki/latest/  pilih file xml-nya  yang dizip seperti: idwiki-latest-pages-articles.xml.bz2.  Ukurannya tidak terlalu besar, 300MB dan setelah diunzip menjadi 1.8GB. Bandingkan dengan Wikipedia bahasa Inggris yang setelah diekstrak mencapai 55GB! Memang artikel wikipedia berbahasa  Indonesia masih terbatas.

XML ini perlu diproses untuk membuang tag dan karakter-karakter yang tidak diperlukan. Rencananya akan saya share source code-nya tapi sekarang masih berantakan dan masih ada beberapa bug (kontak saja kalau ada yang perlu). Yang saya lakukan adalah memindahkan XML ini ke beberapa file teks dan satu file terdiri atas beberapa artikel.

Karena saya lebih nyaman menggunakan Java, saya menggunakan library DeepLearning4J : deeplearning4j.org/word2vec (ada penjelasan yang bagus juga tentang word2vec disana). Saya sangat anjurkan menggunakan Gradle, karena mempermudah penggunaan library. Konfigurasi Gradlenya seperti ini:

compile "org.nd4j:nd4j-native-platform:0.6.0"
compile "org.deeplearning4j:deeplearning4j-core:0.6.0"
compile "org.deeplearning4j:deeplearning4j-ui:0.6.0"
compile "org.deeplearning4j:deeplearning4j-nlp:0.6.0"
compile "org.nd4j:nd4j-x86:0.6.0"

Bagian yang perlu dimodifikasi adalah SentenceIterator yang tadinya hanya memproses satu file, sekarang memproses beberapa file. Proses training dengan konfigurasi berikut memakan waktu kira-kira 2 jam.

minWordFrequency(5)
.iterations(1)
.layerSize(100)
.seed(42)
.windowSize(5)

Setelah dicoba, ada beberapa hasil yang menarik:

  • 5 kata yang terdekat dengan Jakarta didapat: bekasi, tangerang, ciputat, setiabudi, rawamangun
  • 5 kata terdekat dengan Bandung: cimahi, bogor, bekasi, gegerkalong, salatiga  (salatiga aneh)
  • 5 kata terdekat dengan presiden: menteri, kabinet, azarov, valdis, phomvihane (tiga kata terakhir sepertinya presiden suatu negara, tapi kenapa?)
  • 5 kata terdekat dengan bakso: sate, bakmi, rujak, goreng, gorengan
  • Untuk kasus analogi klasik: king – queen = man – woman. Jika inputnya Ratu : Raja maka Perempuan: ?). Yang didapat: perempuan, laki-laki, orang, seonbi, keluarga. Harusnya laki-laki yang pertama, kenapa ini dapatnya perempuan lagi ya?
  • Kasus analogi lain: minum:air = makan: ?  hasilnya juga aneh: air, ceruk-ceruk, panoramanya, bentuang, balangdaras

Sepertinya untuk kemiripan atau kedekatan kata model ini sudah cukup baik, tapi untuk analogi masih berantakan. Perlu penelitian lebih lanjut.

Berikutnya saya mau coba corpus berita dan twitter yang dikumpulkan mahasiswa saya.

 

Leave a Comment »

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.
Entries and comments feeds.

%d bloggers like this: