Word2Vec untuk Bahasa Indonesia

Update Maret 2018, posting saya yang terkait: Word2Vec dengan Python (Gensim) dan Glove

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. 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.

Iklan

4 tanggapan untuk “Word2Vec untuk Bahasa Indonesia”

  1. Pak Yudi, saya mahasiswa tingkat akhir di Universitas Diponegoro Semarang. Topik skripsi saya akan menggabungkan LDA dan Word2Vec untuk klasifikasi dokumen berita Bahasa Indonesia. Kalau diijinkan bolehkan saya melihat source code dari Bapak untuk referensi? Saya rencananya menggunakan python untuk pemrosesan LDA dan Word2Vec nya. Terima kasih

    1. Ya sebaiknya ditanyakan pada si pembuat code-nya 🙂 Tapi saran saya, lebih baik buat dual boot windows-linux atau menggunakan virtual machine Linux. Terlalu banyak masalah kalau menggunakan Windows.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s