يحتوي هذا المستودع على التنفيذ الرسمي لخوارزمية UPR (إعادة التصنيف غير الخاضعة للإشراف) التي تم تقديمها في الورقة "تحسين استرجاع المرور مع توليد أسئلة صفرية".


لاستخدام هذا الريبو ، هناك حاجة إلى تثبيت قياسي ل Pytorch. نحن نقدم التبعيات في ملف المتطلبات.
نوصي باستخدام واحدة من حاويات Pytorch الأكثر حداثة في NGC. يمكن سحب صورة Docker باستخدام Command docker pull nvcr.io/nvidia/pytorch:22.01-py3 . لاستخدام صورة Docker هذه ، يلزم أيضًا تثبيت مجموعة أدوات حاوية NVIDIA.
عبر حاوية Docker ، يرجى تثبيت transformers المكتبات و sentencepiece باستخدام تثبيت PIP.
نحن نتبع اتفاقية DPR وقطاع مقالات ويكيبيديا في مقاطع طويلة 100 كلمة. يمكن تنزيل ملف الأدلة المقدم من DPR مع الأمر
python utils / download_data . py - - resource data . wikipedia - split . psgs_w100يحتوي ملف الأدلة هذا على حقول مفصولة في TAB لمعرف المرور ونص المرور وعنوان المقطع.
id text title
1 " Aaron Aaron ( or ; " " Ahärôn " " ) is a prophet, high priest, and the brother of Moses in the Abrahamic religions. Knowledge of Aaron, along with his brother Moses, comes exclusiv
ely from religious texts, such as the Bible and Quran. The Hebrew Bible relates that, unlike Moses, who grew up in the Egyptian royal court, Aaron and his elder sister Miriam remained
with their kinsmen in the eastern border-land of Egypt (Goshen). When Moses first confronted the Egyptian king about the Israelites, Aaron served as his brother's spokesman ( " " prophet "
" ) to the Pharaoh. Part of the Law (Torah) that Moses received from " Aaron
2 " God at Sinai granted Aaron the priesthood for himself and his male descendants, and he became the first High Priest of the Israelites. Aaron died before the Israelites crossed
the North Jordan river and he was buried on Mount Hor (Numbers 33:39; Deuteronomy 10:6 says he died and was buried at Moserah). Aaron is also mentioned in the New Testament of the Bib
le. According to the Book of Exodus, Aaron first functioned as Moses' assistant. Because Moses complained that he could not speak well, God appointed Aaron as Moses' " " prophet " " (Exodu
s 4:10-17; 7:1). At the command of Moses, he let " Aaron
... ... ... تنسيق بيانات الإدخال هو JSON. يحتوي كل قاموس في ملف JSON على سؤال واحد ، وقائمة تحتوي على بيانات للممرات التي تم استردادها من أفضل K ، وقائمة (اختيارية) من الإجابات الممكنة. لكل مقطع من أفضل K ، نقوم بتضمين معرف (Evidence) و HAS_ANSWER و (الاختياري) لسمات RETRIEVER. سمة id هي معرف مرور من ملف أدلة ويكيبيديا ، يشير has_answer إلى ما إذا كان نص المقطع يحتوي على نطاق الإجابة أم لا. فيما يلي قالب ملف .json
[
{
"question" : " .... " ,
"answers" : [ " ... " , " ... " , " ... " ],
"ctxs" : [
{
"id" : " .... " ,
"score" : " ... " ,
"has_answer" : " .... " ,
},
...
]
},
...
]مثال عندما يتم استرداد الممرات باستخدام BM25 عند الاستعلامات باستخدام أسئلة Natural Dev Set.
[
{
"question" : " who sings does he love me with reba " ,
"answers" : [ " Linda Davis " ],
"ctxs" : [
{
"id" : 11828871 ,
"score" : 18.3 ,
"has_answer" : false
},
{
"id" : 11828872 ,
"score" : 14.7 ,
"has_answer" : false ,
},
{
"id" : 11828866 ,
"score" : 14.4 ,
"has_answer" : true ,
},
...
]
},
...
]نحن نقدم الممرات المرتفعة من أفضل 1000 لانقسامات DEV/TEST للتفتح الطبيعي (NQ) ، TRIVIAQA ، فتحة فرقة ، Webquesions (WEBQ) ، ومجموعات بيانات الكيانات (EQ) التي تغطي 5 استردادات: BM25 ، MSS ، Controvyver ، DPR ، و MSS. يرجى استخدام الأمر التالي لتنزيل مجموعات البيانات هذه
python utils / download_data . py
- - resource { key from download_data . py 's RESOURCES_MAP}
[ optional - - output_dir { your location }] على سبيل المثال ، لتنزيل جميع بيانات أفضل K ، استخدم --resource data . لتنزيل أفضل بيانات Retriever الخاصة بـ Retriever ، على سبيل المثال BM25 ، استخدم- --resource data.retriever-outputs.bm25 .
لإعادة تشغيل الممرات التي تم استردادها باستخدام UPR ، يرجى استخدام الأمر التالي حيث يجب الإشارة إلى مسارات ملف الأدلة وملف المقطع الذي تم استرداده من أعلى K.
DISTRIBUTED_ARGS= " -m torch.distributed.launch --nproc_per_node 8 --nnodes 1 --node_rank 0 --master_addr localhost --master_port 6000 "
python ${DISTRIBUTED_ARGS} upr.py
--num-workers 2
--log-interval 1
--topk-passages 1000
--hf-model-name " bigscience/T0_3B "
--use-gpu
--use-bf16
--report-topk-accuracies 1 5 20 100
--evidence-data-path " wikipedia-split/psgs_w100.tsv "
--retriever-topk-passages-path " bm25/nq-dev.json " -يوفر خيار --use-bf16 زيادة السرعة وتوفير الذاكرة على وحدات معالجة الرسومات AMPERE مثل A100 أو A6000. ومع ذلك ، عند العمل مع وحدات معالجة الرسومات V100 ، يجب إزالة هذه الحجة.
لقد قدمنا نصًا مثالًا "upr-demo.sh" تحت "أمثلة" الدليل. لاستخدام هذا البرنامج النصي ، يرجى تعديل مسارات ملفات الإدخال والإدخال / الإخراج وفقًا لذلك.
نحن نقدم درجات التقييم على مجموعات الاختبار لمجموعات البيانات عند استخدام نموذج لغة T0-3B في UPR.
| Retriever (+إعادة رتبة) | فرقة مفتوحة | Triviaqa | الأسئلة الطبيعية | أسئلة الويب | أسئلة الكيان |
|---|---|---|---|---|---|
| MSS | 51.3 | 67.2 | 60.0 | 49.2 | 51.2 |
| MSS + UPR | 75.7 | 81.3 | 77.3 | 71.8 | 71.3 |
| BM25 | 71.1 | 76.4 | 62.9 | 62.4 | 71.2 |
| BM25 + UPR | 83.6 | 83.0 | 78.6 | 72.9 | 79.3 |
| متحرك | 63.4 | 73.9 | 67.9 | 65.7 | 63.0 |
| contreever + upr | 81.3 | 82.8 | 80.4 | 75.7 | 76.0 |
| Retriever (+إعادة رتبة) | فرقة مفتوحة | Triviaqa | الأسئلة الطبيعية | أسئلة الويب | أسئلة الكيان |
|---|---|---|---|---|---|
| كوريا الديمقراطية | 59.4 | 79.8 | 79.2 | 74.6 | 51.1 |
| DPR + UPR | 80.7 | 84.3 | 83.4 | 76.5 | 65.4 |
| MSS-DPR | 73.1 | 81.9 | 81.4 | 76.9 | 60.6 |
| MSS-DPR + UPR | 85.2 | 84.8 | 83.9 | 77.2 | 73.9 |
نقوم بإعادة تصنيف اتحاد الممرات الأولى التي تم استرجاعها من كل من مجموعة تطوير الأسئلة الطبيعية لـ BM25 و MSS. يمكن تنزيل ملف البيانات هذا على النحو التالي:
python utils/download_data.py --resource data.retriever-outputs.mss-bm25-union.nq-dev بالنسبة لتجارب الاجتثاث هذه ، نمرر الوسيطة- --topk-passages 2000 حيث يحتوي هذا الملف على اتحاد مجموعتين من الممرات الأولى.
| نموذج اللغة | المسترد | أعلى 1 | أعلى 5 | أعلى 20 | أعلى 100 |
|---|---|---|---|---|---|
| - | BM25 | 22.3 | 43.8 | 62.3 | 76.0 |
| - | MSS | 17.7 | 38.6 | 57.4 | 72.4 |
| T5 (3B) | BM25 + MSS | 22.0 | 50.5 | 71.4 | 84.0 |
| GPT-NEO (2.7B) | BM25 + MSS | 27.2 | 55.0 | 73.9 | 84.2 |
| GPT-J (6 ب) | BM25 + MSS | 29.8 | 59.5 | 76.8 | 85.6 |
| T5-LM-ADAPT (250M) | BM25 + MSS | 23.9 | 51.4 | 70.7 | 83.1 |
| T5-LM-Adapt (800 متر) | BM25 + MSS | 29.1 | 57.5 | 75.1 | 84.8 |
| T5-LM-Adapt (3B) | BM25 + MSS | 29.7 | 59.9 | 76.9 | 85.6 |
| T5-LM-Adapt (11 ب) | BM25 + MSS | 32.1 | 62.3 | 78.5 | 85.8 |
| T0-3b | BM25 + MSS | 36.7 | 64.9 | 79.1 | 86.1 |
| T0-11B | BM25 + MSS | 37.4 | 64.9 | 79.1 | 86.0 |
يمكن تشغيل نماذج GPT في UPR باستخدام البرنامج النصي gpt/upr_gpt.py . يحتوي هذا البرنامج النصي على خيارات مماثلة لتخطيط نص upr.py ، لكننا نحتاج إلى تمرير --use-fp16 كوسيطة بدلاً من --use-bf16 . يمكن أن تكون حجة-- --hf-model-name إما EleutherAI/gpt-neo-2.7B أو EleutherAI/gpt-j-6B .
يرجى الاطلاع على الدليل المجال المفتوح لـ QA للحصول على التفاصيل للقيام بالتدريب والاستدلال مع نقاط التفتيش التي تم تدريبها مسبقًا.
لأي أخطاء أو أخطاء في قاعدة الشفرة ، يرجى إما فتح مشكلة جديدة أو إرسال بريد إلكتروني إلى Devendra Singh Sachan ([email protected]).
إذا وجدت هذا الرمز أو البيانات مفيدة ، فيرجى التفكير في ذكر ورقتنا على النحو التالي:
@article{sachan2022improving,
title = " Improving Passage Retrieval with Zero-Shot Question Generation " ,
author = " Sachan, Devendra Singh and Lewis, Mike and Joshi, Mandar and Aghajanyan, Armen and Yih, Wen-tau and Pineau, Joelle and Zettlemoyer, Luke " ,
booktitle = " Proceedings of the 2022 Conference on Empirical Methods in Natural Language Processing " ,
publisher = " Association for Computational Linguistics " ,
url = " https://arxiv.org/abs/2204.07496 " ,
year = " 2022 "
}