加载中…
加载中…
BaliBERT adalah model Transformer ekstraksi entitas bernama (Named Entity Recognition / NER) khusus bahasa Bali yang di-fine-tune dari fondasi indobenchmark/indobert-base-p1. Model ini dilatih secara khusus untuk mengenali dan mengklasifikasikan 5 kategori entitas karakter tokoh pada korpus cerita rakyat dan sastra Bali (Satua Bali).
Dramaniako/BaliBERTban), Bahasa Indonesia (id)seqeval): 78.91%Model ini mengenali 5 kategori karakter tokoh dalam sastra dan narasi bahasa Bali:
| Label | Kategori Entitas | Deskripsi & Contoh dalam Satua Bali |
|---|---|---|
PNAME |
Person Name | Nama tokoh manusia (I Pekak Dukuh, I Tiwas, Raden Galuh, Pan Karsa). |
ANM |
Animal Character | Tokoh satwa/hewan dalam fabel Satua Tantri (Sang Lutung, I Kakua, I Macan, I Siap Selem). |
OBJ |
Kinship Role / Object | Sebutan persona kekerabatan, peran sosial, atau objek keramat (memene, pianakne, kurenane, Gada sakti). |
GODS |
Deities & Spiritual | Nama dewa, bhatara, atau entitas spiritual (Bhatara Guru, Sang Hyang Anantaboga, Betara Surya). |
ADJ |
Adjective Modifier | Gelar penanda sifat karakter tokoh (Men Sugih, anak ririh, I Belog, tualen). |
O |
Outside | Kata umum non-entitas (kata kerja, kata hubung, preposisi, tanda baca). |
pipeline (Paling Praktis)from transformers import pipeline
# Inisialisasi pipeline NER
ner = pipeline(
"token-classification",
model="Dramaniako/BaliBERT",
tokenizer="Dramaniako/BaliBERT",
aggregation_strategy="simple"
)
# Kalimat uji bahasa Bali
teks = "I Pekak Dukuh lantas ngaukin Sang Lutung ane sedeng ngamah biu di duur punyane."
# Jalankan ekstraksi entitas
hasil = ner(teks)
for entitas in hasil:
print(f"• Entitas : {entitas['word']:<20} | Kelas: {entitas['entity_group']:<6} | Skor: {entitas['score']:.4f}")
Contoh Output:
• Entitas : I Pekak Dukuh | Kelas: PNAME | Skor: 0.9990
• Entitas : Sang Lutung | Kelas: ANM | Skor: 0.9905
import torch
from transformers import AutoTokenizer, AutoModelForTokenClassification
model_name = "Dramaniako/BaliBERT"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForTokenClassification.from_pretrained(model_name)
model.eval()
text = "Gelisang satua Bhatara Guru lantas micayang panugrahan ring Sang Hyang Anantaboga."
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
predictions = torch.argmax(outputs.logits, dim=-1)[0].tolist()
tokens = tokenizer.convert_ids_to_tokens(inputs["input_ids"][0])
id2label = model.config.id2label
for token, pred_id in zip(tokens, predictions):
if token not in ["[CLS]", "[SEP]", "[PAD]"]:
print(f"{token:<15} -> {id2label[pred_id]}")
Evaluasi dilakukan pada dataset blind test independen (data/test.xlsx) berisi 30.395 kata token dan 2.052 kalimat:
seqeval (Tingkat Entitas Utuh)| Kelas Entitas | Precision | Recall | F1-Score | Support (Jumlah Entitas) |
|---|---|---|---|---|
ADJ |
0.93 | 0.95 | 93.63% | 132 |
PNAME |
0.84 | 0.86 | 84.96% | 845 |
ANM |
0.81 | 0.83 | 81.95% | 872 |
GODS |
0.65 | 0.71 | 68.05% | 162 |
OBJ |
0.66 | 0.64 | 64.91% | 577 |
| Micro Average | 0.78 | 0.80 | 78.91% | 2.588 |
| Macro Average | 0.78 | 0.80 | 78.70% | 2.588 |
O): 95.58%-100)Oweight_decay=0.01)3e-5 dengan Linear Warmup 100 langkahfp16)GODS): Kosakata tokoh dewa atau bhatara yang sangat jarang muncul di korpus latih memiliki variasi representasi yang lebih menantang.Model ini dirilis di bawah lisensi Apache 2.0. Jika Anda menggunakan model ini dalam penelitian atau proyek Anda, silakan berikan atribusi kepada repositori ini:
@misc{balibert2026,
author = {Dramaniako},
title = {BaliBERT: Named Entity Recognition for Balinese Literature using IndoBERT},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/Dramaniako/BaliBERT}}
}