S/

Kecerdasan Buatan / 8 min read

Review Model BERT untuk Named Entity Recognition (NER) Bahasa Indonesia

Satria Aji Putra
Satria Aji Putra Author
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.

Warning

Sayangnya, data training asli dari model cahya/bert-base-indonesian-NER tidak 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

Note

Perlu 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

MetrikNilai
Loss0.2621
Precision0.7716
Recall0.8218
F1-Score0.7959
Accuracy0.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:

NomorLabelDeskripsi lengkap
0OToken yang bukan bagian dari entitas apapun (Outside).
1B-PERSONAwal mula token untuk entitas nama orang (person).
2I-PERSONToken lanjutan dari entitas nama orang.
3B-ORGANISATIONAwal mula token untuk entitas nama organisasi.
4I-ORGANISATIONToken lanjutan dari entitas nama organisasi.
5B-PLACEAwal mula token untuk entitas tempat (place).
6I-PLACEToken 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:

NomorLabelDeskripsi lengkap
0B-CRDAwal token credit / nomor rekening (credit).
1B-DATAwal token tanggal (date).
2B-EVTAwal token acara / peristiwa (event).
3B-FACAwal token fasilitas (facility).
4B-GPEAwal token geo-political entity (negara, provinsi, kota).
5B-LANAwal token bahasa (language).
6B-LAWAwal token undang-undang / peraturan (law).
7B-LOCAwal token lokasi non-administratif (taman, pulau).
8B-MONAwal token uang / nilai moneter (money).
9B-NORAwal token kebangsaan (nationality).
10B-ORDAwal token ordinal (urutan).
11B-ORGAwal token organisasi (organization).
12B-PERAwal token orang (person).
13B-PRCAwal token proses (process).
14B-PRDAwal token produk (product).
15B-QTYAwal token kuantitas (quantity).
16B-REGAwal token wilayah administratif (region).
17B-TIMAwal token waktu (time).
18B-WOAAwal token karya seni (work of art).
19I-CRDToken lanjutan credit.
20I-DATToken lanjutan date.
21I-EVTToken lanjutan event.
22I-FACToken lanjutan facility.
23I-GPEToken lanjutan geo-political entity.
24I-LANToken lanjutan language.
25I-LAWToken lanjutan law.
26I-LOCToken lanjutan location.
27I-MONToken lanjutan money.
28I-NORToken lanjutan nationality.
29I-ORDToken lanjutan ordinal.
30I-ORGToken lanjutan organization.
31I-PERToken lanjutan person.
32I-PRCToken lanjutan process.
33I-PRDToken lanjutan product.
34I-QTYToken lanjutan quantity.
35I-REGToken lanjutan region.
36I-TIMToken lanjutan time.
37I-WOAToken lanjutan work of art.
38OToken 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:

NoIde PenerapanNilai Tambah
1Pemetaan 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.
2Deteksi 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.
3Filter otomatis konten materi edukasi – menyatukan PLACE + ORG + PERSON sehingga menghasilkan referensi artikel yang relevan untuk pembaca.Mempermudah memberikan rekomendasi kepada pengunjung website anda.
4Analisis 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.
5Knowledge-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!
6Chatbot 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.
7Pengelolaan 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.
8Rangkuman 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.
9Pemetaan persebaran bahasa lokal – mengekstraksi parameter LAN jika anda memiliki database teks cerita atau dokumenter lintas provinsi.Membantu dalam urusan dokumentasi pelestarian bahasa adat lokal.
10Fitur 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.

python
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)

json
[
  {"type": "ORGANISATION", "text": "UniversitasGadjahMada"},
  {"type": "PLACE", "text": "Yogyakarta"},
  {"type": "PLACE", "text": "15September2023"}
]
Note

Karena model finetune ini lebih sederhana (hanya membaca entitas pokok PERSON, ORGANISATION, dan PLACE), maka frasa waktu seperti 15 September yang terdapat pada teks sampel di atas kadang terdeteksi melenceng menjadi PLACE atau bahkan sekedar diabaikan sebagai O. 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.

NoKelebihan
1Akurasi 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.
2Ukuran 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.
3Kemampuan 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.
4Keberagaman 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.
NoKekurangan
1Batasan 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.
2Ketidakjelasan dataset pelatihan – Transparansi menjadi sebuah nilai minor tersendiri ketika menelisik variasi kurasi sumber aslinya tidak dipaparkan dengan jelas.
3Limitasi 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:

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!