Program ini merupakan submission alur belajar Data Scientist pada platform Dicoding dan bagian dari IDCamp 2024 Level Menengah. Proses analisis bertujuan mengetahui sentimen menggunakan klasifikasi teks untuk mengidentifikasi dan mengevaluasi opini, sikap, atau emosi yang terkandung dalam teks ulasan aplikasi MyPertamina.
Program ini menggunakan berbagai library Python untuk web scraping, pemrosesan teks, dan machine learning.
- Web scraping dilakukan menggunakan Google Play Scraper untuk mengumpulkan ulasan aplikasi MyPertamina.
- Dataset yang digunakan memiliki minimal 10.000 sampel.
- Pelabelan sentimen dilakukan berdasarkan leksikon Bahasa Indonesia dengan tiga kelas sentimen: positif, negatif, dan netral.
Proses preprocessing dilakukan untuk membersihkan dan menyiapkan data agar siap digunakan dalam model machine learning. Langkah-langkahnya meliputi:
- Cleaning data (menghapus karakter khusus, emoji, dll.)
- Case folding (mengubah semua teks menjadi huruf kecil)
- Tokenization (memisahkan teks menjadi kata-kata)
- Stopword Removal (menghapus kata-kata yang tidak memiliki makna signifikan dalam analisis sentimen)
- Digunakan leksikon kata positif dan negatif dalam Bahasa Indonesia.
- Kolom target (label sentimen) adalah content yang telah diproses menjadi text_akhir.
- Distribusi sentimen dihitung untuk memastikan keseimbangan kelas dalam dataset.
Distribusi menunjukkan bahwa persepsi pengguna terhadap MyPertamina cenderung beragam, dengan mayoritas ulasan bersifat netral hingga negatif. Hal ini bisa menjadi masukan bagi pengembang aplikasi untuk meningkatkan pengalaman pengguna agar lebih banyak ulasan positif di masa mendatang.
Model machine learning yang digunakan dalam proyek ini:
- Ekstraksi fitur menggunakan TF-IDF (Term Frequency-Inverse Document Frequency)
- Ekstraksi fitur menggunakan Word2Vec
- Akurasi tertinggi sebesar 92,26%.
- Precision, recall, dan f1-score rata-rata di atas 0,90 untuk setiap kelas.
- Kelas 1 memiliki recall tertinggi (0,95), sedangkan kelas 2 memiliki precision tertinggi (0,94).
- Confusion Matrix: Sedikit misclassification, terutama pada kelas 0 dan 2.
- Akurasi 91,46%, sedikit di bawah SVM namun masih tinggi.
- Kelas 1 memiliki recall tertinggi (0,96), menunjukkan model dapat menangkap data kelas ini dengan baik.
- Kelas 2 memiliki precision 0,93, menandakan tingkat kesalahan prediksi yang rendah.
- SVM lebih sedikit salah memprediksi kelas 0 dan 2, menghasilkan akurasi lebih tinggi.
- RandomForest lebih akurat dalam memprediksi kelas 1, tetapi mengalami lebih banyak kesalahan pada kelas 0 dan 2.
- Kesalahan prediksi sering terjadi antara kelas 0 ↔ 1 dan 1 ↔ 2, menandakan kemiripan ekspresi antara sentimen netral dan positif/negatif.
- Akurasi lebih rendah (78,93%) dibandingkan TF-IDF.
- Kelas 1 memiliki precision tertinggi (0,92), sedangkan kelas 0 memiliki recall tertinggi (0,85).
- Word2Vec memerlukan fine-tuning lebih lanjut agar dapat menangkap konteks lebih baik dibandingkan TF-IDF.
- Model masih mengalami banyak misclassification.
- SVM dengan TF-IDF + SMOTE adalah model terbaik untuk analisis sentimen ulasan MyPertamina dengan akurasi 92,26%.
- RandomForest dengan TF-IDF memiliki performa yang hampir setara dengan SVM (91,46%), tetapi lebih banyak kesalahan pada kelas tertentu.
- Word2Vec memerlukan penyesuaian lebih lanjut, karena hasilnya masih di bawah TF-IDF dalam menangkap pola sentimen dari teks ulasan.
- Python (pandas, numpy, scikit-learn, TensorFlow, gensim, Sastrawi, Google Play Scraper)
- Google Colab untuk eksperimen dan training model
- Clone repositori ini:
git clone https://github.com/username/sentiment-analysis-mypertamina.git
- Install dependensi yang dibutuhkan:
pip install -r requirements.txt
- Jalankan notebook sentiment_analysis.ipynb di Google Colab atau Jupyter Notebook.
Proyek ini dilisensikan di bawah MIT License.