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
24
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Hadisawara/indonesian-sentiment-analysis

Finetuned
(133)
this model