siRendy's picture
Update README.md
51f42f1 verified
metadata
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)