Apa itu named entity recognition (NER)?
Named entity recognition (NER) adalah tugas menemukan nama-nama dalam teks dan memberi tiap nama sebuah tipe, misalnya orang, organisasi, atau lokasi. Pada "Tim Cook leads Apple from Cupertino", sistem NER menandai "Tim Cook" sebagai orang, "Apple" sebagai organisasi, dan "Cupertino" sebagai lokasi. Tugas ini biasanya dirumuskan sebagai sequence labeling: model memberi satu tag pada setiap token.
NER mengubah teks tak terstruktur menjadi catatan terstruktur. Mesin pencari memakainya untuk menghubungkan kueri ke knowledge base, alat berita dan keuangan memakainya untuk melacak perusahaan dan orang yang disebut dalam sebuah berita, rumah sakit memakainya untuk mengambil obat dan diagnosis dari catatan klinis, dan alat privasi memakainya untuk menemukan dan menyamarkan data pribadi. NER juga langkah pertama yang lazim untuk relation extraction dan question answering.
Ide utama
- NER menemukan span teks yang menyebut entitas tertentu dan memberi tiap span sebuah tipe.
- Tag BIO mengubah deteksi span menjadi satu klasifikasi per token.
- Konteks menentukan kasus yang ambigu, seperti Apple si perusahaan dan apple si buah.
- Model bidirectional dengan CRF layer, dan kemudian Transformer yang di-fine-tune, menjadi pendekatan standar.
- Confidence threshold menukar precision dengan recall.
- Benchmark menilai entitas secara utuh, jadi satu kesalahan batas dihitung sebagai meleset sekaligus alarm palsu.
Pertanyaan umum
Apa bedanya NER dan part-of-speech tagging?
Keduanya memberi label pada setiap token. Part-of-speech tagging melabeli peran tata bahasa seperti kata benda dan kata kerja untuk setiap kata, sedangkan NER hanya melabeli token di dalam nama entitas dan memberi O pada sisanya. Nama diri sering, tetapi tidak selalu, menjadi bagian dari entitas.
Bagaimana cara melakukan named entity recognition di Python?
spaCy menyediakan pipeline pretrained yang mengembalikan entitas dengan satu panggilan, dan Hugging Face Transformers menawarkan pipeline token classification dengan model bergaya BERT yang sudah di-fine-tune. Untuk himpunan entitas khusus, keduanya bisa di-fine-tune dengan beberapa ratus sampai beberapa ribu kalimat berlabel.
Bisakah large language model mengerjakan NER?
Bisa. Prompt yang mencantumkan tipe entitas dan meminta span-nya bekerja cukup baik tanpa data training, dan ini membantu untuk domain baru. Model encoder yang di-fine-tune biasanya masih lebih akurat pada himpunan tipe yang tetap, lebih cepat, dan jauh lebih murah untuk menjalankan teks dalam volume besar.
Apa itu nested NER?
Sebagian entitas berisi entitas lain. "Bank of China" adalah organisasi yang berisi lokasi, dan "University of California, Berkeley" berisi dua lokasi. BIO tagging datar hanya bisa memberi satu tag per token, jadi nested NER butuh model berbasis span atau model berlapis.
Penjelasan terkait
- Word2Vec & Word Embedding · Mempelajari representasi dense vector, dengan kata yang mirip saling berdekatan di dalam ruang
- Recurrent Neural Network · Cara RNN membaca dan memahami sequence
- LSTM · Gate dan memory cell untuk sequence panjang
- BERT dan Masked Language Modeling · Sembunyikan satu kata, prediksi dari dua sisi: cara BERT mempelajari representasi bidirectional yang dalam
- Text Classification & Sentiment · Latih model untuk memberi label pada teks, dari deteksi spam sampai sentiment analysis
- Evaluasi Model dan Metrik · Precision, recall, F1, kurva ROC, dan metrik regresi
Referensi
- Tjong Kim Sang & De Meulder (2003), "Introduction to the CoNLL-2003 Shared Task: Language-Independent Named Entity Recognition"
- Collobert et al. (2011), "Natural Language Processing (Almost) from Scratch", JMLR
- Huang, Xu & Yu (2015), "Bidirectional LSTM-CRF Models for Sequence Tagging"
- Lample et al. (2016), "Neural Architectures for Named Entity Recognition", NAACL
- Devlin et al. (2019), "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding", NAACL
Terakhir diperbarui