يحتوي هذا الريبو على البرنامج الذي تم تطويره للورقة،
التدريب الذاتي التعاوني لفهم القراءة الآلية، Luo H.، Li S.-W.، Gao M.، Yu S.، Glass J.، NAACL 2022.
جرب العرض التوضيحي المباشر الذي يحتوي على فقرات متوسطة الطول (ستتوفر نسخة وثيقة طويلة قريبًا).
نقوم بتشغيل هذا البرنامج باستخدام الحزم التالية،
النماذج المدربة مسبقًا متاحة عبر Google Drive Link. يرجى تنزيل النماذج ونقلها ضمن الدليل model_file/
إذا لم يتمكن جهازك من تنزيل النماذج من مركز Huggingface.
model_file/ext_sqv2.pt
: نموذج الإجابة على الأسئلة الكبيرة من ELECTRA المُدرب مسبقًا على SQuAD v2.0.model_file/ques_gen_squad.pt
: نموذج توليد الأسئلة الكبيرة BART المُدرب مسبقًا على SQuAD v2.0.model_file/electra-tokenize.pt
: رمز مميز كبير جدًا مقدم من Huggingface.model_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. في حالة إنشاء أزواج ضمان الجودة من خلال عملية واحدة فقط، استخدم ببساطة --data_split 0
.
يتم تخزين كافة البيانات في الدلائل data/
و data_gen/
.
data/{$DATASET_NAME}/doc_data_{$DATA_SPLIT}.json
: مستندات غير مسماة لمجموعة البيانات المستهدفة.data_gen/{$DATASET_NAME}/ RGX _{$DATA_SPLIT}.json
: تم إنشاء بيانات ضمان الجودة المتوافقة مع كل مستند من مجموعة البيانات المقابلة.data_gen/{$DATASET_NAME}/qa_train_corpus_{$DATA_SPLIT}.json
: تم إنشاء مجموعة تدريب ضمان الجودة لمجموعة البيانات المحددة. تتبع أمثلة التدريب تنسيق بيانات 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
هو قائمة تعيينات وثيقة ضمان الجودة، [
[
$DOCUMENT_i,
$ANS2ITEM_LIST_i,
$GEN_QA_LIST_i
],
...
]
$DOCUMENT_i
له نفس تنسيق ملف الإدخال. $ANS2ITEM_LIST_i
هو البيانات الوصفية لجميع الإجابات المعروفة والأسئلة التي تم إنشاؤها. لاحظ أن الإجابة الواحدة يمكن أن تحتوي على أسئلة متعددة، ويمكن أن تكون الأسئلة صحيحة أو لا. الناتج النهائي للنموذج هو $GEN_QA_LIST_i
، وهو عبارة عن قائمة قواميس لأزواج ضمان الجودة التي تم إنشاؤها بناءً على مستند الإدخال،
[
{
"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}/
.
نقترح طريقتين لضبط ضمان الجودة باستخدام أزواج ضمان الجودة التي تم إنشاؤها.
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 at 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}
}