Repo ini berisi perangkat lunak yang dikembangkan untuk makalah ini,
Pelatihan Mandiri Kooperatif untuk Pemahaman Membaca Mesin, Luo H., Li S.-W., Gao M., Yu S., Glass J., NAACL 2022.
Coba demo langsung kami dengan bagian-bagian berukuran sedang (versi dokumen panjang segera hadir).
Kami menjalankan perangkat lunak ini menggunakan paket berikut,
Model terlatih tersedia melalui Tautan Google Drive ini. Silakan unduh model dan pindahkan ke bawah direktori model_file/
jika mesin Anda tidak dapat mengunduh model dari hub Huggingface.
model_file/ext_sqv2.pt
: Model penjawab pertanyaan besar ELECTRA yang telah dilatih sebelumnya di SQuAD v2.0.model_file/ques_gen_squad.pt
: Model pembuatan pertanyaan besar BART yang telah dilatih sebelumnya di SQuAD v2.0.model_file/electra-tokenize.pt
: Tokenizer electra-besar disediakan oleh Huggingface.model_file/bart-tokenizer.pt
: Tokenizer besar BART disediakan oleh Huggingface. Hasilkan pasangan pertanyaan-jawaban pada contoh bagian SQuAD yang kami sediakan di data/squad/doc_data_0.json
dengan menjalankan perintah berikut,
python RGX _doc.py
--dataset_name squad
--data_split 0
--output_dir tmp/ RGX
--version_2_with_negative
Data yang dihasilkan akan disimpan di bawah data_gen/squad
, termasuk RGX _0.json
dan qa_train_corpus_0.json
. Kami menyediakan opsi $DATA_SPLIT
untuk pembuatan data terdistribusi, misalnya dengan Slurm. Jika hanya menghasilkan pasangan QA dengan satu proses, cukup gunakan --data_split 0
.
Semua data disimpan di direktori data/
dan data_gen/
.
data/{$DATASET_NAME}/doc_data_{$DATA_SPLIT}.json
: dokumen tanpa label dari kumpulan data target.data_gen/{$DATASET_NAME}/ RGX _{$DATA_SPLIT}.json
: menghasilkan data QA yang selaras dengan setiap dokumen dari kumpulan data terkait.data_gen/{$DATASET_NAME}/qa_train_corpus_{$DATA_SPLIT}.json
: menghasilkan kumpulan pelatihan QA dari kumpulan data yang diberikan. Contoh pelatihan mengikuti format data SQuAD dan diacak secara acak. doc_data_{$DATA_SPLIT}.json
adalah daftar kamus sebagai [
{"context": INPUT_DOC_TXT__0},
{"context": INPUT_DOC_TXT__1},
...,
{"context": INPUT_DOC_TXT__N},
]
qa_train_corpus_{$DATA_SPLIT}.json
, adalah daftar kamus sebagai [
{
"context": INPUT_DOC_TXT_0,
"question": GEN_QUESTION_TXT_0,
"answers": {
"text": [ ANSWER_TXT ], # only one answer per question
"answer_start": [ ANSWER_ST_CHAR ]
# index of the starting character of the answer txt
}
},
{
...
},
]
RGX _{$DATA_SPLIT}.json
adalah daftar pemetaan dokumen-QA, [
[
$DOCUMENT_i,
$ANS2ITEM_LIST_i,
$GEN_QA_LIST_i
],
...
]
$DOCUMENT_i
memiliki format yang sama dengan file masukan. $ANS2ITEM_LIST_i
adalah metadata dari semua jawaban yang dikenali dan pertanyaan yang dihasilkan. Perhatikan bahwa satu jawaban bisa berisi banyak pertanyaan, dan pertanyaannya bisa benar atau tidak. Output akhir dari model ini adalah $GEN_QA_LIST_i
, yang merupakan daftar kamus pasangan QA yang dihasilkan berdasarkan dokumen input,
[
{
"question": GEN_QUESTION_TXT_0,
"answers": {
"text": [ ANSWER_TXT ],
"answer_start": [ ANSWER_ST_CHAR ]
}
}
]
data/
dan data_gen/
, bash new_dataset.sh $NEW_DATASET_NAME
Pindahkan file input yang berisi dokumen target sebagai data/$NEW_DATASET_NAME/doc_data_0.json
. Formatnya dijelaskan di bagian sebelumnya.
Jalankan perintah berikut
python RGX _doc.py
--dataset_name $NEW_DATASET_NAME
--data_split 0
--output_dir tmp/ RGX
--version_2_with_negative
File yang dihasilkan akan disimpan di data_gen/{$NEW_DATASET_NAME}/
.
kami menyarankan dua pendekatan untuk penyesuaian QA dengan pasangan QA yang dihasilkan.
mix_mode.py
dengan python mix_model.py $MIX_RATE $SQUAD_MODEL_PATH $ RGX _MODEL_PATH
Misalnya,
python mix_model.py 0.5 model_ft_file/ext_sq.pt model_ft_file/ext_ RGX .pt
Model keluaran akan disimpan sebagai model_ft_file/ext_mixed.pt
.
Silakan hubungi penulis pertama, Hongyin Luo (hyluo di mit dot edu) jika ada pertanyaan. Jika sistem kami diterapkan dalam pekerjaan Anda, harap mengutip makalah kami
@article{luo2021cooperative,
title={Cooperative self-training machine reading comprehension},
author={Luo, Hongyin and Li, Shang-Wen and Mingye Gao, and Yu, Seunghak and Glass, James},
journal={arXiv preprint arXiv:2103.07449},
year={2021}
}