Repo นี้มีซอฟต์แวร์ที่พัฒนาขึ้นสำหรับกระดาษ
การฝึกอบรมตนเองแบบร่วมมือเพื่อความเข้าใจในการอ่านเครื่อง, Luo H., Li S.-W., Gao M., Yu S., Glass J., NAACL 2022
ลองสาธิตสดของเราด้วยข้อความที่มีความยาวปานกลาง (เวอร์ชันเอกสารขนาดยาวจะมาเร็วๆ นี้)
เรารันซอฟต์แวร์นี้โดยใช้แพ็คเกจต่อไปนี้
โมเดลที่ฝึกไว้ล่วงหน้ามีจำหน่ายแล้วผ่านลิงก์ Google Drive นี้ โปรดดาวน์โหลดโมเดลและย้ายไปไว้ใต้ไดเร็กทอรี model_file/
หากเครื่องของคุณไม่สามารถดาวน์โหลดโมเดลจากฮับ Huggingface
model_file/ext_sqv2.pt
: โมเดลการตอบคำถามขนาดใหญ่ของ ELECTRA ที่ได้รับการฝึกอบรมล่วงหน้าบน SQuAD v2.0model_file/ques_gen_squad.pt
: โมเดลการสร้างคำถามขนาดใหญ่ BART ที่ได้รับการฝึกอบรมล่วงหน้าบน SQuAD v2.0model_file/electra-tokenize.pt
: Electra-large tokenizer จัดทำโดย Huggingfacemodel_file/bart-tokenizer.pt
: BART-โทเค็นขนาดใหญ่ที่จัดทำโดย Huggingface สร้างคู่คำถาม-คำตอบบนตัวอย่างข้อความ SQuAD ที่เรามีให้ที่ data/squad/doc_data_0.json
โดยการรันคำสั่งต่อไปนี้
python RGX _doc.py
--dataset_name squad
--data_split 0
--output_dir tmp/ RGX
--version_2_with_negative
ข้อมูลที่สร้างขึ้นจะถูกเก็บไว้ภายใต้ data_gen/squad
รวมถึง RGX _0.json
และ qa_train_corpus_0.json
เรามีตัวเลือก $DATA_SPLIT
สำหรับการสร้างข้อมูลแบบกระจาย เช่น ด้วย Slurm หากเพียงสร้างคู่ QA ด้วยกระบวนการเดียว ให้ใช้ --data_split 0
ข้อมูลทั้งหมดจะถูกเก็บไว้ที่ไดเร็กทอรี data/
และ data_gen/
data/{$DATASET_NAME}/doc_data_{$DATA_SPLIT}.json
: เอกสารที่ไม่มีป้ายกำกับของชุดข้อมูลเป้าหมายdata_gen/{$DATASET_NAME}/ RGX _{$DATA_SPLIT}.json
: ข้อมูล QA ที่สร้างขึ้นซึ่งสอดคล้องกับแต่ละเอกสารจากชุดข้อมูลที่เกี่ยวข้องdata_gen/{$DATASET_NAME}/qa_train_corpus_{$DATA_SPLIT}.json
: สร้างชุดการฝึกอบรม QA ของชุดข้อมูลที่กำหนด ตัวอย่างการฝึกอบรมเป็นไปตามรูปแบบข้อมูล SQuAD และจะมีการสับแบบสุ่ม doc_data_{$DATA_SPLIT}.json
เป็นรายการพจนานุกรมดังนี้ [
{"context": INPUT_DOC_TXT__0},
{"context": INPUT_DOC_TXT__1},
...,
{"context": INPUT_DOC_TXT__N},
]
qa_train_corpus_{$DATA_SPLIT}.json
เป็นรายการพจนานุกรมดังนี้ [
{
"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
คือรายการการแมปเอกสาร-QA [
[
$DOCUMENT_i,
$ANS2ITEM_LIST_i,
$GEN_QA_LIST_i
],
...
]
$DOCUMENT_i
มีรูปแบบเดียวกับไฟล์อินพุต $ANS2ITEM_LIST_i
คือข้อมูลเมตาของคำตอบที่ได้รับการยอมรับและคำถามที่สร้างขึ้นทั้งหมด โปรดทราบว่าคำตอบเดียวสามารถมีคำถามได้หลายข้อ และคำถามอาจถูกหรือไม่ก็ได้ ผลลัพธ์สุดท้ายของโมเดลคือ $GEN_QA_LIST_i
ซึ่งเป็นรายการพจนานุกรมของคู่ QA ที่สร้างขึ้นตามเอกสารอินพุต
[
{
"question": GEN_QUESTION_TXT_0,
"answers": {
"text": [ ANSWER_TXT ],
"answer_start": [ ANSWER_ST_CHAR ]
}
}
]
data/
และ data_gen/
bash new_dataset.sh $NEW_DATASET_NAME
ย้ายไฟล์อินพุตที่มีเอกสารเป้าหมายเป็น data/$NEW_DATASET_NAME/doc_data_0.json
รูปแบบอธิบายไว้ในส่วนก่อนหน้า
รันคำสั่งต่อไปนี้
python RGX _doc.py
--dataset_name $NEW_DATASET_NAME
--data_split 0
--output_dir tmp/ RGX
--version_2_with_negative
ไฟล์ที่สร้างขึ้นจะถูกเก็บไว้ที่ data_gen/{$NEW_DATASET_NAME}/
เราขอแนะนำสองวิธีสำหรับการปรับแต่ง QA อย่างละเอียดด้วยคู่ QA ที่สร้างขึ้น
mix_mode.py
ด้วย python mix_model.py $MIX_RATE $SQUAD_MODEL_PATH $ RGX _MODEL_PATH
ตัวอย่างเช่น,
python mix_model.py 0.5 model_ft_file/ext_sq.pt model_ft_file/ext_ RGX .pt
โมเดลเอาต์พุตจะถูกจัดเก็บเป็น model_ft_file/ext_mixed.pt
โปรดติดต่อผู้เขียนคนแรก Hongyin Luo (hyluo ที่ mit dot edu) หากมีคำถามใดๆ หากระบบของเราถูกนำไปใช้ในงานของคุณ โปรดอ้างอิงเอกสารของเรา
@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}
}