
Model pelabelan urutan cukup populer di banyak tugas NLP, seperti Named Entity Recognition (NER), Part-of-Speech (POS) Tagging dan Segmentasi Kata. Model pelabelan urutan canggih sebagian besar menggunakan struktur CRF dengan fitur kata input. LSTM (atau dua arah LSTM) adalah ekstraktor fitur berbasis pembelajaran mendalam yang populer dalam tugas pelabelan urutan. Dan CNN juga dapat digunakan karena perhitungan yang lebih cepat. Selain itu, fitur dalam kata juga berguna untuk mewakili Word, yang dapat ditangkap oleh karakter LSTM atau karakter CNN struktur atau fitur saraf yang ditentukan manusia.
NCRF ++ adalah kerangka kerja berbasis pytorch dengan pilihan fitur input flexable dan struktur output. Desain model pelabelan urutan saraf dengan NCRF ++ sepenuhnya dapat dikonfigurasi melalui file konfigurasi, yang tidak memerlukan pekerjaan kode apa pun. NCRF ++ dapat dianggap sebagai versi saraf CRF ++, yang merupakan kerangka CRF statistik yang terkenal.
Kerangka kerja ini telah diterima oleh ACL 2018 sebagai kertas demonstrasi. Dan laporan eksperimen terperinci dan analisis menggunakan NCRF ++ telah diterima di Coling 2018 sebagai kertas terbaik.
NCRF ++ mendukung kombinasi struktur yang berbeda pada tiga tingkatan: representasi urutan karakter, representasi urutan kata dan lapisan inferensi.
Selamat datang di Repository ini!
Python: 2 or 3
PyTorch: 1.0
Versi kompatibel Pytorch 0.3 ada di sini.
nbest Decoding (dengan probabilitas mereka). NCRF ++ mendukung merancang struktur jaringan saraf melalui file konfigurasi. Program dapat berjalan dalam dua status; pelatihan dan decoding . (Konfigurasi sampel dan data telah dimasukkan dalam repositori ini)
Dalam Status Pelatihan : python main.py --config demo.train.config
Dalam status decoding : python main.py --config demo.decode.config
File konfigurasi mengontrol struktur jaringan, I/O, pengaturan pelatihan dan hiperparameter.
Konfigurasi dan penjelasan detail tercantum di sini.
NCRF ++ dirancang dalam tiga lapisan (ditunjukkan di bawah): Lapisan urutan karakter; Lapisan Urutan Kata dan Lapisan Inferensi. Dengan menggunakan file konfigurasi, sebagian besar model canggih dapat dengan mudah direplikasi tanpa pengkodean . Di sisi lain, pengguna dapat memperluas setiap lapisan dengan merancang modul mereka sendiri (misalnya, mereka mungkin ingin merancang struktur saraf mereka sendiri selain CNN/LSTM/GRU). Desain berlapis-lapis kami membuat ekstensi modul nyaman, instruksi ekstensi modul dapat ditemukan di sini.

Hasil pada Conll 2003 Tugas Bahasa Inggris NER lebih baik atau sebanding dengan hasil SOTA dengan struktur yang sama.
Charlstm+wordlstm+crf: 91.20 vs 90.94 dari lampel .etc, naaCl16;
Charcnn+Wordlstm+CRF: 91.35 vs 91.21 dari Ma .etc, ACL16.
Secara default, LSTM adalah dua arah LSTM.
| PENGENAL | Model | Nochar | Charlstm | Charcnn |
|---|---|---|---|---|
| 1 | Wordlstm | 88.57 | 90.84 | 90.73 |
| 2 | Wordlstm+crf | 89.45 | 91.20 | 91.35 |
| 3 | Wordcnn | 88.56 | 90.46 | 90.30 |
| 4 | Wordcnn+crf | 88.90 | 90.70 | 90.43 |
Kami telah membandingkan dua belas model pelabelan urutan saraf ( {charLSTM, charCNN, None} x {wordLSTM, wordCNN} x {softmax, CRF} ) pada tiga tolok ukur (POS, chunking, ner) di bawah tantangan statistik, hasil detail dan perbandingan dapat ditemukan dalam coling 2018.
NCRF ++ telah mengintegrasikan beberapa ekstraktor fitur urutan saraf saraf saraf: CNN (MA .etc, ACL16), LSTM (Lample .ETC, NAACL16) dan GRU (Yang .etc, ICLR17). Selain itu, fitur buatan tangan telah terbukti penting dalam tugas pelabelan urutan. NCRF ++ memungkinkan pengguna merancang fitur mereka sendiri seperti kapitalisasi, tag POS atau fitur lainnya (lingkaran abu -abu di atas gambar). Pengguna dapat mengonfigurasi fitur yang ditentukan sendiri melalui file konfigurasi (ukuran embedding fitur, embeddings fitur pretrain .etc). Format data input sampel diberikan di train.cappos.bmes, yang mencakup dua fitur yang ditentukan manusia [POS] dan [Cap] . ( [POS] dan [Cap] adalah dua contoh, Anda dapat memberikan fitur Anda nama apa pun yang Anda inginkan, cukup ikuti format [xx] dan konfigurasikan fitur dengan nama yang sama dalam file konfigurasi.) Pengguna dapat mengkonfigurasi setiap fitur dalam file konfigurasi dengan menggunakan
feature = [ POS ] emb_size = 20 emb_dir = % your_pretrained_POS_embedding
feature = [ Cap ] emb_size = 20 emb_dir = % your_pretrained_Cap_embeddingFitur tanpa embedding pretrained akan diinisialisasi secara acak.
NCRF ++ diimplementasikan menggunakan perhitungan sepenuhnya batch, membuatnya cukup efisien pada pelatihan model dan decoding. Dengan bantuan GPU (NVIDIA GTX 1080) dan ukuran batch yang besar, model LSTMCRF yang dibangun dengan NCRF ++ dapat mencapai 1000 SENTS/S dan 2000SENT/S pada masing -masing pelatihan dan status decoding.

Struktur CRF tradisional hanya mendekode satu urutan label dengan probabolitas terbesar (yaitu output 1 terbaik). Sementara NCRF ++ dapat memberikan pilihan besar, ia dapat mendekode urutan label n dengan probabilitas n atas (yaitu output n-terbaik). Dekode NBEST telah didukung oleh beberapa kerangka kerja CRF statistik populer. Namun sepengetahuan kami, NCRF ++ adalah satu -satunya dan toolkit pertama yang mendukung decoding NBest dalam model CRF saraf .
Dalam implementasi kami, ketika NBest = 10, Charcnn+Wordlstm+CRF model yang dibangun di NCRF ++ dapat memberikan 97,47% Oracle F1-Nilai (F1 = 91,35% ketika NBEST = 1) pada tugas Conll 2003 NER.

Untuk mereproduksi hasil dalam kertas Coling 2018 kami, Anda hanya perlu mengatur iteration=1 sebagai iteration=100 dalam file konfigurasi demo.train.config dan mengkonfigurasi direktori file Anda dalam file konfigurasi ini. File konfigurasi default menjelaskan model Char CNN + Word LSTM + CRF , Anda dapat membangun model Anda sendiri dengan memodifikasi konfigurasi yang sesuai. Parameter dalam file konfigurasi demo ini sama di kertas kami. (Perhatikan Word CNN membutuhkan parameter yang sedikit berbeda, detail dapat ditemukan di kertas coling kami.)
Jika Anda ingin menggunakan kerangka kerja ini dalam tugas atau set data baru, berikut adalah beberapa tips tuning oleh @Victor0118.
Jika Anda ingin melaporkan masalah atau menanyakan masalah, silakan lampirkan materi berikut jika perlu. Dengan informasi ini, saya dapat memberikan diskusi dan saran yang cepat dan akurat.
log fileconfig filesample data Jika Anda menggunakan NCRF ++ di kertas Anda, silakan kutip kertas demo ACL kami:
@inproceedings{yang2018ncrf,
title={NCRF++: An Open-source Neural Sequence Labeling Toolkit},
author={Yang, Jie and Zhang, Yue},
booktitle={Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics},
Url = {http://aclweb.org/anthology/P18-4013},
year={2018}
}
Jika Anda menggunakan hasil eksperimen dan analisis NCRF ++, silakan kutip kertas Coling kami:
@inproceedings{yang2018design,
title={Design Challenges and Misconceptions in Neural Sequence Labeling},
author={Yang, Jie and Liang, Shuailong and Zhang, Yue},
booktitle={Proceedings of the 27th International Conference on Computational Linguistics (COLING)},
Url = {http://aclweb.org/anthology/C18-1327},
year={2018}
}