Repositori ini berisi kode untuk pelatihan dan menggunakan model SRL yang dalam yang dijelaskan dalam: Label Peran Semantik yang Dalam: Apa yang berhasil dan apa selanjutnya
Jika Anda menggunakan kode kami, silakan mengutip kertas kami sebagai berikut:
@Inproeding {he2017deep,
title = {label peran semantik yang dalam: apa yang berhasil dan apa selanjutnya},
Penulis = {He, Luheng dan Lee, Kenton dan Lewis, Mike dan Zettlemoyer, Luke},
booktitle = {Prosiding Pertemuan Tahunan Asosiasi Linguistik Komputasi},
tahun = {2017}
}
./scripts/fetch_required_data.sh Mendekompres model (dalam sumber daya) di bawah direktori neural_srl. Misalnya, di bawah Direktori Codebase:
tar -zxvf resources/conll05_model.tar.gz
Berikut daftar model pretrained:
conll05_model.tar.gz : model tunggal yang dilatih pada dataset CONLL-2005.conll05_ensemble.tar.gz : 5 model ensemble yang dilatih pada dataset CONLL-2005.conll05_propid_model.tar.gz : Train model identifikasi predikat pada CONLL-2005.conll2012_model.tar.gz : model tunggal yang dilatih pada dataset CONLL-2012.conll2012_ensemble.tar.gz : 5 model ensemble yang dilatih pada dataset CONLL-2012.conll2012_propid_model.tar.gz : Train model identifikasi predikat pada CONLL-2012. python python/interactive.py --model conll05_model/ --pidmodel conll05_propid_model
Berlari:
./scripts/run_end2end.sh sample_data/sentences_with_predicates.txt temp/sample.out (pada cpu) atau:
./scripts/run_end2end.sh sample_data/sentences_with_predicates.txt temp/sample.out ${gpu_id} (pada gpu)
Perhatikan bahwa skrip menambahkan /usr/local/cuda/... ke PATH dan CUDA_LD_LIBRARY_PATH , dan memuat model pretrain dari ./conll05_propid_model dan ./conll05_ensemble , harap sesuaikan konfigurasi sesuai dengan pengaturan Anda sendiri.
File input berisi kalimat tokenisasi, satu kalimat per baris.
File output akan berisi sesuatu seperti:
John menyuruh Pat untuk memotong pohon.
Predikat: Diceritakan (1)
A0: John
V: Diceritakan
A2: Pat
A1: Untuk memotong pohon
John menyuruh Pat untuk memotong pohon.
Predikat: Potong (4)
A0: Pat
V: Potong
A1: Pohon
predict.py memuat seluruh file input ke dalam memori, sehingga akan lebih baik untuk menjaga jumlah kalimat di setiap file di bawah 50.000. Untuk mereplikasi hasil pada dataset CONLL-2005 dan CONLL-2012, silakan ikuti langkah-langkah di bawah ini.
Data disediakan oleh: Tugas Bersama CONLL-2005, tetapi kata-kata aslinya berasal dari Dataset Penn Treebank, yang tidak tersedia untuk umum. Jika Anda memiliki corpus PTB, Anda dapat menjalankan:
./scripts/fetch_and_make_conll05_data.sh /path/to/ptb/
Anda harus mengikuti instruksi di bawah ini untuk mendapatkan data CONLL-2012 CONLL-2012, ini akan menghasilkan direktori yang disebut /path/to/conll-formatted-ontonotes-5.0 . Berlari:
./scripts/make_conll2012_data.sh /path/to/conll-formatted-ontonotes-5.0
Lihat Penggunaan python/train.py :
python python/predict.py -h
Atau sebagai awal yang cepat, jalankan model terlatih (membutuhkan conll05_ensemble):
./scripts/run_predict_conll05.sh ${gpu_id} atau:
./scripts/run_predict_conll05.sh untuk berjalan di CPU.
Jalankan model ujung ke ujung dengan prediksi (membutuhkan conll05_ensemble, dan conll05_propid_model):
./scripts/run_end_to_end_conll05.sh ${gpu_id}
Menjalankan model CONLL-2012 bekerja dengan cara yang sama.
Lihat Penggunaan python/train.py :
python python/train.py -h
Latih model SRL (dengan predikat emas) dengan file konfigurasi yang telah ditentukan sebelumnya: ./scripts/run_train.sh ${gpu_id}
Latih predikat identifikasi: ./scripts/run_propid_train.sh ${gpu_id}
Perhatikan bahwa pada waktu pelatihan, train.py berjalan dalam model FAST_RUN , yang akan menghasilkan overhead besar kompilasi model. Butuh waktu hingga beberapa menit untuk model 2 lapisan, dan hingga 8 jam untuk model 8 lapisan dengan dropout variasional.
Silakan merujuk ke file di sample_data dan penjelasan di bawah ini untuk cara memformat input model.
Setiap baris berisi tepat satu sampel pelatihan, yang memiliki informasi predikat (indeks dalam kalimat, mulai dari 0), kalimat tokenized, dan urutan tag. Jika tag emas tidak ada, cukup gunakan urutan OS. Kalimat dan urutan tag dipisahkan dengan ||| simbol. Kami menggunakan format IOB2. Semua token dan simbol dipisahkan oleh whitespace yang sewenang -wenang.
Contoh baris:
2 Kucing saya menyukai topi. ||| B-A0 I-A0 BV B-A1 O
Formatnya mirip dengan yang ditentukan di atas, kecuali bahwa setiap baris sesuai dengan kalimat input, dan tidak ada informasi predikat yang disediakan. Prediat sesuai dengan tag V dan semua kata lainnya diberi label dengan tag O.
Contoh baris:
Kucing saya suka topi, kata mereka. ||| Oovooovo
config berisi beberapa file konfigurasi untuk melatih model SRL ( srl_config.json dan srl_small_config.json ) serta untuk melatih model predikat-id ( propid_config.json )
Hubungi Luheng He jika Anda memiliki pertanyaan!