Review Model BERT untuk Named Entity Recognition (NER) Bahasa Indonesia
Seperti yang kita tahu, model BERT saat ini sudah menjadi salah satu standar andalan untuk tugas-tugas Natural Language Processing (NLP) yang membutuhkan pemahaman konteks, salah satunya adalah Named Entity Recognition (NER). Nah, di artikel kali ini saya ingin me-review sebuah model bernama cahya/bert-base-indonesian-NER, yaitu model BERT bahasa Indonesia yang kemudian di-finetune menjadi AptaArkana/indonesian_bert_base_NER_indoNLU.
Menariknya, model hasil finetune ini lebih disederhanakan karena hanya mendukung enam label saja (O, B-PERSON, I-PERSON, B-ORGANISATION, I-ORGANISATION, B-PLACE, I-PLACE). Padahal, model dasarnya punya sampai 39 label! Di sini saya akan membagikan hasil evaluasinya, label apa saja yang didukung, contoh penerapan, hingga analisis kelebihan dan kekurangannya. Tenang saja, model ini bisa langsung anda akses secara gratis melalui Hugging Face.
WarningSayangnya, data training asli dari model
cahya/bert-base-indonesian-NERtidak dipublikasikan di halaman Hugging Face mereka. Jadi, cukup sulit untuk memverifikasi secara pasti bagaimana kualitas dan keragaman datanya.
Pendahuluan
Bagi anda yang sering membuat aplikasi NLP, pasti paham kalau pengenalan entitas (NER) itu ibarat fondasi utama. Fungsinya sangat krusial untuk pencarian informasi, ekstraksi fakta, analisis sentimen, sampai aplikasi chatbot. Bahasa Indonesia sendiri punya bentuk kata dan susunan kalimat yang cukup berbeda dari bahasa Inggris. Sehingga, jika kita memaksa menggunakan model multilingual, akurasinya seringkali kurang memuaskan.
Model cahya/bert-base-indonesian-NER hadir sebagai model BERT-base (dengan 12 layer dan 768 dimensi) yang dilatih khusus menggunakan teks bahasa Indonesia dan sudah dioptimalkan untuk klasifikasi token. Model ini lalu di-finetune oleh pengguna bernama AptaArkana menggunakan dataset indonlu_nergrit, sehingga melahirkan model indonesian_bert_base_NER_indoNLU. Labelnya sengaja disederhanakan agar developer lebih mudah mengintegrasikannya ke lingkungan production.
Mengingat Indonesia punya penetrasi internet tinggi dan pengguna yang banyak sekali, kebutuhan akan AI bahasa Indonesia ini makin mendesak. Terutama di sektor edukasi, keuangan, e-commerce, dan layanan publik. Kalau kita punya model NER yang akurat, rasanya kita bisa memangkas waktu analisis dokumen dan menekan biaya operasional dengan cukup signifikan.
Temuan
NotePerlu diketahui, proses finetune ini dilakukan oleh kontributor lain ya. Saya di sini hanya bertindak sebagai pengguna yang me-review, memberikan gambaran use-case, dan mencoba implementasi kodenya dalam program sederhana.
Walaupun model dasarnya tidak menyertakan informasi hasil pelatihan yang rinci, namun saya berhasil menemukan metrik evaluasi dari model hasil finetune-nya (indonesian_bert_base_NER_indoNLU).
Hasil Evaluasi
| Metrik | Nilai |
|---|---|
| Loss | 0.2621 |
| Precision | 0.7716 |
| Recall | 0.8218 |
| F1-Score | 0.7959 |
| Accuracy | 0.9477 |
Dari tabel di atas, bisa kita lihat bahwa model ini memiliki keseimbangan yang cukup baik antara precision dan recall, serta akurasi keseluruhan yang lumayan tinggi untuk kelas token-level classification.
Label yang Didukung
Label Finetune (6 label)
Untuk versi finetune yang siap pakai ini, ada 6 label yang bisa anda gunakan:
| Nomor | Label | Deskripsi lengkap |
|---|---|---|
| 0 | O | Token yang bukan bagian dari entitas apapun (Outside). |
| 1 | B-PERSON | Awal mula token untuk entitas nama orang (person). |
| 2 | I-PERSON | Token lanjutan dari entitas nama orang. |
| 3 | B-ORGANISATION | Awal mula token untuk entitas nama organisasi. |
| 4 | I-ORGANISATION | Token lanjutan dari entitas nama organisasi. |
| 5 | B-PLACE | Awal mula token untuk entitas tempat (place). |
| 6 | I-PLACE | Token lanjutan dari entitas tempat. |
Seluruh Label pada Model Dasar (cahya/bert-base-indonesian-NER)
Namun kalau anda ingin melakukan finetuning sendiri, sebenarnya model dasar ini mendukung jauh lebih banyak label (total 39 label), yaitu:
| Nomor | Label | Deskripsi lengkap |
|---|---|---|
| 0 | B-CRD | Awal token credit / nomor rekening (credit). |
| 1 | B-DAT | Awal token tanggal (date). |
| 2 | B-EVT | Awal token acara / peristiwa (event). |
| 3 | B-FAC | Awal token fasilitas (facility). |
| 4 | B-GPE | Awal token geo-political entity (negara, provinsi, kota). |
| 5 | B-LAN | Awal token bahasa (language). |
| 6 | B-LAW | Awal token undang-undang / peraturan (law). |
| 7 | B-LOC | Awal token lokasi non-administratif (taman, pulau). |
| 8 | B-MON | Awal token uang / nilai moneter (money). |
| 9 | B-NOR | Awal token kebangsaan (nationality). |
| 10 | B-ORD | Awal token ordinal (urutan). |
| 11 | B-ORG | Awal token organisasi (organization). |
| 12 | B-PER | Awal token orang (person). |
| 13 | B-PRC | Awal token proses (process). |
| 14 | B-PRD | Awal token produk (product). |
| 15 | B-QTY | Awal token kuantitas (quantity). |
| 16 | B-REG | Awal token wilayah administratif (region). |
| 17 | B-TIM | Awal token waktu (time). |
| 18 | B-WOA | Awal token karya seni (work of art). |
| 19 | I-CRD | Token lanjutan credit. |
| 20 | I-DAT | Token lanjutan date. |
| 21 | I-EVT | Token lanjutan event. |
| 22 | I-FAC | Token lanjutan facility. |
| 23 | I-GPE | Token lanjutan geo-political entity. |
| 24 | I-LAN | Token lanjutan language. |
| 25 | I-LAW | Token lanjutan law. |
| 26 | I-LOC | Token lanjutan location. |
| 27 | I-MON | Token lanjutan money. |
| 28 | I-NOR | Token lanjutan nationality. |
| 29 | I-ORD | Token lanjutan ordinal. |
| 30 | I-ORG | Token lanjutan organization. |
| 31 | I-PER | Token lanjutan person. |
| 32 | I-PRC | Token lanjutan process. |
| 33 | I-PRD | Token lanjutan product. |
| 34 | I-QTY | Token lanjutan quantity. |
| 35 | I-REG | Token lanjutan region. |
| 36 | I-TIM | Token lanjutan time. |
| 37 | I-WOA | Token lanjutan work of art. |
| 38 | O | Token di luar entitas apa pun. |
Ide Pengembangan (Use-Case)
Untuk memberikan gambaran model NER ini sebetulnya bisa dipakai untuk aplikasi apa saja sih di dunia nyata, berikut beberapa ide use-case yang menarik untuk dieksplorasi:
| No | Ide Penerapan | Nilai Tambah |
|---|---|---|
| 1 | Pemetaan jaringan riset akademik – mengekstrak PERSON, ORG, PLACE, dan TIM dari rentetan jurnal publikasi untuk melihat pola kolaborasi peneliti lintas institusi. | Sangat mumpuni untuk melihat sinergi riset dan penyaluran alokasi dana secara efektif. |
| 2 | Deteksi anomali di dokumen keuangan – meski harus mengaktifkan label dasar (CRD, MON, ORG), ini dapat digunakan untuk melacak keanehan nilai pada laporan. | Mengurangi risiko penipuan atau kasus fraud. |
| 3 | Filter otomatis konten materi edukasi – menyatukan PLACE + ORG + PERSON sehingga menghasilkan referensi artikel yang relevan untuk pembaca. | Mempermudah memberikan rekomendasi kepada pengunjung website anda. |
| 4 | Analisis aturan publik pemerintah – melacak isi dokumen regulasi (LAW, GPE, DAT) untuk melihat bagaimana perubahan undang-undang per wilayah. | Sangat praktis bagi mereka yang butuh rangkuman kebijakan rutin. |
| 5 | Knowledge-Graph berita otomatis – menyusun PERSON, ORG, PLACE, dan EVT menjadi simpul jaringan (Misal: “A menandatangani kerja sama dengan B”). | Pencarian seputar fakta berita yang viral bisa jauh lebih cepat divalidasi dan divisualisasikan! |
| 6 | Chatbot pintar layanan publik – ketika user menanyakan keluhan, model menganalisa kata (misalnya ORG = “Dinas Kesehatan”) lalu otomatis di-rutekan ke departemen terkait. | Resolusi keluhan pelanggan bakal lebih to-the-point dan tidak membuang waktu tunggu. |
| 7 | Pengelolaan sistem inventaris – mengekstrak elemen PLACE, QTY, dan MON di input deskripsi mutasi alat untuk mencatat perputaran inventaris. | Solusi menarik untuk efisiensi supply chain pada internal tim ops logistik. |
| 8 | Rangkuman sentimen produk harian – menggabungkan komponen pengenalan spesifik (PRODUCT) dengan model sentiment analysis para pelanggan. | Tim marketing bisa mendapatkan potret sasaran produk yang cukup objektif di lapangan. |
| 9 | Pemetaan persebaran bahasa lokal – mengekstraksi parameter LAN jika anda memiliki database teks cerita atau dokumenter lintas provinsi. | Membantu dalam urusan dokumentasi pelestarian bahasa adat lokal. |
| 10 | Fitur timeline rekaman sejarah – merangkai data otomatis dari tangkepan teks berupa komponen kejadian (EVT), tanggal (DAT), lokasi (PLACE), serta tokoh (PERSON). | Sangat cocok dijadikan media pendukung di modul bahan ajar interaktif. |
Contoh Penggunaan (Python)
Bagi anda yang ingin langsung mencoba bereksperimen, berikut adalah snippet sintaks sederhana menggunakan bahasa pemrograman Python dan library Transformers.
from transformers import AutoTokenizer, AutoModelForTokenClassification
import torch
model_name = "AptaArkana/indonesian_bert_base_NER_indoNLU"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForTokenClassification.from_pretrained(model_name)
def ner(text: str):
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=512)
with torch.no_grad():
logits = model(**inputs).logits
pred_ids = torch.argmax(logits, dim=2).squeeze().tolist()
tokens = tokenizer.convert_ids_to_tokens(inputs["input_ids"].squeeze())
id2label = model.config.id2label # kunci = integer
entities = []
cur = None
for tok, pid in zip(tokens, pred_ids):
label = id2label[pid] # ← gunakan integer, bukan string
if label == "O":
if cur:
entities.append(cur)
cur = None
continue
clean = tok.replace("##", "")
if label.startswith("B-"):
if cur:
entities.append(cur)
cur = {"type": label[2:], "text": clean}
else: # I-
cur["text"] += clean
if cur:
entities.append(cur)
return entities
sample_teks = "Universitas Gadjah Mada mengadakan konferensi AI pada 15 September 2023 di Yogyakarta."
print(ner(sample_teks))Bentuk Output (contoh)
[
{"type": "ORGANISATION", "text": "UniversitasGadjahMada"},
{"type": "PLACE", "text": "Yogyakarta"},
{"type": "PLACE", "text": "15September2023"}
]NoteKarena model finetune ini lebih sederhana (hanya membaca entitas pokok
PERSON,ORGANISATION, danPLACE), maka frasa waktu seperti 15 September yang terdapat pada teks sampel di atas kadang terdeteksi melenceng menjadiPLACEatau bahkan sekedar diabaikan sebagaiO. Inilah mengapa finetuning mandiri dengan dataset yang variatif acapkali masih dibutuhkan.
Analisis Kelebihan & Kekurangan
Berikut adalah ulasan saya mengenai poin plus dan minus setelah menguji model ini.
| No | Kelebihan |
|---|---|
| 1 | Akurasi yang cukup oke – Memiliki F1-score yang tinggi di kisaran 0.796 dan keakurasian nyaris menyentuh 0.948 di kurikulum dataset indonlu_nergrit, tentunya patut dipercaya buat diujicobakan. |
| 2 | Ukuran yang ringan – Dengan ukuran model sekitar 440 MB (seukuran standar BERT-base), sangat ringan buat difasilitasi di server atau edge device (ONNX) tanpa bikin boros spesifikasi yang ada. |
| 3 | Kemampuan bawaan tersembunyi – Jangan lupakan esensi model dasarnya yang menyimpan 39 lapis memori label berkat pelatihannya di awal, jadi anda bebas mengeksekusi bila berniat memoles/finetune model ini menjadi lebih spesifik. |
| 4 | Keberagaman interaksi terbuka – Berkat komunitas besar Hugging Face serta referensi dokumentasinya yang mudah diakses, ekspor modulnya dapat sinkron optimal layaknya library PyTorch, TensorFlow, hingga bentuk mobile seperti TFLite. |
| No | Kekurangan |
|---|---|
| 1 | Batasan paket label bawaan – Bagi anda yang butuh penanganan business logic lebih rumit dan ekstra berjenis-jenis parameter label, maka versi modifikasi yang hanya merangkum 6 entitas dasar ini terbilang cukup disayangkan. Ini normal karena mungkin versi finetune ini telah disesuaikan untuk kebutuhan yang lebih spesifik. |
| 2 | Ketidakjelasan dataset pelatihan – Transparansi menjadi sebuah nilai minor tersendiri ketika menelisik variasi kurasi sumber aslinya tidak dipaparkan dengan jelas. |
| 3 | Limitasi asupan input teks – Dikarenakan hanya sanggup memproses maksimal 512 token, dokumen yang panjang mengharuskan implementasinya dipecah-pecah terlebih dahulu melalui sliding window. |
Kesimpulan
cahya/bert-base-indonesian-NER merupakan fondasi yang kuat untuk NER Bahasa Indonesia, dengan arsitektur BERT‑base dan dukungan label yang luas. Versi finetune AptaArkana/indonesian_bert_base_NER_indoNLU menyederhanakan label menjadi enam kelas yang umum (person, organisation, place, dan outside), menghasilkan metrik yang kompetitif (F1 ≈ 0.796, akurasi ≈ 0.948).
Namun, model ini tidak bebas dari kekurangan. Kurangnya transparansi mengenai komposisi dataset pelatihan sering menjadi perhatian krusial, terutama untuk aplikasi yang melibatkan data sensitif seperti di sektor perbankan, kesehatan, atau hukum, kecuali jika ditambahkan lapisan validasi tambahan yang ketat.
Di era digital kini, adaptasi NLP tidak selalu sekadar perihal otomasi melainkan nilai daya tahan komersial. Berbekal teknologi inilah sederet perusahaan maupun pegiat inovasi AI ditantang kreatif menciptakan jalan ringkas dan menyikapi derasnya arus literasi modern di negara tercinta ini tanpa perlu lagi harus mereplika fungsional algoritma dari titik nol.
Penutup
Model-model NLP berbahasa Indonesia tentu akan terus berkembang semakin mutakhir seiring solidnya kontributor lokal kita merilis karya basis dataset open source terbaru untuk umum. Dengan merujuk pada cahya/bert-base-indonesian-NER layaknya pondasi dasar, semoga inovasi pemecahan solusi analitik ke depan bakal tampil makin mumpuni.
Tunggu apa lagi? Buat anda yang mau iseng-iseng nge-tes modelnya atau malah sekadar penasaran dengan kemampuannya, langsung saja kunjungi deretan referensi ini:
- Model Dasar: cahya/bert-base-indonesian-NER
- Versi Finetune: AptaArkana/indonesian_bert_base_NER_indoNLU
Artikel review ini adalah bagian dari hobi tulis menulis rutinitas saya belaka. Ke depannya, saya harap bisa belajar dan menyuguhkan variasi bahasan coding hingga review hal teknologi asik lainnya buat teman-teman pembaca. 😊 Terimakasih!