CoolFace
Modelpublic

alifviansyah/indobert-sentiment-focalloss

sourceHugging Faceupdated 10mo agoView on Hugging Face
1likes42downloads
Model Card

<div align="center">

๐ŸŒค๏ธ IndoBERT Sentiment Analysis

Model Klasifikasi Sentimen Bahasa Indonesia

Task Language Model Status

Tiga kelas utama: negatif โ€ข netral โ€ข positif Akurasi tinggi berdasarkan dataset ulasan Bahasa Indonesia.

</div>


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

python
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 IDSentimen
0negatif
1netral
2positif

3. Dataset

Dataset terdiri dari kumpulan ulasan e-commerce Indonesia. Struktur data:

  • โ€”text : isi ulasan
  • โ€”sentimen : 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):

$$ FL(pt) = -\alpha \, (1 - pt)^\gamma \, \log(p_t) $$

Dengan definisi:

Jika label benar = 1:

$$ p_t = p $$

Jika label benar = 0:

$$ p_t = 1 - p $$


๐Ÿ“Œ Keterangan Variabel

p adalah probabilitas prediksi model untuk kelas positif.

$$ p_t $$ 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

KomponenDetail
BackboneIndoBERT-base
Classification HeadLinear layer size 768 โ†’ 3
Loss FunctionFocal Loss (gamma=2, alpha adaptif)
OptimizerAdamW
SchedulerLinear learning rate scheduler
TuningOptuna search untuk LR, WD, batch size

5. Training Configuration

ParameterNilai
Epochs4
Batch size16
Learning rate3.21e-05
Weight decay0.01
Max length256
Evaluationper epoch
Save best modelyes
LossFocal Loss

6. Summary Metrics (Tabel)

MetricScore
Accuracy0.9361
Balanced Accuracy0.8172
Precision Macro0.8824
Recall Macro0.8172
F1 Score Macro0.8445
Precision Weighted0.9347
Recall Weighted0.9361
F1 Score Weighted0.9347
Loss0.0998

7. Detailed Classification Report

KelasPrecisionRecallF1-Score
Negatif0.93510.96550.9500
Netral0.76470.56030.6468
Positif0.94760.92580.9366

8. Citation

Jika Anda menggunakan model ini dalam penelitian atau publikasi, silakan sitasi dalam format berikut:

bibtex
@model{indobert_sentiment_focalloss_2025,
  title   = {IndoBERT Sentiment with Focal Loss},
  author  = {Alifviansyah},
  year    = {2025},
  url     = {https://huggingface.co/alifviansyah/indobert-sentiment-focalloss}
}