Lensa ML

Named Entity Recognition

Langkah 1 dari 6: Tipe Entitas

PER, ORG, LOC, dan lainnya

Posisi kursor0
SarahPERworksOatOGoogleORGinOLondonLOC"Sarah" → Orang (PER)Nama orang: nama depan, nama belakang, atau nama lengkapTipe entitas:PER = OrangORG = OrganisasiLOC = Lokasi
Token
"Sarah"
Tipe entitas
PER
Entitas ditemukan
3

"Sarah" adalah entitas Orang (PER). Posisi dan konteks "Sarah" khas untuk nama orang, dan pola itulah yang dipelajari model untuk dikenali.

Geser Posisi kursor dari 0 ke 5 untuk menelusuri "Sarah works at Google in London". PER, ORG, dan LOC adalah tiga dari empat tipe di benchmark CoNLL-2003. Tipe keempat, MISC, mencakup hal seperti kebangsaan dan peristiwa. OntoNotes 5.0 memakai 18 tipe, dengan tambahan tanggal, waktu, uang, persentase, dan produk. Sistem untuk domain tertentu punya himpunan sendiri: NER biomedis menandai gen, protein, dan penyakit, sedangkan NER hukum menandai pengadilan dan undang-undang. Himpunan tipe adalah pilihan desain, yang ditentukan oleh apa yang perlu diekstrak aplikasi hilirnya.

Langkah 2 dari 6: BIO Tagging

Begin, Inside, Outside

Tampilkan tag (posisi token)0
B = Begin (awal entitas) | I = Inside (di dalam entitas) | O = Outside (di luar)TimB-PERCook?leads?Apple?from?Cupertino?Kenapa BIO, bukan tipe entitas saja?"Tim Cook" → B-PER I-PER (satu entitas orang, 2 token)Tanpa B/I: "Tim" PER "Cook" PER. Itu 1 orang atau 2?
Ditampilkan
1/6
Tag B
1
Tag I
0
Tag O
0

"Tim" mendapat tag B-PER. B (Begin) menandai awal entitas baru.

Geser Tampilkan tag (posisi token) dari 0 ke 5 untuk memberi tag pada "Tim Cook leads Apple from Cupertino" satu per satu token. BIO mengubah pencarian span menjadi klasifikasi per token dengan 2K + 1 label untuk K tipe entitas, yaitu 7 label untuk PER, ORG, dan LOC. Sebagian urutan tag tidak valid, misalnya I-ORG tepat setelah O atau setelah B-PER. Varian lain menambah struktur. BIOES, yang juga disebut BILOU, memberi tag tersendiri untuk entitas satu token dan akhir entitas, dan ini sering kali sedikit menaikkan akurasi.

Langkah 3 dari 6: Context Window

Seberapa besar konteks membantu?

Ukuran context window1
TimCookleadsApplefromCupertinowindow ±1Confidence prediksi untuk "Apple" → ORG:50%Petunjuk konteks:✓ "leads" → subjeknya kemungkinan ORG (peran perusahaan)
Fokus
"Apple"
Window
±1
Konteks
3 token
Confidence
50%

Dengan konteks ±1: "leads Apple from". Kata kerja "leads" mengarah ke organisasi, karena orang memimpin perusahaan, bukan buah. Confidence: 50%.

Geser Ukuran context window dari 0 ke 5 dan lihat confidence untuk "Apple" naik. NER neural generasi awal bekerja seperti ini: Collobert et al. (2011) memasukkan window tetap berisi word vector di sekitar setiap token ke feed-forward network. Kapitalisasi adalah petunjuk tambahan yang kuat. Itu sebabnya banyak sistem menambahkan input berupa huruf besar-kecil, dan akurasinya turun pada teks yang seluruhnya huruf kecil seperti tweet. Window tetap punya batas keras. Petunjuk yang berjarak lima kata tidak terlihat oleh window ±2, seinformatif apa pun petunjuk itu.

Langkah 4 dari 6: Sequence Labeling

Hidden state RNN → tag entitas

Posisi sequence0
Timh0B-PERCookh1leadsh2Appleh3fromh4Cupertinoh5Aktivasi hidden state h0:0.830.410.630.590.530.54RNN membaca dari kiri ke kanan dan mengumpulkan konteks di hidden state vector.Setiap posisi menghasilkan prediksi tag berdasarkan semua token sebelumnya.
Posisi
Tim
Dimensi hidden
6
Prediksi
B-PER

Posisi 0: "Tim". RNN belum punya konteks sebelumnya, jadi ia memprediksi B-PER hanya dari embedding "Tim". Nama depan yang umum adalah sinyal yang kuat.

Geser Posisi sequence dari 0 ke 5 untuk memindahkan hidden state di sepanjang kalimat. RNN kiri-ke-kanan tidak bisa melihat kata berikutnya, jadi bidirectional LSTM menjalankan putaran kedua dari kanan dan menggabungkan kedua state di setiap token. Lample et al. (2016) menambahkan CRF layer di atasnya, yang memberi skor pada seluruh urutan tag dan mempelajari bahwa I-PER bisa mengikuti B-PER tetapi tidak bisa mengikuti O. Sebagian besar sistem NER saat ini malah melakukan fine-tune pada Transformer seperti BERT dan memprediksi satu tag BIO per subword token.

Langkah 5 dari 6: Confidence Threshold

Kapan melabeli, kapan melewati

Confidence threshold0.50
Tim72%Cook45%leads34%Apple79%from7%Cupertino60%Threshold: 50%, entitas di bawah nilai ini ditolakTrade-off precision vs recall:Precision:100%Recall:75%Skor F1:86%
Threshold
50%
Precision
100%
Recall
75%
F1
86%

Threshold 50%: precision (100%) dan recall (75%) seimbang. F1 = 86%. Menaikkan threshold menyisakan lebih sedikit prediksi, dengan confidence lebih tinggi.

Geser Confidence threshold dari 0,10 ke 0,95 dan lihat precision, recall, dan F1 berubah. F1 adalah harmonic mean, 2PR / (P + R), jadi nilainya tetap rendah kecuali precision dan recall sama-sama tinggi. Demo ini memberi skor per token. Di bawah 0,35, kata kerja "leads" lolos sebagai false positive dan precision turun ke 80%, sedangkan mulai 0,50 ke atas, entitas "Cook" terlewat dan recall turun ke 75%. Threshold yang tepat bergantung pada biaya setiap error: menyamarkan data pribadi butuh recall tinggi, sedangkan mengisi basis data dari berita butuh precision tinggi.

Langkah 6 dari 6: Evaluasi per Entitas

Pencocokan span persis vs. nilai parsial

Ketatnya pencocokan0.00
Gold (ground truth):TimCookleadsApplefromCupertinoPrediksi:TimCookleadsApplefromCupertinoHasil pencocokan (Span persis):Tim Cook [PER]✗ MelesetApple [ORG]✓ CocokCupertino [LOC]✓ CocokPrecision: 67%Recall: 67%F1: 67%Mode: Span persis. Span harus sama persis
Ketatnya
Span persis
Precision
67%
Recall
67%
F1
67%

Pencocokan span persis: "Tim" ≠ "Tim Cook". Span prediksinya terlalu pendek, jadi dihitung meleset, dan hanya "Apple" dan "Cupertino" yang cocok. Benchmark CoNLL memakai aturan ini.

Geser Ketatnya pencocokan dari 0 ke 1 untuk berpindah antara pencocokan persis, sebagian, dan tipe saja. Pada pencocokan persis, prediksi "Tim" sekaligus menjadi false positive dan false negative, jadi satu kesalahan batas dihitung dua kali, dan precision serta recall sama-sama 2/3. Evaluasi CoNLL-2003 menghitung entitas benar hanya jika span dan tipenya cocok, dan sistem yang kuat meraih F1 sekitar 93 sampai 94 pada test set bahasa Inggrisnya. Skema SemEval-2013 menambahkan kategori nilai parsial untuk kesalahan batas.

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

Referensi

  1. Tjong Kim Sang & De Meulder (2003), "Introduction to the CoNLL-2003 Shared Task: Language-Independent Named Entity Recognition"
  2. Collobert et al. (2011), "Natural Language Processing (Almost) from Scratch", JMLR
  3. Huang, Xu & Yu (2015), "Bidirectional LSTM-CRF Models for Sequence Tagging"
  4. Lample et al. (2016), "Neural Architectures for Named Entity Recognition", NAACL
  5. Devlin et al. (2019), "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding", NAACL

Terakhir diperbarui