Wednesday, June 28, 2017

Figure Out How to Apply Machine Learning


Sebenarnya kemarin aku udah selesai buat program Java sesuai spesifikasi. Tapi singkatnya tugas project ini nambah spek: bikin sistem yang bisa belajar dari correct input yang dimasukin user misalkan tebakan sistem salah. Artinya, program nggak hanya harus bisa memprediksi mana nama company, tax rate, tanggal, dalam sebuah invoice, tapi juga harus bisa beradaptasi dengan masukan user kalau tebakan program salah. Nah, di sini kita harus apply machine learning.

Hari ini aku nyari tau bagaimana supaya bisa apply machine learning di masalah ini. Dan akhirnya ketemu sebuah solusi. Apabila user memasukkan teks, kita bisa tahu lokasi teks tersebut di mana. Lokasi ini berupa x-y koordinat dari invoice. Lokasi ini akan dimasukkan sebagai parameter/fitur/atribut dalam machine learning. Dan class/prediksi-nya adalah berupa binary class, yes atau no, artinya apakah teks yang bersangkutan merupakan field yang kita cari.

Simpelnya, misal kita ingin menebak apa nama company yang menerbitkan suatu invoice. Berdasarkan track record masukan user, dapat diketahui bahwa biasanya nama company terletak di ujung kiri atas. Nah, apabila nanti ada invoice baru yang masuk, model machine learning kita akan menebak field nama company dengan teks yang ada di ujung kiri atas invoice. Gampangannya seperti itu. Di implementasi programnya, tidak begitu mudah karena komputer nggak punya visual mata seperti kita jadi kita harus apply algoritma machine learning.

Kenapa harus pake machine learning? Karena format invoice akan ada banyak sekali, sekitar ratusan. Kalo format invoice cuma satu, kita bisa gunakan regex atau rule-based program aja berdasarkan properti field yang bersangkutan (contoh field: nama company, tanggal, dst.). Sayangnya bisa saja format invoice bisa berbeda-beda, company A suka naruh nama di ujung kiri atas, company B di ujung kanan atas, company C di bawah setelah alamat perusahaan, dst. Selain kita apply machine learning untuk memprediksi di mana lokasi sebuah field biasanya, kita juga perlu apply machine learning untuk mengidentifikasi apakah format template dari invoice sudah pernah ada sebelumnya atau tidak. Ini bisa diselesaikan dengan image similarity.

Untuk besok, rencanaku adalah implementasi module converter PDF ke sentence per block menggunakan tool ini. Trus aku bakal mempersiapkan training data buat eksperimen machine learning nanti, sambil menunggu data mentahnya dikasih dari Tomita-san. Setelah itu, kita bakal sering mencebur ke algoritma-algoritma yang disediakan Weka, buat nyari mana algoritma yang paling bagus untuk memprediksi apa yang kita butuhkan.

Oiya, pulang dari kantor aku sempet ngefoto beberapa hal.

Supir shuttle bus kantor (Gotenyama Trust Tower) - Shinagawa station.
Bus ini gratis!

Bahkan dalam bus pun ada gambar beruang lucu.
Betapa Jepang sangat terobsesi dengan hal-hal imut.

Orang menyeberang di jam kerja pas rush hour.
Kalo di Jakarta mungkin yang rame jalanannya, macet.

Jalan raya depan Shinagawa station. Sepi walaupun rush hour

View lain, masih di Shinagawa. Serasa kayak di Jepang.

Kereta Yamanote Line PENUH PARAH buset sampe desak-desakan.
Ini sekitar jam 6-7. Wajar karena orang-orang pulang kerja.

Sampe mau masuk pun sesusah itu tapi masih dipaksain.

Majalah dewasa sangat mudah ditemukan di convinience store terdekat.
Jangan khawatir!

Oke, cukup sekian. Sampe jumpa besok!

Tuesday, June 27, 2017

Present the Demo of Program


Hari ini aku implementasi core otak dari intern project. Bikin fitur yang bisa recognize mana nama company dari raw text hasil scan dari PDF, aku pake library Stanford NLP Group buat Name-Entity Recognition. Trus aku implemen fitur yang bisa recognize mana aja row di hasil scan-an invoice, kodingan traversal biasa, parsing text pake Java. Programnya jadi. Setelah dapet masalah dengan banyak dependensi, akhirnya berhasil bikin jar gemuk yang isinya program yang ke-include semua dependensinya, jadi agak besar ukurannya, sekitar 50 MB-an.

Programnya kelar hari ini. Dan after debugging for some time, akhirnya it works! Basically aku sudah implemen dan program udah bisa jalan sesuai permintaan. Kemudian aku nge-ping si boss lewat Slack bilang ada waktu bentar ga buat liat hasil karyaku yang udah bisa dipake ini.

Sore sekitar jam 5 aku mulai demoin program yang udah kubikin ke Tomita-san. Kita bicara dengan bantuan Fukui-san sebaga translator. Intinya dapet banyak masukan supaya bisa learning dari previous document, dengan pendekatan ngenalin lokasi dari teks yang mau kita cari. Ini aku belum kebayang sama sekali learning buat recognize locationnya kayak gimana. Pusing. Kayaknya mau mulai dipikir besok pagi.

Dan, sekian. Hari ini ga jalan ke mana-mana. Terlalu lelah koding. Mau tidur aja. Bye!

Monday, June 26, 2017

Implement Invoice Extractor


Hari ini hari Senin, udah bukan weekend lagi. Aku mulai implementasi intern project. Fungsionalitas utama program yang kubuat adalah generate dari PDF invoice jadi tabel CSV.

Untuk NLP-nya, aku pake Stanford Natural Language Processing tool. Mereka ngembangin NER (Named-Entity Recognition) Tagger yang open source dan punya interface yang langsung dipake dengan gampang. Dengan NER Tagger, kita bisa langsung tau mana yang nama organisasi/orang/tempat dalam suatu teks.

Untuk konversi image ke text aku pake Tesseract. Sayangnya Tesseract hanya support PNG/JPG. Jadi kalo kita punya file PDF, harus di-convert dulu ke image. Aku pake Ghostscript library buat convert format dari PDF ke PNG.

Selesai kerja, aku ke Shibuya. Ketemu toko namanya Itsudemo :(

Itsudemo sagashite iru yo.
https://www.youtube.com/watch?v=BqFftJDXii0
Habis itu aku muter nyari toko yang jual koper. Koperku rusak. Dua rodanya patah jadi harus diangkat kalo mau pindah. Somehow sangat nggak nyaman buat balik ke Indo nanti. Setelah muter lama akhirnya ketemu koper di Loft, dan ada yang lagi sale.

New luggage! 
Mas-mas ngamen di Shibuya crossing


Sekian. Sampai jumpa besok!

Sunday, June 25, 2017

Wakwaw, Lihat Bagaimana Orang Ini Merayakan Idul Fitri di Tokyo! Nomer 6 Akan Membuat Anda Terkejut!



Saya mengucapkan selamat Hari Raya Idul Fitri bagi semua pembaca blog sekalian, semoga kalian baca ini yaa, amiin.  Mohon maaf apabila ada kata yang salah di setiap post di blog ini.

Hari ini Idul Fitri! Sayangnya karena sedang ada di Jepang, suasana Idul Fitrinya kurang terasa. Jadi ya, rasanya mirip hari Minggu lainnya. Untungnya Idul Fitri kali ini jatuh di Hari Minggu jadi nggak perlu izin kerja macem-macem buat solat Ied. Namanya juga Jepang, nggak ada libur hari raya, beda banget sama Indo yang emang mayoritas muslim dan kalo Idul Fitri bisa libur sampe 2 minggu.

Boys Day Out to Akiba and Shibuya

Meiji shrine
Weekend! Wira (IF2012) bilang sangat penat tiap weekend selalu di kampus. Jadi dia memutuskan buat jalan-jalan! Dia mau ngajak Iskandar (IF2011) sama Michi (IF2012) juga. Jadi simpelnya kita janjian jam 12.30 pm di exit stasiun Harajuku/Meijijingu-mae. Kali ini summer. Matahari terik tapi ga terlalu panas. Pakaian orang cerah warna-warni. Udara sejuk. Banyak orang keluar jalan-jalan.

Wira lagi S2 di bidang NLP (Natural Language Processing) di Tokodai (Tokyo Institute of Technology), semacam ITB-nya Jepang. Iskandar sama Michi software engineer di HDE, Inc di Tokyo. Mereka menetap di Jepang udah lumayan lama, udah sangat terlihat kayak penduduk lokal sini.

Solat Jumat Pertama di Tokyo


Hari ini sahur cukup istimewa karena aku sahur hasil masakan sendiri. Udah nemu beras di supermarket. Dan tinggal masak. Ada indomie bawa dari Indo. Dan ada abon. Beginilah hasilnya.

Nasi, indomie, abon. Porsi kuli

Saturday, June 24, 2017

Turkish Food at Tokyo Camii


Thao gives me this at the office!

Fish cracker
Thao adalah cewek Vietnam yang kerja di Multibook juga. Mejaku ga jauh ama meja dia. Dia bicara Vietnam ama Jepang. Sama sedikit Inggris. Tapi Inggrisnya broken parah. Dia ngasih makanan itu hari ini, tapi aku lagi puasa. Aku bilang aku lagi puasa dalam Inggris, tapi dia ga ngerti. Aku jelasin puasa itu apa. Makin ga ngerti lagi. Susah juga jelasin puasa itu apa kalo yang bersangkutan ga familiar dengan Islam, dan terkendala bahasa juga hahaha. Anyway, dia baik banget. Lucu! Dan sweet juga!

Kawan Blogger