Blog
23/07/2019

Memperluas Pengetahuan Chatbot dengan Machine Reading


Chatbot di era sekarang bukan hanya tentang riset bagaimana machine bisa memahami bahasa manusia dan membalas balasan yang relevant dengan apa yang ditanyakan. Lebih dari itu, chatbot merupakan salah satu pemercepat revolusi industri baru yaitu revolusi industri 4.0. di era teknologi yang distruptif seperti sekarang karena munculnya teknologi yang bernama artificial intelligence, banyak lapangan pekerjaan yang mau tidak mau harus tergantikan untuk efektivitas pekerjaan.

Riset dari Business Insider yang disaduh dalam artikel chatbot megazine memperkirakan bahwasannya pada tahun 2020, kalangan enterprise akan menggunakan chatbot sebanyak 80% dan menurut Lauren Foye, pada tahun 2022, 90% bank akan mengautomasi interaksi dengan pelanggannya, salah satu client kami (Bank Negara Indonesia) sudah mengadopsi chatbot untuk keperluan informasi bank hingga transfer ke rekening lain hanya dengan suara. Jadi booming chatbot untuk keperluan industri tidak hanya berlaku di negara maju, negara berkembang seperti Indonesia juga mulai mengadopsi hal tersebut.

Chatbot pada dasarnya ditugaskan untuk memahami apa konteks yang pelanggan (user) maksud, kemudian membalasnya dengan konteks yang sesuai. Namun, setiap konteks memiliki masukan yang berbeda-beda, bahasa manusia punya cara yang sangat fleksibel. Misal jika akan beli tiket pesawat, banyak sekali cara pengucapan yang dilakukan; “tiket pesawat”, “pesan tiket pesawat ke Jakarta dong”, “tiket pesawat dari Bandung ya”, dll, sehingga sebisa mungkin kita beri data training yang cukup banyak dan cukup umum supaya jika ada kalimat baru yang tidak ada di training data, machine tetap bisa menangkap konteks yang sama.

Namun bisa dibayangkan jika perusahaan besar seperti bank BNI, banyak sekali fitur yang akan diimplementasikan ke dalam chatbot sehingga dibutuhkan data training yang luar biasa banyak, salah satu ide kami untuk mengefesiensikan pekerjaan input data adalah membuat machine yang mampu memahami konteks kalimat dari suatu paragraf kemudian membalas pertanyaan berdasarkan paragraf yang ada. Setelah beberapa saat waktu riset, kami memutuskan algoritma NLP yang umum disebut sebagai machine reading comprehension atau juga bisa disebut question-answer algorithm.

Riset

Kami melakukan riset algoritma mana yang memungkinkan untuk bisa kami gunakan dan modifikasi sesuai bahasa Indonesia, bagaimana sistem pelabelan datanya (karena tidak ada dataset bahasa Indonesia untuk algoritma ini), jika sudah didapatkan modelnya apakah bisa melakukan prediksi dengan cepat sehingga user tidak perlu menunggu terlalu lama untuk mendapat jawabannya. Kami melakukan riset untuk modelnya saja tiga jenis model, kemudian nantinya akan kami uji manakah model yang paling sesuai dengan kebutuhan.

Membuat Data Training

Perkembangan bidang AI lain seperti computer vision (CV) lebih cepat dibandingkan NLP salah satu alasannya adalah karena data dari NLP bergantung bahasa yang digunakan, tidak dengan CV yang tidak bergantung dengan ras dan bahasa manusia, misalnya untuk mendeteksi object ponsel di semua tempat mempunyai bentuk yang serupa. Seringkali pengembangan suatu model NLP dimulai dari pengembangan model NLP menggunakan bahasa Inggris, untuk digunakan ke dalam bahasa lainnya seringkali terkendala akan ketersedian dataset. Salah satu cara terbaik untuk membuat data training yaitu membuat data training dari dasar, mulai dari pemilihan kata (dalam hal ini paragraf dan pertanyaan) dan label (jawaban).

Kami membuat dataset berupa paragraf, pertanyaan dan jawaban secara manual dari berbagai artikel. Pertanyaan yang dibuat terdiri dari 5w+1H, kami membuat data seseimbang mungkin antara pertanyaan yang berhubungan dengan what, when, who, where, why dan how. Selain keseimbangan jenis pertanyaan yang dijaga, tipe artikel yang diambil juga dari berbagai jenis artikel seperti sejarah, biografi, berita, sains-fiksi, olahraga, dll. Harapannya machine dapat memahami konteks yang lebih umum, tidak spesifik untuk keperluan tertentu saja.

Dataset yang kami buat dibuat secara bertahap mulai dari manual labeling, kemudian memanfaatkan model yang sudah cukup bagus akurasinya (lebih dari 80%) untuk membuat data semi automatis dengan batasan-batasan nilai confidence tertentu. Sampai dengan tahap paling terakhir saat ini kami mempunyai lebih dari 17 ribu dataset question-answer dalam bahasa Indonesia dengan proses di atas.

Proses Pelatihan (Training)

Setelah mempunyai ribuan dataset yang dilabeli secara manual dan juga riset model mana yang akan digunakan sebagai model dasarnya, selanjutnya kami memulai training dengan data awal dan arsitektur model paling awal. Menggunakan arsitektur (algoritma) yang pertama, kami training menggunakan GPU selama kurang lebih dari 8jam, dengan hasil skor F1 sekitar 63%. Kemudian menggunakan model yang lebih mendekati state of the art (SOTA) di beberapa task NLP, kami menghasilkan model yang jauh lebih baik meskipun dengan dataset yang sama persis (training dan testing split sama), hasil dari validasi test didapatkan skor F1 lebih dari 80%. Model terbaru tersebut kami gunakan untuk mengautomatsi pelabelan data dengan pemberian nilai threshold sangat tinggi.

Model terakhir kemudian kami training kembali menggunakan dataset terakhir yang terdiri dari lebih dari 17 ribu pasang pertanyaan-jawaban menggunakan jenis processor yang lebih mumpuni, yaitu menggunakan TPU (tensor processing unit). Proses training di TPU memakan waktu yang sangat singkat, tidak lebih dari 1 jam, kami mempunyai perkiraan jika menggunakan GPU yang sama seperti sebelumnya, proses training bisa selesai dalam waktu lebih dari satu hari. Akhirnya kami mempunyai sebuah model yang mempunyai SOTA dalam berbagai task NLP, serta dataset yang cukup besar, akurasinya meningkat beberapa persen dari nilai terakhir, sekitar 84% skor F1.

Kesimpulan

Serangkaian pengumpulan data, pembersihan, training dan validasi sudah dilakukan secara berulang sehingga dihasilkan model yang punya akurasi tinggi dan mampu menjawab pertanyaan-pertanyaan yang tidak pernah dilatih sebelumnya. Machine reading yang kami buat dapat memberi solusi salah satu masalah di chatbot dimana chatbot tanpa machine reading hanya menjawab pertanyaan yang pernah dilatih saja, selain itu dengan minimal input data, machine reading mampu menjawab pertanyaan pada domain terbuka, apapun jenis pertanyaan kemungkinan bisa terjawab oleh bot menggunakan machine reading.

Model yang sudah kami buat, bisa dapat dicoba langsung oleh umum pada web halaman kami di Lenna.ai atau bisa juga langsung terhubung dengan chatbot yang Anda buat pada platform bagian machine reading, karena kami open platform chatbot. Setiap bot yang dibuat juga bisa dihubungi melalui berbagai channel; whatsapp, line, telegram, facebook messenger dan juga bot integration.

Di bawah hasil prediksi machine reading kami yang sudah kami deploy di platform 

Hasil machine reading di platform Lenna.ai

Jadi selain mampu untuk transaksi seperti aplikasi mobile Lenna (android dan iOS), bot mampu menjawab pertanyaan pengetahuan-pengetahuan yang bisa jadi pengguna belum mengetahui jawabannya, cerdas bukan?

chatbot
machine learning
machine reading
natural language processing
platform chatbot

author_avatar
Khaerul Umam
Lenna Team Since Jul 2019

Machine Learning Engineer at Lenna.ai