File size: 4,553 Bytes
8ac6dd4
 
 
 
 
 
 
 
 
 
 
e3fab4e
8ac6dd4
 
 
 
e3fab4e
8ac6dd4
 
 
 
 
e3fab4e
8ac6dd4
 
 
 
e3fab4e
8ac6dd4
 
e3fab4e
8ac6dd4
 
e3fab4e
8ac6dd4
 
e3fab4e
8ac6dd4
 
 
e3fab4e
8ac6dd4
 
 
 
 
e3fab4e
8ac6dd4
 
 
e3fab4e
 
 
 
8ac6dd4
 
 
e3fab4e
 
 
 
 
 
 
 
 
 
 
8ac6dd4
 
 
e3fab4e
 
 
 
8ac6dd4
e3fab4e
8ac6dd4
 
 
 
 
 
 
e3fab4e
 
8ac6dd4
 
 
e3fab4e
 
 
 
 
8ac6dd4
 
e3fab4e
 
8ac6dd4
e3fab4e
8ac6dd4
e3fab4e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8ac6dd4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
---
license: mit
language:
  - id
library_name: transformers
pipeline_tag: text-classification
tags:
  - indonesian
  - indonesia
  - topic-classification
  - bert
  - text-classification
datasets:
  - custom
inference: true
model-index:
  - name: BERT Indonesian Topic Classification (15 labels)
    results:
      - task:
          type: text-classification
          name: Topic Classification
        dataset:
          name: Custom Indonesian Dataset
          type: custom
          split: validation
        metrics:
          - type: accuracy
            value: 0.92
          - type: f1
            name: f1_macro
            value: 0.89
          - type: f1
            name: f1_micro
            value: 0.91
---

# BERT Indonesian Topic Classification (15 labels)

**Base model**: `cahya/bert-base-indonesian-1.5G`
**Task**: Topic classification (single-label)
**Labels (15)**: Olahraga, Kecelakaan, Pendidikan, Politik, Judi Online, Teknologi, Kriminalitas, Infrastruktur, Kesehatan, Lalu Lintas, Bencana Alam, Ekonomi, Keuangan, Kemiskinan, Pariwisata

![Confusion Matrix](./confusion_matrix.png)

## Intended use

Model ini digunakan untuk klasifikasi topik teks berbahasa Indonesia pada 15 kategori utama. Model dapat mengklasifikasikan artikel berita, postingan media sosial, dan dokumen teks lainnya ke dalam kategori yang sesuai seperti politik, ekonomi, olahraga, teknologi, dan sebagainya.

## Limitations

- Performa model bergantung pada distribusi label dataset yang digunakan
- Teks di luar domain (OOD) yang tidak serupa dengan data training dapat mengalami penurunan akurasi
- Model dilatih khusus untuk bahasa Indonesia dan mungkin tidak optimal untuk bahasa lain
- Performa dapat bervariasi tergantung pada panjang dan kompleksitas teks input

## Training details

- **Framework**: 🤗 Transformers (PyTorch)
- **Base model**: cahya/bert-base-indonesian-1.5G
- **Max length**: 512 tokens
- **Batch size**: 16
- **Epochs**: 3
- **Learning rate**: 2e-5
- **Weight decay**: 0.01
- **Warmup ratio**: 0.1
- **Scheduler**: Linear
- **Mixed precision**: Enabled
- **Optimizer**: AdamW

## Evaluation

- **Data split**: 80/20 stratified split
- **Accuracy (validation)**: **92.1%**
- **F1 Macro (validation)**: **89.3%**
- **F1 Micro (validation)**: **91.2%**

Model menunjukkan performa yang baik dan seimbang di semua kategori. Detail evaluasi per label tersedia dalam file `eval_results.json`.

## How to use

```python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

# Load model dan tokenizer
repo_id = "your-username/bert-indonesian-topic-classification"
tokenizer = AutoTokenizer.from_pretrained(repo_id)
model = AutoModelForSequenceClassification.from_pretrained(repo_id).eval()

# Contoh penggunaan
text = "Pemerintah Indonesia mengumumkan kebijakan ekonomi baru untuk mendorong pertumbuhan UMKM di tengah situasi global yang menantang."

# Tokenize dan prediksi
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=512)
with torch.no_grad():
    logits = model(**inputs).logits

# Dapatkan prediksi
pred_id = logits.argmax(-1).item()
confidence = torch.softmax(logits, dim=-1).max().item()
label = model.config.id2label[pred_id]

print(f"Predicted topic: {label}")
print(f"Confidence: {confidence:.4f}")
```

## Additional Information

### Label Categories

Model ini dapat mengklasifikasikan teks ke dalam 15 kategori berikut:

1. **Olahraga** - Berita dan informasi seputar dunia olahraga
2. **Kecelakaan** - Laporan kecelakaan dan insiden
3. **Pendidikan** - Topik seputar pendidikan dan pembelajaran
4. **Politik** - Berita politik, pemerintahan, dan kebijakan
5. **Judi Online** - Konten terkait perjudian online
6. **Teknologi** - Perkembangan teknologi dan inovasi
7. **Kriminalitas** - Berita kriminal dan hukum
8. **Infrastruktur** - Pembangunan dan infrastruktur
9. **Kesehatan** - Topik kesehatan dan medis
10. **Lalu Lintas** - Informasi transportasi dan lalu lintas
11. **Bencana Alam** - Laporan bencana dan cuaca
12. **Ekonomi** - Berita ekonomi dan bisnis
13. **Keuangan** - Topik keuangan dan investasi
14. **Kemiskinan** - Isu sosial dan kemiskinan
15. **Pariwisata** - Informasi wisata dan travel

### Citation

Jika menggunakan model ini dalam penelitian atau proyek, mohon cantumkan referensi:

```bibtex
@misc{bert-indonesian-topic-classification-2025,
  title={BERT Indonesian Topic Classification (15 labels)},
  author={Your Name},
  year={2025},
  url={https://huggingface.co/your-username/bert-indonesian-topic-classification}
}
```