Sentiment BERT — Klasifikasi Sentimen Ulasan Film Indonesia
Model Details
Model Description
Model ini adalah BERT yang di-fine-tune untuk mengklasifikasikan
sentimen ulasan film berbahasa Indonesia menjadi dua kategori:
Positif (LABEL_1) atau Negatif (LABEL_0).
Model ini dibuat sebagai bahan pembelajaran bagi pemula yang ingin
memahami proses fine-tuning model bahasa (Language Model) dari awal
hingga publikasi di HuggingFace.
Developed by: [Faisal Jabir]
Funded by: Mandiri / pribadi
Shared by: [Faisal Jabir]
Model type: Text Classification (Binary Sentiment Analysis)
Model ini dapat langsung digunakan untuk mengklasifikasikan sentimen
teks ulasan film berbahasa Indonesia tanpa training tambahan.
python
1from transformers import pipeline
23nlp = pipeline("text-classification", model="Faisaljabir/sentiment-bert")45hasil = nlp("Film ini sangat bagus dan menghibur!")6print(hasil)7# Output: [{'label': 'LABEL_1', 'score': 0.92}]8# LABEL_1 = Positif, LABEL_0 = Negatif
Downstream Use (Opsional)
Model ini dapat di-fine-tune lebih lanjut untuk:
Analisis sentimen domain lain (produk, restoran, berita)
Dataset bahasa Indonesia yang lebih besar
Task klasifikasi teks biner lainnya
Out-of-Scope Use
Model ini tidak cocok untuk:
Teks bahasa selain Indonesia
Klasifikasi lebih dari 2 kelas (multi-class)
Aplikasi kritis yang membutuhkan akurasi sangat tinggi
Produksi skala besar (data training terlalu kecil)
Bias, Risks, and Limitations
Data training sangat kecil (30 contoh) — hanya untuk tujuan
pembelajaran. Performa tidak dapat diandalkan untuk produksi.
Domain terbatas — hanya dilatih pada ulasan film, mungkin tidak
akurat untuk domain lain.
Bahasa informal — model mungkin kesulitan dengan slang, singkatan,
atau campuran bahasa (code-switching).
Ketidakseimbangan kelas — jika data produksi berbeda distribusinya
dengan data training, performa bisa menurun.
Recommendations
Untuk penggunaan serius, disarankan:
Gunakan dataset yang jauh lebih besar (minimal 1.000 contoh)
Gunakan model berbahasa Indonesia seperti indobenchmark/indobert-base-p1
Lakukan evaluasi pada data independen sebelum deployment
How to Get Started with the Model
Cara paling sederhana (pipeline)
python
1from transformers import pipeline
23# Load model4nlp = pipeline("text-classification", model="username_kamu/sentiment-bert")56# Prediksi satu teks7hasil = nlp("Film ini sangat menghibur!")8print(hasil)9# [{'label': 'LABEL_1', 'score': 0.89}]1011# Prediksi banyak teks sekaligus12ulasan_list =[13"Ceritanya bagus dan akting pemainnya luar biasa",14"Membosankan dan tidak ada yang menarik",15"Biasa saja, tidak istimewa",16]17hasil_list = nlp(ulasan_list)18for ulasan, hasil inzip(ulasan_list, hasil_list):19 label ="POSITIF"if hasil["label"]=="LABEL_1"else"NEGATIF"20print(f"{label} ({hasil['score']:.2f}): {ulasan}")
Cara manual (untuk kontrol lebih)
python
1from transformers import BertTokenizer, BertForSequenceClassification
2import torch
34tokenizer = BertTokenizer.from_pretrained("Faisaljabir/sentiment-bert")5model = BertForSequenceClassification.from_pretrained("Faisaljabir/sentiment-bert")67teks ="Film yang sangat bagus!"8inputs = tokenizer(teks, return_tensors="pt", padding=True, truncation=True)910with torch.no_grad():11 outputs = model(**inputs)12 pred = torch.argmax(outputs.logits).item()1314print("POSITIF"if pred ==1else"NEGATIF")
Training Details
Training Data
Sumber: Data buatan (synthetic) untuk keperluan tutorial
Tokenisasi menggunakan BertTokenizer (bert-base-uncased)
Panjang maksimal token: 64
Padding ke panjang seragam
Truncation untuk teks yang terlalu panjang
Training Hyperparameters
Parameter
Nilai
Base model
bert-base-uncased
Learning rate
2e-5
Epochs
3
Batch size
8
Optimizer
AdamW
Epsilon
1e-8
Max sequence length
64
Frozen layers
Layer 0–9 (10 layer pertama di-freeze)
Trainable layers
Layer 10–11 + classifier head
Strategi Fine-tuning
Menggunakan teknik partial freezing:
10 layer pertama BERT di-freeze (tidak diubah)
2 layer terakhir + classification head dilatih ulang
Tujuan: efisiensi training dan mencegah catastrophic forgetting
Speeds, Sizes, Times
Ukuran model: ~440 MB
Waktu training: ~5–10 menit (Google Colab CPU)
Waktu training (GPU): ~1–2 menit (Google Colab T4)
Waktu inference: <1 detik per teks
Evaluation
Testing Data
Evaluasi dilakukan pada test set yang terpisah (3 data, tidak pernah
dilihat selama training).
Metrics
Metrik
Penjelasan
Accuracy
Proporsi prediksi yang benar
F1-Score
Rata-rata harmonis Precision dan Recall
AUC-ROC
Area under ROC curve (0.5=random, 1=sempurna)
Results
⚠️ Catatan: Hasil sangat bervariasi karena data test hanya 3 sampel.
Ini adalah model tutorial, bukan model produksi.
Model
Accuracy
F1-Score
AUC-ROC
MLP (tabular)
~0.67
~0.67
~0.70
BERT (teks)
~0.67
~0.67
~0.75
Hasil aktual bisa berbeda setiap run karena data sangat kecil.
Summary
Model berhasil menyelesaikan proses fine-tuning BERT end-to-end dari
data mentah hingga publikasi di HuggingFace. Untuk tujuan pembelajaran,
proses ini sudah mendemonstrasikan semua konsep penting: tokenisasi,
fine-tuning, evaluasi, dan deployment.
Model card ini dibuat sebagai bagian dari tutorial pembelajaran
Machine Learning untuk pemula. Semua konsep dijelaskan dengan
bahasa yang mudah dipahami.