galennolan/indobertweet-indoemotion-5class
IndoBERTweet untuk Klasifikasi Emosi Bahasa Indonesia (5 Label)
Model ini merupakan hasil fine-tune lanjutan dari `Aardiiiiy/indobertweet-base-Indonesian-sentiment-analysis`. Awalnya model tersebut hanya mengenali 3 sentimen: positive, negative dan neutral. Sekarang model ini dikembangkan lebih lanjut untuk mengenali lima jenis emosi dalam teks Bahasa Indonesia:
angerfearhappylovesadness
🎯 Tujuan
Model ini cocok digunakan untuk analisis emosi pada:
- Ulasan produk
- Komentar sosial media
- Respon pengguna aplikasi
- Teks pendek lain yang ditulis dalam Bahasa Indonesia
Tentang Dataset
Fine-tuning menggunakan dataset PRDECT-ID (Produk Review Dataset for Emotion Classification Task - Indonesia). Dataset ini berisi ulasan produk berbahasa Indonesia dengan label emosi yang dideskripsikan sebagai berikut:
Tabel berikut menunjukkan performa model pada set validasi per epoch:
Catatan tentang Performa: Berdasarkan hasil di atas, validation loss mulai meningkat setelah epoch ke-3, yang mengindikasikan potensi overfitting. Kinerja terbaik (berdasarkan F1-Score tertinggi pada set validasi sebelum validation loss meningkat signifikan) diamati pada Epoch 3 (F1: 0.7449, Accuracy: 0.7444, Validation Loss: 0.655473) atau Epoch 6 (F1: 0.7452, Accuracy: 0.7444, Validation Loss: 0.907782) jika F1-Score yang menjadi fokus utama meskipun validation loss sudah lebih tinggi. Pengguna disarankan untuk mengevaluasi checkpoint dari epoch-epoch tersebut atau melakukan fine-tuning lebih lanjut dengan strategi mitigasi overfitting (seperti yang didiskusikan dalam penelitian terkait model ini).
🔍 Contoh Penggunaan
Contoh penggunaan model untuk klasifikasi emosi menggunakan Hugging Face pipeline:
from transformers import pipeline
classifier = pipeline("text-classification", model="galennolan/indobertweet-indoemotion-5class")
text = "Produknya bagus tapi pengiriman lama."
hasil = classifier(text)
print(hasil)
# [{'label': 'anger', 'score': ...}]
# Decode label index
label_id = int(hasil[0]['label'].split('_')[-1])
print("Emotion:", le.inverse_transform([label_id])[0])