Instructions to use alifviansyah/indobert-sentiment-focalloss with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use alifviansyah/indobert-sentiment-focalloss with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="alifviansyah/indobert-sentiment-focalloss")# Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("alifviansyah/indobert-sentiment-focalloss") model = AutoModelForSequenceClassification.from_pretrained("alifviansyah/indobert-sentiment-focalloss") - Notebooks
- Google Colab
- Kaggle
π€οΈ IndoBERT Sentiment Analysis
Model Klasifikasi Sentimen Bahasa Indonesia
Tiga kelas utama: negatif β’ netral β’ positif
Akurasi tinggi berdasarkan dataset ulasan Bahasa Indonesia.
1. Overview
Model ini dikembangkan untuk melakukan klasifikasi sentimen teks Bahasa Indonesia, khususnya untuk ulasan e-commerce.
Untuk meningkatkan performa pada kelas minoritas, model menggunakan Focal Loss, serta Optuna Hyperparameter Tuning untuk mendapatkan konfigurasi pelatihan terbaik.
Model dapat digunakan untuk:
- Analisis sentimen ulasan produk
- Pemantauan brand sentiment
- Sistem rekomendasi e-commerce
- Riset NLP Bahasa Indonesia
Load model and tokenizer
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model_id = "alifviansyah/indobert-sentiment-focalloss"
# Load tokenizer
tokenizer = AutoTokenizer.from_pretrained(model_id)
# Load model
model = AutoModelForSequenceClassification.from_pretrained(model_id)
# Example prediction
label_map = {0: "negatif", 1: "netral", 2: "positif"}
def predict(text):
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)
with torch.no_grad():
logits = model(**inputs).logits
pred = torch.argmax(logits, dim=1).item()
return label_map[pred]
print(predict("Pengiriman cepat banget dan barangnya bagus!"))
2. Task Definition
Jenis task: Text Classification β Sentiment Analysis
Label yang digunakan:
| Label ID | Sentimen |
|---|---|
| 0 | negatif |
| 1 | netral |
| 2 | positif |
3. Dataset
Dataset terdiri dari kumpulan ulasan e-commerce Indonesia.
Struktur data:
text: isi ulasansentimen: label kategori sentimen
Karakteristik dataset:
- Teks mengandung emoji dan ekspresi informal
- Emoji dipertahankan selama preprocessing
- Pembagian data:
- Train: 80%
- Validation: 10%
- Test: 10%
Distribusi kelas tidak seimbang sehingga digunakan Focal Loss.
π― Focal Loss untuk Menangani Ketidakseimbangan Kelas
Pada kasus klasifikasi dengan distribusi kelas yang tidak seimbang, model sering kali terlalu fokus pada kelas mayoritas sehingga performa pada kelas minoritas menurun. Focal Loss dirancang untuk mengatasi masalah ini dengan memberikan bobot lebih besar pada sampel yang sulit diprediksi dan bobot lebih kecil pada sampel yang mudah diprediksi.
π Konsep Dasar
Focal Loss memodifikasi fungsi Cross Entropy Loss dengan menambahkan faktor pengali yang secara dinamis menurunkan kontribusi sampel mudah (easy examples).
Dengan demikian, model terdorong untuk lebih fokus belajar dari hard examples yang probabilitas prediksinya rendah.
Pendekatan ini sangat efektif untuk:
- masalah class imbalance
- data dengan noise tinggi
- kasus di mana kelas tertentu jauh lebih jarang
π’ Rumus Focal Loss
Formulasi matematis Focal Loss menurut Lin et al. (2017):
Dengan definisi:
Jika label benar = 1:
Jika label benar = 0:
π Keterangan Variabel
p adalah probabilitas prediksi model untuk kelas positif.
adalah probabilitas terhadap kelas yang benar.
Ξ± adalah balancing factor untuk menangani ketimpangan antar kelas.
Ξ³ adalah focusing factor yang mengatur tingkat penekanan pada sampel yang mudah diprediksi.
4. Model Architecture
| Komponen | Detail |
|---|---|
| Backbone | IndoBERT-base |
| Classification Head | Linear layer size 768 β 3 |
| Loss Function | Focal Loss (gamma=2, alpha adaptif) |
| Optimizer | AdamW |
| Scheduler | Linear learning rate scheduler |
| Tuning | Optuna search untuk LR, WD, batch size |
5. Training Configuration
| Parameter | Nilai |
|---|---|
| Epochs | 4 |
| Batch size | 16 |
| Learning rate | 3.21e-05 |
| Weight decay | 0.01 |
| Max length | 256 |
| Evaluation | per epoch |
| Save best model | yes |
| Loss | Focal Loss |
6. Summary Metrics (Tabel)
| Metric | Score |
|---|---|
| Accuracy | 0.9361 |
| Balanced Accuracy | 0.8172 |
| Precision Macro | 0.8824 |
| Recall Macro | 0.8172 |
| F1 Score Macro | 0.8445 |
| Precision Weighted | 0.9347 |
| Recall Weighted | 0.9361 |
| F1 Score Weighted | 0.9347 |
| Loss | 0.0998 |
7. Detailed Classification Report
| Kelas | Precision | Recall | F1-Score |
|---|---|---|---|
| Negatif | 0.9351 | 0.9655 | 0.9500 |
| Netral | 0.7647 | 0.5603 | 0.6468 |
| Positif | 0.9476 | 0.9258 | 0.9366 |
8. Citation
Jika Anda menggunakan model ini dalam penelitian atau publikasi, silakan sitasi dalam format berikut:
@model{indobert_sentiment_focalloss_2025,
title = {IndoBERT Sentiment with Focal Loss},
author = {Alifviansyah},
year = {2025},
url = {https://huggingface.co/alifviansyah/indobert-sentiment-focalloss}
}
- Downloads last month
- 9