هذا هو رمز ريبو لنتائج ACL 2023 لدينا ورقة ريجن: تصنيف نص صفري من خلال توليد بيانات التدريب مع استرجاع كثيف تدريجي.
استكمال : Checkout كيفية تحسين Regen باستخدام نماذج لغة كبيرة في preprint الأخيرة مع الكود!
python 3.8
transformers==4.2.0
pytorch==1.8.0
scikit-learn
faiss-cpu==1.6.4
tqdm>=4.62.2
nltk
يمكن تنزيل المجموعة على:
يمكن العثور بسهولة على مجموعة اختبار {Ag News ، Dbpedia ، Yahoo ، IMDB} في Huggingface Data Hub. يمكن تأسيس مجموعات الاختبار لمجموعات البيانات الأخرى في مجلد test .
_id تعني معرف الفئة ، text هو محتوى المستند.
مثال (لمجموعة بيانات SST-2):
{
{"_id": 0, "text": "It seems to me the film is about the art of ripping people off without ever letting them consciously know you have done so."}
{"_id": 0, "text": "In the end , the movie collapses on its shaky foundation despite the best efforts of director joe carnahan."}
{"_id": 1, "text": "Despite its title , punch-drunk love is never heavy-handed ."}
{"_id": 1, "text": "Though only 60 minutes long , the film is packed with information and impressions."}
...
}
نحن نتكيف الكود من COCO-DR للتدرب. يرجى التحقق من التنفيذ الأصلي للحصول على التفاصيل.
تم تحديثه في 7 سبتمبر 2023 : تم إصدار النموذج المسبق على Luggingface:
راجع الكود من مجلد retrieval ، gen_embedding.sh للحصول على التفاصيل.
راجع الرمز من retrieval/retrieve.py للحصول على التفاصيل.
بعض المقاييس الرئيسية:
args.target : مجموعة البيانات المستهدفة المستخدمة في التجربة.args.model : نموذج الاسترجاع المستخدم في هذه الدراسة.args.corpus_folder/args.corpus_name : المجلد/اسم المجموعة المستخدمة (على سبيل المثال الأخبار ، wiki) في التجارب.args.topN : topn المستخدمة في البحث knn (عادة ما يتم ضبطه على 50-100).args.round : جولات الاسترجاع. ضبط على 0 للجولات الأولى (باستخدام اسم التسمية/قالب لاسترجاع فقط) و 1،2 ، ... لجولات لاحقة.ملاحظة : من حيث المبدأ ، فإن نموذجنا متوافق مع أي مستردين كثيفون (بعد التدريب بشكل صحيح). إذا كنت ترغب في استخدام نموذج الاسترجاع الكثيف الخاص بك ، فيرجى التأكد من أن نموذج الاسترجاع الكثيف يستخدم أيضًا تضمين الرمز المميز [CLS] كضمانات تسلسل. خلاف ذلك ، قد تحتاج إلى تعديل الكود في أجزاء توليد تضمين للتأكد من أن التضمين المولدة صحيح .
انظر الرمز من مجلد filter . يجب أن يكون الأمر المثال
train_cmd="CUDA_VISIBLE_DEVICES=0 python3 inference.py --task=${task}
--unlabel_file=${unlabel_file_used_for_filtering}
--data_dir=${folder_for_data}
--cache_dir="${task}/cache" --output_dir=${output_dir} --round=${round}
--load_from_prev=1
--gpu=${gpu} --eval_batch_size=${eval_batch_size}
--max_seq_len=${max_seq_len} --auto_load=0
--model_type=${model_type}"
echo $train_cmd
eval $train_cmd
هنا
folder_for_data هو مجلد البيانات التي تم استردادها.unlabel_file_used_for_filtering هو اسم ملف البيانات التي تم استردادها.task هي اسم المهمة.model_type هو PLM المستخدمة كمياهي (مثل روبرتا). انظر الرمز من مجلد classification . يجب أن يكون الأمر المثال
train_cmd="CUDA_VISIBLE_DEVICES=0 python3 main.py --do_train --do_eval --task=${task}
--train_file={PATH_FOR_GENERATED_DATASET}
--dev_file={PATH_FOR_GENERATED_VALID_DATASET
--test_file={PATH_FOR_TEST_DATASET
--unlabel_file=unlabeled.json
--data_dir=../datasets/${task}-${label_per_class} --train_seed=${train_seed}
--cache_dir="../datasets/${task}-${label_per_class}/cache"
--output_dir=${output_dir}
--logging_steps=${logging_steps}
--n_gpu=${n_gpu} --num_train_epochs=6
--learning_rate=2e-5 --weight_decay=1e-8
--batch_size=32 --eval_batch_size=128
--max_seq_len=128 --auto_load=1
--model_type=${model_type}"
echo $train_cmd
eval $train_cmd
يتم تحقيقه مع طريقة مماثلة لخطوة الاسترجاع السابقة. راجع الرمز من retrieval/retrieve.py مرة أخرى للحصول على التفاصيل. الفرق الوحيد هو أنك تحتاج إلى تعيين المتغير args.round إلى أكبر من 0 . تحتاج أيضًا إلى تعيين prev_retrieve_path_name و prev_retrieve_folder على مسار المستندات للحصول على أحدث نتائج الاسترجاع بعد التصفية .
يمكن العثور على مجموعة البيانات التي تم إنشاؤها في هذا الرابط.
يرجى الاستشهاد بورقنا إذا وجدت أن هذا الريبو مفيد لبحثك. شكرًا!
@inproceedings{yu2023zero,
title={ReGen: Zero-Shot Text Classification via Training Data Generation with Progressive Dense Retrieval},
author={Yu, Yue and Zhuang, Yuchen and Zhang, Rongzhi and Meng, Yu and Shen, Jiaming and Zhang, Chao},
booktitle={Findings of ACL},
year={2023}
}