Instructions to use dimeneid/kawantumbuh-sentimen with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use dimeneid/kawantumbuh-sentimen with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="dimeneid/kawantumbuh-sentimen")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("dimeneid/kawantumbuh-sentimen") model = AutoModelForSequenceClassification.from_pretrained("dimeneid/kawantumbuh-sentimen", device_map="auto") - Notebooks
- Google Colab
- Kaggle
KawanTumbuh Sentimen: Klasifikasi Sentimen Ulasan Aplikasi (IndoBERT)
Model klasifikasi sentimen biner (Negatif / Positif) untuk ulasan aplikasi berbahasa Indonesia. Model ini adalah hasil fine-tuning indolem/indobert-base-uncased pada ulasan Google Play Store aplikasi MobileJKN dan PrimaKu.
Demo: dimeneid/sentimen-analisis-kawantumbuh
Label diturunkan dari rating bintang: bintang 1 = Negatif, bintang 5 = Positif. Ulasan bintang 2 sampai 4 tidak dipakai.
Cara Pakai
from transformers import pipeline
clf = pipeline("text-classification", model="dimeneid/kawantumbuh-sentimen")
clf("aplikasi ini sangat bagus dan sangat membantu!")
# [{'label': 'Positif', 'score': 0.99...}]
clf("aplikasi jelek banget tidak bisa dibuka sama sekali!")
# [{'label': 'Negatif', 'score': 0.99...}]
Model dilatih pada teks yang sudah dibersihkan: URL, mention, dan simbol dihapus, huruf berulang dirapikan, kata slang dinormalkan, dan tanda baca . , ! ? dipertahankan. Untuk hasil terbaik, lakukan pembersihan serupa sebelum prediksi.
Data
Ulasan diambil dengan google-play-scraper (bahasa id, negara id, urutan terbaru), hanya bintang 1 dan 5. Nama pengguna tidak disimpan, dan data mentah tidak dipublikasikan.
| Aplikasi | Bintang 1 | Bintang 5 |
|---|---|---|
| MobileJKN | 4.000 | 4.000 |
| PrimaKu | 490 | 1.496 |
| Total mentah | 4.490 | 5.496 (9.986 ulasan) |
Pembersihan. Teks duplikat dibuang sebelum data dibagi, sehingga tidak ada teks yang sama di data latih, validasi, dan uji.
| Tahap | Jumlah |
|---|---|
| Data mentah | 9.986 |
| Setelah buang teks kosong / hanya simbol | 9.912 |
Setelah buang reviewId ganda |
9.912 |
| Setelah buang teks duplikat | 7.508 |
Komposisi setelah pembersihan:
| Aplikasi | Negatif | Positif | Total |
|---|---|---|---|
| MobileJKN | 3.830 | 2.248 | 6.078 |
| PrimaKu | 467 | 963 | 1.430 |
| Total | 4.297 | 3.211 | 7.508 |
Kelas dilanjutkan dengan undersampling acak pada kelas negatif hingga seimbang (3.211 per kelas, total 6.422). Data kemudian dibagi 80/10/10 secara stratified berdasarkan kombinasi aplikasi dan label (random_state=42): train 5.143, validation 636, test 643.
Pelatihan
| Pengaturan | Nilai |
|---|---|
| Model dasar | indolem/indobert-base-uncased |
| Learning rate | 2e-5, scheduler linear |
| Batch size | 16 (train), 32 (eval) |
| Epoch maksimum | 10, dengan early stopping (patience 2); berhenti di epoch 6 |
| Warmup | 10% dari total langkah |
| Weight decay | 0,01 |
| Max length token | 256 (padding dinamis per batch) |
| Loss | Cross-entropy dengan bobot kelas (ยฑ1,0 karena data sudah seimbang) |
| Pemilihan model | Validation loss terendah |
| Presisi / seed | FP16, seed 42 |
| Epoch | Train loss | Val loss | Val accuracy |
|---|---|---|---|
| 1 | 0,179 | 0,334 | 0,9245 |
| 2 | 0,229 | 0,277 | 0,9245 |
| 3 | 0,198 | 0,313 | 0,9277 |
| 4 | 0,156 | 0,272 | 0,9340 |
| 5 | 0,128 | 0,389 | 0,9214 |
| 6 | 0,091 | 0,364 | 0,9245 |
Bobot yang disimpan berasal dari epoch 4 (validation loss terendah).
Evaluasi
| Set | Akurasi |
|---|---|
| Train | 0,9774 |
| Validation | 0,9340 |
| Test (n = 643) | 0,9207 |
Selisih akurasi train dan validation sekitar 4,4 poin, menandakan overfitting ringan. Validation loss juga naik setelah epoch 4 (0,272 menjadi 0,389 di epoch 5), sehingga bobot dari epoch 4 yang dipakai.
Hasil pada test set: akurasi 92,07% (592/643), interval kepercayaan 95% (Wilson) 89,7% sampai 93,9%, macro F1 0,9206.
| Kelas | Precision | Recall | F1 | Jumlah |
|---|---|---|---|---|
| Negatif | 0,8974 | 0,9503 | 0,9231 | 322 |
| Positif | 0,9470 | 0,8910 | 0,9181 | 321 |
Per aplikasi (test):
| Aplikasi | Label | Akurasi | Jumlah |
|---|---|---|---|
| MobileJKN | Negatif | 0,9510 | 286 |
| MobileJKN | Positif | 0,8711 | 225 |
| PrimaKu | Negatif | 0,9444 | 36 |
| PrimaKu | Positif | 0,9375 | 96 |
Jumlah sampel PrimaKu pada test set kecil, sehingga angkanya hanya gambaran kasar. Karena data sudah di-undersampling sebelum dibagi, test set seimbang (322 negatif dan 321 positif) dan tidak mewakili distribusi asli ulasan (sekitar 57% negatif setelah pembersihan).
Analisis Kesalahan
Dari 643 data test ada 51 salah prediksi: 16 negatif ditebak positif dan 35 positif ditebak negatif. Kelompok dengan akurasi terendah adalah ulasan positif MobileJKN. Pola yang terlihat:
- Ulasan campuran atau sarkastik, yang memuji sekaligus mengeluh.
- Frasa negasi parsial seperti "kurang baik" yang kadang ditebak positif dengan keyakinan tinggi.
- Kata slang atau istilah yang jarang muncul di data latih.
- Rating yang tidak cocok dengan isi teks (misalnya bintang 5 untuk teks berisi keluhan). Ini kelemahan label dari rating, bukan semata kesalahan model.
Keterbatasan
- Data didominasi MobileJKN (sekitar 81% setelah pembersihan), dan nama aplikasi berkaitan dengan label (MobileJKN cenderung negatif, PrimaKu cenderung positif). Model bisa sebagian memanfaatkan gaya tulisan aplikasi.
- Performa pada aplikasi atau domain lain, termasuk aplikasi yang tidak ada dalam data latih, belum diuji.
- Label otomatis dari rating, bukan anotasi manual.
- Hanya dua kelas. Teks netral tetap akan dipaksa menjadi Negatif atau Positif.
- Ulasan sarkastik, bahasa campuran, dan bahasa Inggris dapat salah diklasifikasi.
- Hasil berasal dari satu kali pelatihan. Data diambil sekali (urutan terbaru), sehingga scraping ulang akan menghasilkan angka yang sedikit berbeda.
Sitasi Model Dasar
@inproceedings{koto2020indolem,
title={IndoLEM and IndoBERT: A Benchmark Dataset and Pre-trained Language Model for Indonesian NLP},
author={Koto, Fajri and Rahimi, Afshin and Lau, Jey Han and Baldwin, Timothy},
booktitle={Proceedings of the 28th COLING},
year={2020}
}
- Downloads last month
- 20
Model tree for dimeneid/kawantumbuh-sentimen
Base model
indolem/indobert-base-uncasedSpace using dimeneid/kawantumbuh-sentimen 1
Evaluation results
- Accuracy on Ulasan Google Play (MobileJKN dan PrimaKu), test splitself-reported0.921
- Macro F1 on Ulasan Google Play (MobileJKN dan PrimaKu), test splitself-reported0.921