IndoBERT Sentiment Analysis (GovTech Apps) - LoRA

Model klasifikasi sentimen teks Bahasa Indonesia (positif/netral/negatif) untuk ulasan aplikasi layanan publik, menggunakan LoRA fine-tuning di atas IndoBERT base.

Model

  • Base model: indobenchmark/indobert-base-p1
  • Task: Sequence Classification (3 kelas)
  • Metode: LoRA (Low-Rank Adaptation) - r=8, alpha=16, dropout=0.1, target modules query & value
  • Label mapping: 0 = positif, 1 = netral, 2 = negatif

Dataset

Ulasan Google Play dari 4 aplikasi layanan publik Indonesia (JAKI, SatuSehat, BPJS Kesehatan, BPJSTKU). 2.399 ulasan setelah cleaning, split 80/10/10. Label digenerate dari rating bintang (1-2 negatif, 3 netral, 4-5 positif).

Distribusi: positif 960, negatif 959, netral 480.

Evaluasi (test set, 240 data)

Metrik Baseline (majority) LoRA
Accuracy 0.400 0.617
F1-macro 0.190 0.469

Cara Pakai

from transformers import AutoModelForSequenceClassification, AutoTokenizer
from peft import PeftModel

base = "indobenchmark/indobert-base-p1"
model = AutoModelForSequenceClassification.from_pretrained(base, num_labels=3)
model = PeftModel.from_pretrained(model, "corpv/indobert-sentiment-govtech-lora")
tokenizer = AutoTokenizer.from_pretrained(base)

text = "aplikasinya sering error saat mau login"
inputs = tokenizer(text, return_tensors="pt")
logits = model(**inputs).logits
pred = logits.argmax(-1).item()  # 0=positif, 1=netral, 2=negatif

Limitations

  • Label berasal dari rating bintang, bukan human-annotated murni (dapat noisy).
  • Kinerja kelas netral masih rendah (recall rendah) karena data minoritas & label ambigu.
  • Ditujukan untuk teks informal Bahasa Indonesia pada domain aplikasi layanan publik.
Downloads last month
16
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support