PENGAMPU
• Akurasi tag IOB menunjukkan bahwa lebih dari sepertiga kata-kata yang diberi
tag dengan O, yaitu, bukan dalam NP chunks.
• Namun, karena tagger kita tidak menemukan chunk apa pun, presisi,
perolehan, dan pengukuran F semuanya nol.
• Sekarang mari kita coba pemecah ekspresi reguler naif yang mencari tag yang
diawali dengan huruf yang merupakan karakteristik dari tag frase kata benda
(misalnya, CD, DT, dan JJ).
Simple Evaluation and Baselines
• Seperti yang Anda lihat, pendekatan ini mencapai hasil yang layak.
• Namun, kita dapat meningkatkannya dengan mengadopsi lebih banyak
pendekatan berbasis data, di mana kita menggunakan korpus pelatihan untuk
menemukan tag chunk (I, O, atau B) yang paling mungkin untuk setiap tag POS.
• Dengan kata lain, kita dapat membangun sebuah chunker menggunakan
penanda unigram.
• Namun alih-alih mencoba menentukan tag part-of-speech yang benar untuk
setiap kata, kita mencoba menentukan tag chunk yang benar, dengan
memberikan tag bagian-of-speech setiap kata.
UnigramChunker
• Dalam Contoh dibawah, kita mendefinisikan kelas UnigramChunker, yang
menggunakan tagger unigram untuk melabeli kalimat dengan tag chunk.
UnigramChunker
• Sebagian besar kode di kelas ini hanya digunakan untuk mengkonversi bolak-
balik antara representasi chunk tree yang digunakan oleh antarmuka
ChunkParserI NLTK, dan representasi IOB yang digunakan oleh tagger
tertanam.
• Kelas mendefinisikan dua metode: konstruktor (1), yang dipanggil saat kita
membangun UnigramChunker baru; dan metode parse(3), yang digunakan
untuk memotong kalimat baru.
• Konstruktor (1) mengharapkan daftar kalimat pelatihan, yang akan berbentuk
chunk tree. Ini pertama-tama mengonversi data pelatihan ke bentuk yang
sesuai untuk melatih tagger, menggunakan tree2conlltags untuk
memetakan setiap chunk tree menjadi daftar kata, tag, chunk tiga kali lipat.
• Ini kemudian menggunakan data pelatihan yang dikonversi untuk melatih
unigram tagger, dan menyimpannya di self.tagger untuk digunakan nanti.
UnigramChunker
• Metode parse (3) mengambil kalimat yang diberi tag sebagai masukannya, dan
dimulai dengan mengekstrak tag POS dari kalimat tersebut.
• Kemudian menandai tag POS dengan tag chunk IOB, menggunakan tagger
self.tagger yang dilatih di konstruktor.
• Selanjutnya, ia mengekstrak tag chunk, dan menggabungkannya dengan
kalimat asli, untuk menghasilkan conlltag.
• Akhirnya, menggunakan conlltags2tree untuk mengubah hasilnya kembali
menjadi chunk tree.
UnigramChunker
• Sekarang kita memiliki UnigramChunker, kita dapat melatihnya menggunakan
CoNLL-2000 Chunking Corpus, dan menguji kinerja yang dihasilkan:
UnigramChunker
• Chunker ini bekerja dengan cukup baik, mencapai skor F-measure keseluruhan
83%.
• Mari kita lihat apa yang dipelajari, dengan menggunakan tagger unigram untuk
menetapkan tag ke setiap tag bagian dari ucapan yang muncul di korpus:
UnigramChunker
• Telah ditemukan bahwa sebagian besar tanda baca muncul di luar potongan
NP, dengan pengecualian # dan $, keduanya digunakan sebagai penanda mata
uang.
• Ditemukan juga bahwa determiners (DT) dan posesif (PRP $ dan WP $) terjadi
di awal potongan NP, sedangkan jenis kata benda (NN, NNP, NNPS, NNS)
sebagian besar terjadi di dalam potongan NP.
Named Entity Recognition
• Di awal bab ini, secara singkat
diperkenalkan entitas bernama
(Named Entity/ NE).
• Entitas bernama adalah frasa kata
benda pasti yang merujuk pada
tipe individu tertentu, seperti
organisasi, orang, tanggal, dan
sebagainya.
• Tabel disamping mencantumkan
beberapa jenis NE yang lebih
umum digunakan.
Named Entity Recognition
• Tujuan dari sistem pengenalan entitas (NER) adalah untuk mengidentifikasi
semua sebutan tekstual dari entitas bernama, yang terdiri dari dua tugas:
• mengidentifikasi batas-batas NE, dan
• mengidentifikasi jenisnya.
• Meskipun pengenalan entitas bernama sering kali menjadi pendahuluan untuk
mengidentifikasi relasi di Ekstraksi Informasi, ia juga dapat berkontribusi untuk
tugas lain.
• Misalnya, dalam Question Menjawab (QA), kita mencoba meningkatkan
ketepatan Pengambilan Informasi dengan memulihkan tidak seluruh halaman,
tetapi hanya bagian yang berisi jawaban atas pertanyaan pengguna.
• Sebagian besar sistem QA mengambil dokumen yang dikembalikan oleh
Information Retrieval standar, dan kemudian mencoba untuk memisahkan
potongan teks minimal dalam dokumen yang berisi jawabannya.
Named Entity Recognition
• Sekarang anggaplah pertanyaannya adalah Siapa Presiden pertama AS ?, dan
salah satu dokumen yang diambil berisi bagian berikut:
• The Washington Monument is the most prominent structure in
Washington,
D.C. and one of the city’s early attractions. It was built in honor of George
Washington, who led the country to independence and then became its
first
President.
• Analisis pertanyaan mengarahkan kita untuk mengharapkan bahwa jawaban
harus dalam bentuk X adalah Presiden pertama AS, di mana X bukan hanya
frase kata benda, tetapi juga mengacu pada entitas bernama tipe PER. Ini akan
memungkinkan kita untuk mengabaikan kalimat pertama dalam bagian
tersebut.
• Meskipun berisi dua kejadian Washington, pengenalan entitas bernama harus
memberi tahu kita bahwa tidak satu pun dari mereka memiliki jenis yang
Named Entity Recognition
• Bagaimana cara kita mengidentifikasi entitas bernama?
• Salah satu opsinya adalah mencari setiap kata dalam daftar nama yang sesuai.
• Misalnya, dalam kasus lokasi, kita dapat menggunakan gazetteer, atau kamus
geografis, seperti Alexandria Gazetteer atau Getty Gazetteer.
• Namun pekerjaan ini merupakan pekerjaan yang ‘blindly run’, seperti contoh
gambar:
Named Entity Recognition
• Perhatikan bahwa gazetteer memiliki cakupan lokasi yang baik di banyak
negara, dan salah menemukan lokasi seperti Sanchez di Republik Dominika
dan Di Vietnam.
• Kita dapat menghilangkan lokasi seperti itu dari gazetteer, tetapi kemudian kita
tidak akan dapat mengidentifikasinya ketika mereka muncul dalam dokumen.
• Lebih sulit lagi dalam hal nama untuk orang atau organisasi. Daftar nama-nama
seperti itu mungkin memiliki cakupan yang buruk. Organisasi baru muncul
setiap hari, jadi jika kita mencoba berurusan dengan newswire atau entri blog
kontemporer, kecil kemungkinannya kita dapat mengenali banyak entitas
menggunakan pencarian gazetteer.
Named Entity Recognition
• Tantangan lebih lanjut diajukan oleh nama multiword seperti Universitas
Stanford, dan oleh nama yang mengandung nama lain, seperti Perpustakaan
Cecil H. Green dan Pusat Layanan Konferensi Desa Escondido.
• Oleh karena itu, dalam pengenalan entitas bernama, kita harus dapat
mengidentifikasi awal dan akhir rangkaian multitoken.
• Pengenalan entitas bernama adalah tugas yang sangat sesuai dengan jenis
pendekatan berbasis pengklasifikasi yang kami lihat untuk penggabungan frasa
kata benda.
• Secara khusus, kita dapat membuat tagger yang memberi label pada setiap
kata dalam kalimat menggunakan format IOB, di mana potongan diberi label
menurut jenisnya yang sesuai.
Named Entity Recognition
• Berikut adalah bagian dari data pelatihan CONLL 2002 (conll2002) Belanda:
• Dalam representasi ini, ada satu token per baris, masing-masing dengan tag
part-of-speech dan tag entitas bernama.
• Berdasarkan korpus pelatihan ini, kita dapat membuat tagger yang dapat
digunakan untuk memberi label pada kalimat baru, dan menggunakan fungsi
nltk.chunk.conlltags2tree () untuk mengubah urutan tag menjadi pohon chunk.
Named Entity Recognition
• NLTK menyediakan pengklasifikasi yang telah dilatih untuk mengenali entitas
bernama, diakses dengan fungsi nltk.ne_chunk ().
• Jika kita menyetel parameter binary = True, maka entitas bernama hanya
diberi tag sebagai NE; jika tidak, pengklasifikasi menambahkan label kategori
seperti PERSON, ORGANIZATION, dan GPE.
Relation Extraction
• Setelah entitas bernama telah diidentifikasi dalam teks, kemudian
mengekstrak hubungan yang ada di antara mereka.
• Seperti yang ditunjukkan sebelumnya, kita biasanya akan mencari hubungan
antara jenis entitas bernama tertentu.
• Salah satu cara untuk melakukan tugas ini adalah dengan mencari semua
bentuk tripel (X, α, Y), di mana X dan Y adalah entitas bernama dari tipe yang
diperlukan, dan α adalah rangkaian kata yang memisahkan X dan Y.
• Kemudian kita dapat menggunakan ekspresi reguler untuk menarik hanya
contoh α yang mengekspresikan hubungan yang kita cari.
• Contoh berikut menelusuri string yang berisi kata in. Ekspresi reguler khusus
(?! \ B. + Ing \ b) adalah pernyataan lookahead negatif yang memungkinkan
kita mengabaikan string seperti keberhasilan mengawasi transisi dari, where in
is diikuti oleh gerund.
Relation Extraction
• Contoh berikut menelusuri string yang berisi kata in. Ekspresi reguler khusus
(?! \ B. + Ing \ b) adalah pernyataan lookahead negatif yang memungkinkan
kita mengabaikan string seperti keberhasilan mengawasi transisi dari, dimana
in diikuti oleh gerund.
Relation Extraction
• Pencarian untuk kata kunci dalam bekerja dengan cukup baik, meskipun juga
akan mendapatkan positif palsu seperti [ORG: House Transportation
Committee] , secured the most money in the [LOC: New York];
tidak mungkin ada metode berbasis string sederhana untuk mengecualikan
string pengisi seperti ini.
• Seperti yang diperlihatkan sebelumnya, bagian bahasa Belanda dari CoNLL
2002 Named Entity Corpus tidak hanya berisi anotasi entitas bernama, tetapi
juga tag bagian-of-speech.
• Ini memungkinkan kita untuk merancang pola yang sensitif terhadap tag ini,
seperti yang ditunjukkan pada contoh berikutnya. Metode show_clause ()
mencetak relasi dalam bentuk klausa, di mana simbol relasi biner ditetapkan
sebagai nilai parameter relsym.
Relation Extraction