CoolFace
Modelpublic

loudersyoakim/absa-indobert-asc

sourceHugging Faceapache-2.0updated 22d agoView on Hugging Face
1likes33downloads
Model Card

ABSA-IndoBERT-ASC (Aspect Sentiment Classification)

Model ini adalah hasil fine-tuning dari `indobenchmark/indobert-base-p2` khusus untuk domain ulasan produk monitor berbahasa Indonesia, pada tugas Aspect Sentiment Classification (ASC). Model memprediksi sentimen (Positif/Netral/Negatif) dari sebuah ulasan terhadap satu aspek tertentu, sebagai tahap kedua dari pipeline Aspect-Based Sentiment Analysis (ABSA) dua tahap (ACD → ASC).

Catatan domain: Model ini di-fine-tune secara spesifik pada data diskusi komunitas monitor (bukan produk umum), sehingga performa terbaiknya berada pada teks berbahasa Indonesia yang membahas monitor — termasuk jargon teknis seperti refresh rate, ghosting, IPS, sRGB, dan satuan seperti Hz/ms. Penggunaan di luar domain ini (produk lain) belum tentu memberikan performa setara.

Model ini adalah bagian dari penelitian skripsi: "Implementasi Aspect-Based Sentiment Analysis (ABSA) Berbasis IndoBERT untuk Pemetaan Keluhan pada Ulasan Produk Monitor"

Detail Model

Nama ModelABSA-IndoBERT-ASC
Model Dasarindobenchmark/indobert-base-p2
*Di-fine-tune oleh*Louders Yoakim Telaumbanua
BahasaIndonesia (id)
TaskText Classification (Aspect Sentiment Classification)
LisensiApache 2.0
FrameworkHugging Face Transformers & PyTorch

Label Sentimen

IndexLabel
0Negatif
1Netral
2Positif

Format Input

Model ini bukan classifier teks biasa — ia butuh konteks aspek yang sedang dinilai. Format input mengikuti pola "{kode_aspek} {teks_ulasan}", di mana kode_aspek didapat dari keluaran model ACD pasangannya (absa-indobert-acd).

Cara Penggunaan

python
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification

tokenizer = AutoTokenizer.from_pretrained("<username>/absa-indobert-asc")
model = AutoModelForSequenceClassification.from_pretrained("<username>/absa-indobert-asc")

sentiment_labels = ["Negatif", "Netral", "Positif"]
aspect_code = "C2"  # contoh: hasil deteksi dari model ACD, misal "Harga & Nilai"
text = "Warnanya akurat banget, tapi harganya agak mahal dibanding toko sebelah."

asc_input = f"{aspect_code} {text}"
inputs = tokenizer(asc_input, return_tensors="pt", truncation=True, max_length=128)

with torch.no_grad():
    logits = model(**inputs).logits
    pred_idx = int(torch.argmax(logits, dim=1).item())

print(sentiment_labels[pred_idx])  # -> "Negatif"
Model ini tidak mendeteksi aspek mana yang dibahas — itu tugas model pasangannya. Untuk pipeline lengkap, jalankan absa-indobert-acd terlebih dahulu untuk mendapatkan daftar aspek, baru masukkan tiap aspek ke model ini.

Pipeline Lengkap

teks ulasan → [ACD: absa-indobert-acd] → daftar aspek yang terdeteksi
            → [ASC: model ini]          → sentimen (Positif/Netral/Negatif) per aspek

Data Pelatihan

Data bersumber dari arsip diskusi Komunitas Discord GTID (Jan 2022 – Des 2025), disaring menjadi 3.326 ulasan bersih dan dilabeli manual oleh 3 anotator menjadi 5.985 pasangan (ulasan, aspek, sentimen). Split latih/validasi/uji per-ulasan ≈80:10:10: 4.794 baris latih, 603 validasi, 588 uji.

Hyperparameter terbaik hasil grid search: batch 16, learning rate 2e-5, 5 epoch. Tugas ASC jauh lebih sensitif terhadap hyperparameter dibanding ACD — kombinasi ekstrem (batch 32, lr 5e-5) menurunkan F1-Macro dari 0,9015 menjadi 0,7276 (indikasi overfitting).

Evaluasi — Skenario 1: Ground-Truth Aspect (Data Uji)

MetrikSkor
Accuracy0,9082
F1-Macro0,9074
F1-Micro0,9082
SentimenPrecisionRecallF1
Negatif0,970,920,95
Netral0,850,900,88
Positif0,900,900,90

Model paling andal mendeteksi sentimen Negatif (F1 0,95) — relevan langsung dengan tujuan pemetaan keluhan konsumen. Kesalahan klasifikasi terbesar terjadi pada batas Netral–Positif (ekspresi bahasa yang datar/tidak tegas), sementara kesalahan ekstrem Negatif↔Positif sangat jarang terjadi.

Kategori aspek dengan F1 sentimen terendah adalah C2 (Harga & Nilai) — 0,808, akibat ulasan bermuatan harga yang sering mencampur nada negatif dan positif dalam satu kalimat (mis. "agak mahal tapi sepadan").

Evaluasi — Skenario 2: End-to-End (ACD → ASC berantai)

MetrikSkor
Accuracy0,6006
F1-Macro0,7915
F1-Micro0,8196

Penurunan F1-Macro sebesar 12,8% dibanding Skenario 1 (dari 0,9074 → 0,7915) mengukur efek cascading error dari tahap ACD ke ASC saat pipeline dijalankan end-to-end secara berurutan, tanpa aspek ground-truth.

Metrik lengkap lainnya (confusion matrix, interval kepercayaan bootstrap, uji McNemar vs mBERT) tersedia pada folder evaluation/ di repositori penelitian.

Model Terkait

ModelTask
absa-indobert-acdAspect Category Detection — basis IndoBERT
absa-indobert-asc (model ini)Aspect Sentiment Classification — basis IndoBERT
absa-mbert-acdAspect Category Detection — basis mBERT
absa-mbert-ascAspect Sentiment Classification — basis mBERT

Sitasi

bibtex
@misc{telaumbanua2026absa,
  author = {Telaumbanua, Louders Yoakim},
  title = {Implementasi Aspect-Based Sentiment Analysis (ABSA) Berbasis IndoBERT untuk Pemetaan Keluhan pada Ulasan Produk Monitor},
  year = {2026},
  note = {Skripsi}
}