Indonesian App Review — Sentiment Analysis
Sentimen analisis adalah salah satu task dari text mining. Sentiment analisis juga menjadi projek yang paling utama bagi orang orang yang baru belajar machine learning menggunakan data teks.
Artikel kali ini membahas bagaimana mengolah review salah satu aplikasi e-commerce Indonesia. Artikel ini bertujuan untuk bagi yang sedang mempelajari text mining dan sentimen analisis dapat dengan mudah memahami dan mengimplementasikannya.
Data yang digunakan didapatkan dengan cara scraping google play review menggunakan BeautifulSoup, kemudian diparsing sedemikian rupa sehingga kita dapat langsung mengolahnya dengan mudah seperti yang terlihat dibawah.
Karena yang belum ada label positif dan negatif, maka penulis menggunakan rating dari review yang diberikan. rating 1 dan 2 dikategorikan sebagai negatif, rating 4 dan 5 sebagai positif, dan rating 3 dihapus. Distribusi label tiap tiap set bisa dilihat dibawah.
Setelah dikelompokan, distribusi datanya lebih banyak kategori positif review. positif dan negatif direpresentasikan sebagai 1 dan 0. Melihat distribusi datanya, maka dataset yang akan diolah mengalami masalah imbalance. Hal ini menjadi semakin menarik untuk dimodelkan, karena untuk menguji apakah model bisa membedakan dengan baik mana review yang negatif walaupun datanya sedikit.
Eksperimen kali terdiri dari 5 steps yaitu data preparation, cleansing, feature extraction, model, dan evaluation. Tidak ketinggalan pula beberapa libraries python yang dipakai dalam membuat sentiment analysis.
Data Preparation:
Karena data yang tersedia dalam format .res maka untuk membacanya menggunakan pickle. format ini dibuat oleh penulis sendiri dengan tujuan menseragamkan dengan dataset lainnya. Setelah diload oleh pickle, ditransformasi kedalam pandas dataframe.
Cleansing
Cleansing merupakan step data yang akan diolah harus dibersihkan terlebih dahulu. Proses cleansing dalam text mining bisa berupa menghapus tanda baca seperti koma, titik, tanda seru dan lain lain. Selain itu juga jika diperlukan stopwords, stemming, lemmatization, dan top frequent dan low frequent. Dalam pemodelan ini penulis menggunakan token unigram, panjang kata lebih dari 2 dan kata merupakan alpha numeric.
Feature Extraction
Feature extraction merupakan sebuah step untuk mentransformasi teks kedalam angka atau yang bisa disebut feature representation. Terdapat beragam teknik untuk merubah teks kedalam array, tapi pada dasarnya kata kata unik dalam corpus itu yang menjadi featurenya. Feature extraction yang umum digunakan dalam sklearn adalah Count Vectorizer dan TF-IDF. Selain itu juga ada word embedding yang tidak dibahas dalam artikel ini. Count Vectorizer ini mudahnya menghitung semua kejadian kata dalam satu dokumen sedangkan tf-idf memberikan bobot masing masing kata.
Model
Sentimen analisis ini termasuk supervised learning, karena kita harus memiliki labelnya. Terdapat banyak sekali algorima supervised learning, mulai dari Support Vector Machine, Decision Tree, Naive Bayes, XGBoost, dll. Namun kali ini, penulis menggunakan multinomial naive bayes dengan alpha 1.0
Evaluation
Tahap evaluasi ini untuk menentukan apakah model yang dibuat performanya sudah baik atau belum. biasanya model machine learning dikatakan bagus jika metrics yang dijadikan acuan > 85%. Angka threshold ini balik lagi ke projek awal seberapa tinggi score model ini harus dicapai.
Pemodelan kali ini mendapatkan hasil yang cukup bagus… ya bisa dibilang bagus… mengejukan, tapi tidak begitu mengejutkan… bingung kan? ya begitulah. Karena datasetnya imbalance, maka tidak cocok jika kita menggunakan metric accuracy, bayangkan saja, jika kita menebak angka 1 saja tanpa melihat datanya, nilai akurasinya ~87 % di test set.
Penutup
Penulis menyadari teknik yang digunakan sangat dasar sekali, melakukan sentiment analisis ini juga mengerjakannya dalam 5 menit, lebih lama nulis artikel ini ketimbang membuat modelnya. Artikel ini juga mengupayakan untuk membantu pembaca dalam memahami bagaimana melakukan sentimen analisis tahap awal. Penulis juga sering mendapatkan pertanyaan pertanyaan dasar, contoh permasalahan yang cukup sederhana namun berujung debat yaitu bagaimana cara menentukan label positif dan negatif, banyak yang melakukannya dengan manual labeling, well… hal ini bisa saja subjektif dan tidak konsisten yang mana akan berdampak pada score modelnya. selain itu juga masalah lain yang timbul, bagaimana mentransformasi teks kedalam angka. dan yang terakhir yang ditunggu tunggu.. datanya? saat ini penulis sedang membuat group namanya jakarta research, group ini bertujuan untuk mewadahi orang orang yang menyukai riset dalam bidang machine learning dan deep learning.
Mungkin jika semua dataset sudah siap, penulis akan mengupload ke repo indonesian-sentiment, dan jangan lupa untuk subscribe channel group telegram t.me/datafolks untuk mendapatkan update update terbaru seputar data science dan event-event khususnya di Jakarta.
Sekian,
Jika menurutmu tulisan ini bermanfaat mohon untuk clap nya ya :D