loudersyoakim/absa-indobert-asc
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
Label Sentimen
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
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 aspekData 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)
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)
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
Sitasi
@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}
}