license: mit
language:
- id
metrics:
- accuracy
- f1
base_model:
- indobenchmark/indobert-base-p2
pipeline_tag: text-classification
library_name: transformers
tags:
- finance
- review
- produk
- ulasan
- e commerce
datasets:
- siRendy/dataset-analisis-sentimen-review-produk
IndoBERT klasifikasi Sentiment ID - 2 Kelas
Model ini merupakan hasil fine-tuning dari indobenchmark/indobert-base-p2
untuk tugas klasifikasi sentimen review produk dalam Bahasa Indonesia dengan dua label (positif dan negatif). model di-pretrain terlebih dahulu menggunakan 78.536 baris ulasan produk agar lebih mengenali gaya bahasa informal yang umum digunakan dalam review, seperti singkatan "banget" β "bgt", "enggak" β "gk", dsb. kemudian model di finetune dengan Dataset yang terdiri dari 19.728 ulasan produk di e-commerce tokopedia dan juga berasal dari ulasan sintesis menggunakan LLM Gemini.
π― Tujuan
Model ini ditujukan untuk mengklasifikasikan komentar/review produk/ulasan menjadi dua kelas sentimen: POSITIF
dan NEGATIF
.
π§ͺ Metrics
Model ini dievaluasi menggunakan metrik:
- Accuracy
- F1 Score
π§ Base Model
βοΈ Training Arguments
Berikut adalah konfigurasi training (TrainingArguments
) yang digunakan saat pelatihan:
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=4,
gradient_accumulation_steps=2,
per_device_eval_batch_size=4,
weight_decay=0.05,
eval_strategy="epoch",
save_strategy="epoch",
seed=42,
load_best_model_at_end=True,
metric_for_best_model="f1",
logging_dir="./logs",
report_to="tensorboard",
logging_steps=100,
warmup_ratio=0.05,
)
π Hasil Evaluasi
Model dievaluasi selama 3 epoch menggunakan metrik Accuracy dan F1 Score. Berikut adalah performa model pada setiap epoch:
Epoch | Training Loss | Validation Loss | Accuracy | F1 Score |
---|---|---|---|---|
1 | 0.2670 | 0.2374 | 0.9564 | 0.9564 |
2 | 0.4904 | 0.2951 | 0.9356 | 0.9356 |
3 | 0.3650 | 0.2176 | 0.9442 | 0.9441 |
π¨βπ» Cara Inferensi
# Load model dan tokenizer
from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline
import torch
# Load dari Hugging Face Hub
model = AutoModelForSequenceClassification.from_pretrained("siRendy/indobert-analisis-sentimen-review-produk-datathon2025")
tokenizer = AutoTokenizer.from_pretrained("siRendy/indobert-analisis-sentimen-review-produk-datathon2025")
# Fungsi prediksi
def predict_sentiment(text):
classifier = pipeline(
"text-classification",
model=model,
tokenizer=tokenizer,
device=0 if torch.cuda.is_available() else -1
)
result = classifier(text)[0]
return {
"sentiment": str(result["label"]),
"confidence": round(result["score"], 4)
}
# Contoh penggunaan
text = "aih jelek nya ngawur iki opo seh, mo nipu lu ya"
prediction = predict_sentiment(text)
print(prediction)