Indonesian App Review — Sentiment Analysis using Neural Network and PyTorch

AC
Data Folks Indonesia
4 min readJul 12, 2019
neuralnetworksanddeeplearning.com

Artikel ini membahas tentang sentiment analysis salah satu aplikasi buatan Indonesia yang ada di google play store. Sentiment analysis menggunakan Neural Network.

Sentiment analysis adalah salah satu task dari Natural Language Processing (NLP) yang bertujuan untuk menganalisis sentiment dari sebuah teks dengan metode supervised learning, sehingga data baru yang masuk dapat diidentifikasi sentimentnya menggunakan machine learning.

Di artikel sebelumnya penulis juga membahas data set yang sama namun bedanya artikel yang satunya menggunakan Multinomial Naive Bayes.

Seperti pada umumnya, dalam membuat model sentiment analysis atau machine learning pada umumnya terdapat 5 steps yaitu data prep, cleansing, feature extraction, modeling, dan evaluation.

Data Preparation

Pada step ini, data yang berupa binary diload menggunakan pickle. data tersebut sudah berbentuk data frame, jadi kita tidak perlu susah susah loadnya dan mentransformasi kedalam bentuk DataFrame-nya Pandas.

kolom label itu terdiri dari 1 sampai 5 stars, review yang memiliki 3 stars dihapus. Penulis mengelompokan review negatif yang memiliki 1 dan 2 star dan positif sisanya. Dibawah ini distribusi train dan test labelnya.

Setelah dikelompokan, dataset sudah pastinya mengalami imbalance problem. Semakin menarik bukan! dengan distribusi seperti ini juga kita harus tahu dummy classifier dengan memprediksi angka 1 saja sudah mendapatkan > 80% accuracy. cukup baguskan?

Cleansing

Lanjut ke step berikutnya, cleansing. Tahap ini penulis hanya melakukan basic dan simple cleansing. pertama semua huruf di lower case. setelah itu di tokenize unigram. Lalu di filter kata yang memiliki panjang lebih dari 1. Lalu kata yang ada punctuationnya dihapus.

Biasanya tahap cleansing ini ada lagi, seperti menggunakan stemming, lemmatization dan spelling corrector. Tapi karena ini hanya untuk memberikan gambaran yang sederhana jadi penulis tidak melalukan tahap itu.

Feature Engineering

distribusi kata yang sudah di cleansing

Feature engineering ini beda dengan yang biasanya jika kita menggunakan algoritma machine learning misal pakai Naive Bayes. Pertama, kita harus encode kata kedalam angka.

Penulis melimitasi 50 kata yang akan diproses. but why? karena dari distribusi kata yang ada di corpus ini, jumlah panjang kata yang pas ada disekitaran 50, ada review yang panjangnya 250, namun kita hanya menggunakan 50 kata pertama saja. agar tidak terlalu banyak padding.

word to id

Architecture

Yo! Kalau modeling menggunakan Neural Network, kita menyebutnya architecture bukan algoritma macam Naive Bayes, Support Vector Machine, atau Decision Tree. Architecture ini terdiri dari sekumpulan layer neural network. Bisa berupa Linear layer, Covolutional Layer, atau Long Short Term Memory. Kali ini penulis hanya menggunakan Linear layer saja. Sisanya akan dibuatkan artikel terpisah. Stay tuned!

Ini penampakan arsitekturnya.

Arsitektur ini saya buat hanya dalam sekali hit, tidak ada optimasi, tidak ada tunning parameter, dibuat within 5 minutes, jadi kalau hasilnya biasa biasa saja, ya mohon maaf. :D

Oya, penulis menggunakan PyTorch, jika belum paham dengan basic PyTorch bisa bac di dokumentasinya disini. Bagi pembaca yang menggunakan Keras dan TF, yuk pindah ke PyTorch saja, biar lebih enak ngobrolnya. :D

Layer pertama menggunakan layer linear dengan input 50 neuron dan dengan output 40 neuron. Di arsitektur ini menggunakan ReLU sebagai activation functionnya. lalu stack ke-2 pakai Linear layer dengan neuron yang terus menciut sampai layer terakhir.

Pemodelan ini menggunakan adam optimizer dengan learning rate 1e-3. Menggunakan BCEwithLogitLoss sebagai loss function dan diiterasi 100 kali, ya maksudnya 100 epochs.

Result

Hasilnya gimana? Amburadul!

Accuracy validation score hanya sampai sekitar 88%. Untuk pemodelan selanjutnya bisa menggunakan L2-Norm, BatchNorm, Dropout, atau terakhir Data Augmentation. Mencari arsi yang robust terhadap imbalance data set susah susah gampang memang.

Conclusion

Artikel ini bertujuan untuk memberikan gambaran bagi pembaca yang ingin melakukan pemodelan sentiment analysis menggunakan neural network. Penulis sadar teknik yang digunakan sangat sederhana. Teknik yang tidak sederhana akan ada artikel yang akan datang.

UPDATE: Code dan Data bisa dicek disini

Sekian,

Jika menurutmu tulisan ini bermanfaat mohon untuk clap nya ya :D

Dan jangan lupa follow mediumnya Data Folks Indonesia dan Channel di Telegram t.me/datafolks

--

--