CoolFace
Modelpublic

siRendy/indobert-sentimen-analisis-shopee

sourceHugging Facemitupdated 7mo agoView on Hugging Face
0likes15downloads
Model Card

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 shopee 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:

python
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:

EpochTraining LossValidation LossAccuracyF1 Score
10.26700.23740.95640.9564
20.49040.29510.93560.9356
30.36500.21760.94420.9441

👨‍💻 Cara Inferensi

python
# 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)