Named Entity Recognition (NER) adalah proses ekstraksi informasi yang mengidentifikasi dan mengklasifikasikan entitas bernama dalam teks ke dalam kategori yang telah ditentukan. Contoh entitas bernama antara lain nama orang (PERSON), organisasi (ORG), lokasi (GPE), tanggal (DATE), dan jumlah uang (MONEY). NER merupakan bagian penting dari Pemrosesan Bahasa Alami (NLP) dan memiliki banyak aplikasi praktis, sehingga diekstraknya Entitas dalam teks menjadi lebih mudah.
NER sangat penting karena kemampuannya untuk mengekstrak informasi kunci dari data tekstual tidak terstruktur. Beberapa contoh aplikasi NER di dunia nyata meliputi:
- Analisis Sentimen: Mengidentifikasi opini dan sentimen terhadap produk atau layanan tertentu dengan mengekstrak nama produk, perusahaan, atau fitur yang disebutkan dalam ulasan.
- Chatbots: Memahami maksud pengguna dengan mengenali entitas kunci dalam pertanyaan mereka, seperti nama produk, tanggal, atau lokasi.
- Ekstraksi Informasi dari Berita: Mengidentifikasi orang, organisasi, dan lokasi yang disebutkan dalam artikel berita untuk analisis lebih lanjut, seperti pemantauan tren atau analisis jaringan.
- Sistem Rekomendasi: Meningkatkan akurasi rekomendasi dengan mengekstrak entitas yang relevan dari deskripsi produk atau preferensi pengguna.
Baca juga: Panduan Lengkap Analisis Sentimen Twitter dengan Python dan NLTK
SpaCy adalah library NLP open-source yang powerful dan efisien untuk Python. SpaCy dirancang khusus untuk aplikasi production-grade dan menawarkan berbagai fitur yang berguna untuk NER, termasuk model statistik yang sudah terlatih untuk berbagai bahasa, tokenisasi tingkat lanjut, dan visualisasi entitas yang mudah digunakan. Keunggulan SpaCy dibandingkan tools lain meliputi kecepatan pemrosesan, kemudahan penggunaan, dan model yang sudah dioptimalkan. Dengan kata lain, SpaCy Python library
menjadi pilihan yang tepat untuk proyek NER.
Instalasi dan Setup SpaCy
Untuk memulai tutorial named entity recognition ini, kita perlu menginstal SpaCy dan model bahasanya. Ikuti langkah-langkah berikut:
Cara Menginstal SpaCy dan Model Bahasa
Anda dapat menginstal SpaCy menggunakan pip
, package manager Python:
pip install -U spacy
Setelah SpaCy terinstal, unduh model bahasa. Model bahasa berisi data statistik dan representasi kata. SpaCy menyediakan beberapa model, seperti:
en_core_web_sm
: Model kecil, cocok untuk pengujian.en_core_web_md
: Model sedang, seimbang antara kecepatan dan akurasi.en_core_web_lg
: Model besar, akurasi tertinggi tapi butuh memori lebih.
Untuk tutorial ini, gunakan en_core_web_sm
. Unduh dengan perintah:
python -m spacy download en_core_web_sm
Ukuran model memengaruhi akurasi dan kecepatan. Model lebih besar biasanya lebih akurat tapi lebih lambat.
Cara Mengimpor SpaCy di Python
Setelah instalasi, impor SpaCy ke skrip Python Anda:
import spacy
Dasar-Dasar NER dengan SpaCy
Bagian ini menjelaskan cara menggunakan spacy untuk NER secara mendasar.
Memuat Model Bahasa
Muat model bahasa yang telah diunduh dengan spacy.load()
:
nlp = spacy.load("en_core_web_sm")
Variabel nlp
adalah objek pipeline SpaCy. Model ini sudah terlatih untuk tokenisasi spacy dan tugas NLP lainnya.
Memproses Teks
Untuk memproses teks, panggil objek nlp
dengan string teks:
text = "Apple is looking at buying U.K. startup for $1 billion"
doc = nlp(text)
doc
adalah objek Doc
SpaCy, berisi informasi teks, token, dan entitas bernama.
Mengakses Entitas Bernama
Entitas bernama diakses melalui doc.ents
. Setiap entitas adalah objek Span
dengan properti:
text
: Teks entitas.label_
: Label kategori.start_char
: Indeks karakter awal.end_char
: Indeks karakter akhir.
Iterasi pada entitas dan cetak informasinya:
for ent in doc.ents:
print(ent.text, ent.start_char, ent.end_char, ent.label_)
Output:
Apple 0 5 ORG
U.K. 27 31 GPE
$1 billion 44 54 MONEY
Visualisasi Entitas
Gunakan displacy
untuk visualisasi. displacy.render()
dengan style="ent"
:
from spacy import displacy
displacy.render(doc, style="ent")
Kode ini menghasilkan visualisasi teks dengan entitas yang disorot. Ini adalah contoh Visualisasi NER.
Teknik Lanjutan NER dengan SpaCy
Setelah memahami dasar-dasarnya, mari kita lihat teknik lanjutan, yang merupakan langkah demi langkah NER dengan python.
Melatih Model NER Kustom
Terkadang, Anda perlu melatih model NER kustom untuk entitas khusus. Misalnya, nama produk atau istilah teknis. Ini memerlukan custom NER model.
Baca juga: Panduan Lengkap Membuat Chatbot Python dengan Rasa NLU
SpaCy memungkinkan pelatihan dengan data berlabel. Formatnya adalah list of tuples, tiap tuple berisi teks dan dictionary entitas:
TRAIN_DATA = [
("Who is Shaka Khan?", {"entities": [(7, 17, "PERSON")]}),
("I like London and Berlin.", {"entities": [(7, 13, "GPE"), (18, 24, "GPE")]}),
]
Contoh kode lengkap untuk training NER model kustom:
import spacy
import random
# Data pelatihan
TRAIN_DATA = [
("Who is Shaka Khan?", {"entities": [(7, 17, "PERSON")]}),
("I like London and Berlin.", {"entities": [(7, 13, "GPE"), (18, 24, "GPE")]}),
]
# Memuat model kosong
nlp = spacy.blank("en")
# Membuat pipeline komponen 'ner'
ner = nlp.add_pipe("ner")
# Menambahkan label
for _, annotations in TRAIN_DATA:
for ent in annotations.get("entities"):
ner.add_label(ent[2])
# Melatih model
optimizer = nlp.initialize()
for i in range(20): # Jumlah iterasi
random.shuffle(TRAIN_DATA)
for text, annotations in TRAIN_DATA:
example = spacy.training.Example.from_dict(nlp.make_doc(text), annotations)
nlp.update([example], sgd=optimizer)
# Menyimpan model (opsional)
nlp.to_disk("model_ner_kustom")
# Tes model
test_text = "I like London."
doc = nlp(test_text)
for ent in doc.ents:
print(ent.text, ent.label_)
Evaluasi Performa Model
Evaluasi model memerlukan data uji terpisah. Metrik umum: precision, recall, dan F1-score. Hitung dengan library seperti scikit-learn
. Bandingkan prediksi model dengan entitas sebenarnya.
Matcher Berbasis Aturan
Selain model statistik, SpaCy punya Matcher
untuk ekstraksi berbasis pola atau rule-based. Berguna untuk entitas dengan pola jelas (nomor telepon, email).
Contoh, ekstrak entitas “ORG” diawali “The”:
from spacy.matcher import Matcher
nlp = spacy.load("en_core_web_sm")
matcher = Matcher(nlp.vocab)
# Pola: "The" diikuti kata benda (PROPN)
pattern = [{"LOWER": "the"}, {"POS": "PROPN", "OP": "+"}]
matcher.add("THE_ORG", [pattern])
doc = nlp("I work at The New York Times")
matches = matcher(doc)
for match_id, start, end in matches:
string_id = nlp.vocab.strings[match_id] # String ID
span = doc[start:end] # Span entitas
print(string_id, span.text)
Contoh Kode NER Lengkap
Berikut contoh kode named entity recognition python spacy lengkap dengan skenario penggunaan praktis:
import spacy
from spacy import displacy
# Muat model
nlp = spacy.load("en_core_web_sm")
# Teks contoh (ulasan produk)
text = "I recently purchased the Kirim.ai SaaS platform, and I'm very impressed. The AI tools are fantastic, and the customer support is excellent. I highly recommend Kirim.ai to any business looking to leverage AI."
# Proses teks
doc = nlp(text)
# Iterasi dan cetak entitas
for ent in doc.ents:
print(f"Entitas {ent.text}, Label {ent.label_}")
# Visualisasi
displacy.render(doc, style="ent")
# Skenario Penggunaan:
# Ekstrak informasi dari ulasan: nama produk (Kirim.ai), jenis produk (SaaS platform), fitur (AI tools, customer support).
# Gunakan untuk analisis sentimen, pemantauan merek, atau riset pasar.
Penjelasan Kode:
import spacy
danfrom spacy import displacy
: Impor SpaCy dandisplacy
.nlp = spacy.load("en_core_web_sm")
: Muat model.text = ...
: Teks input.doc = nlp(text)
: Proses teks.for ent in doc.ents:
: Iterasi entitas.print(f"Entitas {ent.text}, Label {ent.label_}")
: Cetak teks dan label.displacy.render(doc, style="ent")
: Visualisasi.# Skenario Penggunaan: ...
: Contoh penerapan.
Kesimpulan
Named Entity Recognition (NER) penting untuk ekstraksi informasi dari teks. SpaCy menyediakan tool yang powerful dan mudah untuk NER, dengan model statistik atau kustom.
Kita telah pelajari konsep dasar, instalasi, model bahasa, akses entitas, visualisasi, dan pelatihan model kustom. Dengan latihan, Anda siap menerapkan NER.
Baca juga: Panduan Lengkap Framework & Library Machine Learning Deep Learning
Untuk memperdalam, baca dokumentasi SpaCy (https://spacy.io/), coba model lain, dan eksperimen. Cari juga tutorial NER Bahasa Indonesia.
Untuk solusi bisnis, Kirim.ai menawarkan platform SaaS AI dengan alat pemrosesan teks, termasuk NER. Pelajari lebih lanjut.
Tanggapan (0 )