Indonesian Sentiment Analysis

Model klasifikasi sentimen untuk teks berbahasa Indonesia menggunakan fine-tuning IndoBERT. Model ini mampu mengklasifikasikan teks ke dalam tiga kelas sentimen: Positif, Negatif, dan Netral.

Model Description

Model ini merupakan hasil fine-tuning dari indobenchmark/indobert-base-p1 (IndoBERT) untuk tugas Text Classification — khususnya analisis sentimen teks berbahasa Indonesia. IndoBERT adalah model BERT yang dilatih dengan corpus bahasa Indonesia berskala besar, sehingga sangat cocok untuk NLP tasks dalam bahasa Indonesia.

  • Developed by: Hadisawara
  • Model type: BERT-based Text Classifier (Fine-tuned)
  • Language: Indonesian (id)
  • License: MIT
  • Base model: indobenchmark/indobert-base-p1
  • Task: Sentiment Analysis (Text Classification)
  • Labels: POSITIVE, NEGATIVE, NEUTRAL

Intended Uses & Limitations

Intended Uses

  • Analisis sentimen ulasan produk berbahasa Indonesia
  • Analisis sentimen media sosial (Twitter, Instagram, dll.)
  • Monitoring opini publik berbahasa Indonesia
  • Analisis sentimen pengaduan/keluhan masyarakat
  • Penelitian NLP bahasa Indonesia

Limitations

  • Model dioptimalkan untuk teks bahasa Indonesia formal dan informal
  • Performa mungkin menurun pada teks dengan banyak kosakata daerah/slang yang tidak umum
  • Tidak dirancang untuk teks multibahasa (campur kode berat)

How to Use

Installation

pip install transformers torch

Quick Start

from transformers import pipeline

# Load model langsung dari Hugging Face Hub
sentiment_analyzer = pipeline(
    "text-classification",
    model="Hadisawara/indonesian-sentiment-analysis"
)

# Contoh penggunaan
texts = [
    "Produk ini sangat bagus dan berkualitas tinggi!",
    "Pelayanan sangat buruk, saya kecewa.",
    "Barang sudah diterima dengan kondisi baik."
]

for text in texts:
    result = sentiment_analyzer(text)
    print(f"Teks: {text}")
    print(f"Sentimen: {result[0]['label']} (score: {result[0]['score']:.4f})")
    print()

Manual Usage

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

model_name = "Hadisawara/indonesian-sentiment-analysis"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)

def predict_sentiment(text):
    inputs = tokenizer(
        text,
        return_tensors="pt",
        truncation=True,
        max_length=512,
        padding=True
    )
    
    with torch.no_grad():
        outputs = model(**inputs)
        predictions = torch.nn.functional.softmax(outputs.logits, dim=-1)
    
    labels = ["NEGATIVE", "NEUTRAL", "POSITIVE"]
    predicted_label = labels[predictions.argmax().item()]
    confidence = predictions.max().item()
    
    return {"label": predicted_label, "confidence": confidence}

# Test
result = predict_sentiment("Aplikasi ini sangat membantu pekerjaan saya!")
print(result)  # {"label": "POSITIVE", "confidence": 0.98}

Training Details

Training Data

Model dilatih menggunakan dataset sentimen bahasa Indonesia yang mencakup:

  • Ulasan e-commerce (Tokopedia, Shopee, dll.)
  • Tweet dan posting media sosial berbahasa Indonesia
  • Ulasan aplikasi mobile
  • Data pengaduan publik

Total dataset: ~10.000 sampel terlabel

  • POSITIVE: ~35%
  • NEGATIVE: ~35%
  • NEUTRAL: ~30%

Training Procedure

Hyperparameters

Parameter Value
Base model indobenchmark/indobert-base-p1
Learning rate 2e-5
Batch size 16
Epochs 5
Max sequence length 512
Optimizer AdamW
Warmup steps 500
Weight decay 0.01

Training Framework

  • Framework: PyTorch + Hugging Face Transformers
  • Hardware: GPU (CUDA)
  • Training time: ~2 jam

Evaluation Results

Metrics on Test Set

Metric Score
Accuracy 87.3%
F1-Score (macro) 86.1%
Precision (macro) 86.5%
Recall (macro) 85.8%

Per-class Results

Label Precision Recall F1
POSITIVE 89.2% 91.0% 90.1%
NEGATIVE 88.7% 87.3% 88.0%
NEUTRAL 81.5% 79.1% 80.3%

Citation

Jika Anda menggunakan model ini dalam penelitian Anda, silakan kutip:

@misc{hadisawara2026indonesian,
  title={Indonesian Sentiment Analysis: Fine-tuned IndoBERT for Indonesian Text Classification},
  author={Hadisawara},
  year={2026},
  publisher={Hugging Face},
  howpublished={\url{https://huggingface.co/Hadisawara/indonesian-sentiment-analysis}}
}

Acknowledgements

Contact

Untuk pertanyaan dan kolaborasi, silakan hubungi melalui Hugging Face Community tab atau buka issue di repository ini.

Downloads last month
1
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Hadisawara/indonesian-sentiment-analysis

Finetuned
(139)
this model