طريقة آلية تعتمد على البحث الموجهة التدرج لإنشاء مطالبات لمجموعة متنوعة من مهام NLP. يوضح Autoprompt أن نماذج اللغة المقنعة (MLMs) لديها قدرة فطرية على إجراء تحليل المعنويات ، واستنتاج اللغة الطبيعية ، واسترجاع الحقيقة ، واستخراج العلاقة. تحقق من موقعنا على الويب للحصول على الورق ومزيد من المعلومات.
conda create -n autoprompt -y python=3.7 && conda activate autoprompt
تثبيت الحزم المطلوبة
pip install -r requirements.txt
قم أيضًا بتنزيل نموذج Spacy
python -m spacy download en
تتوفر مجموعات البيانات لتحليل المشاعر و NLI واسترجاع الحقائق واستخراج العلاقة للتنزيل هنا
هناك بعض مجموعات البيانات المختلفة لاسترجاع الحقائق واستخراج العلاقة ، لذا فيما يلي نظرة عامة موجزة لكل منهما:
original : استخدمنا مجموعة T-Rex الفرعية التي قدمتها Lama كمجموعة اختبار وجمع المزيد من الحقائق من مجموعة بيانات T-Rex الأصلية التي نقسمها في مجموعات القطار والدرابoriginal_rob : قمنا بتصفية الحقائق في original بحيث يكون كل كائن رمزًا واحدًا لكل من Bert و Robertatrex : نقوم بتقسيم بيانات T-Rex الإضافية التي تم جمعها (لمجموعات القطار/VAL من original ) إلى مجموعات القطار ، DEV ، اختبار الاختبارoriginal للتعويض عن كل من RE Baseline و Roberta. استبعدنا أيضًا العلاقات P527 و P1376 لأن خط الأساس لا يعتبرهما. يتم إنشاء مطالبة من خلال رسم خرائط لأشياء مثل الإدخال الأصلي ومواد الرموز التي يتم تشغيلها إلى قالب يشبه شيء
[CLS] {sub_label} [T] [T] [T] [P]. [SEP]
المثال أعلاه هو قالب لتوليد مطالبات استرجاع الحقائق مع 3 رموز المشغل حيث {sub_label} هو عنصر نائب للموضوع في أي (موضوع ، علاقة ، كائن) في الواقع في الواقع. يشير [P] إلى وضع رمز خاص [MASK] سيتم استخدامه "للملء في الفراغ" بواسطة نموذج اللغة. يشار إلى كل رمز الزناد في مجموعة الرموز المميزة التي يتم مشاركتها عبر جميع المطالبات بواسطة [T] .
اعتمادًا على نموذج اللغة (أي Bert أو Roberta) ، تختار إنشاء مطالبات ، ستكون الرموز الخاصة مختلفة. بالنسبة لـ Bert ، عصا [CLS] و [SEP] إلى كل طرف من القالب. لروبرتا ، استخدم <s> و </s> بدلاً من ذلك.
python -m autoprompt.create_trigger
--train glue_data/SST-2/train.tsv
--dev glue_data/SST-2/dev.tsv
--template '<s> {sentence} [T] [T] [T] [P] . </s>'
--label-map '{"0": ["Ġworse", "Ġincompetence", "ĠWorse", "Ġblamed", "Ġsucked"], "1": ["ĠCris", "Ġmarvelous", "Ġphilanthrop", "Ġvisionary", "Ġwonderful"]}'
--num-cand 100
--accumulation-steps 30
--bsz 24
--eval-size 48
--iters 180
--model-name roberta-large
python -m autoprompt.create_trigger --train SICK_TRAIN_ALL_S.tsv --dev SICK_DEV_ALL_S.tsv --template '<s> {sentence_A} [P] [T] [T] [T] [T] {sentence_B} </s>' --label-map '{"ENTAILMENT": ["u0120Taiwan", "u0120Ara", "abet"], "CONTRADICTION": ["u0120Only", "u0120Didn", "u0120BUT"], "NEUTRAL": ["icy", "oder", "agna"]}' --bsz 120 --model-name roberta-large
python -m autoprompt.create_trigger
--train $path/train.jsonl
--dev $path/dev.jsonl
--template '<s> {sub_label} [T] [T] [T] [P] . </s>'
--num-cand 10
--accumulation-steps 1
--model-name roberta-large
--bsz 56
--eval-size 56
--iters 1000
--label-field 'obj_label'
--tokenize-labels
--filter
--print-lama
python -m autoprompt.create_trigger
--train $path/train.jsonl
--dev $path/dev.jsonl
--template '[CLS] {context} [SEP] {sub_label} [T] [T] [T] [P] . [SEP]'
--num-cand 10
--accumulation-steps 1
--model-name bert-base-cased
--bsz 32
--eval-size 32
--iters 500
--label-field 'obj_label'
--tokenize-labels
--filter
--print-lama
--use-ctx
لتحليل المشاعر
python -m autoprompt.label_search --train ../data/SST-2/train.tsv --template '[CLS] {sentence} [T] [T] [T] [P]. [SEP]' --label-map '{"0": 0, "1": 1}' --iters 50 --model-name 'bert-base-cased'
ل NLI
python -m autoprompt.label_search --train ../data/SICK-E-balanced/3-balance/SICK_TRAIN_ALL_S.tsv --template '<s> {sentence_A} [P] [T] [T] [T] [T] {sentence_B} </s>' --label-map '{"ENTAILMENT": 0, "CONTRADICTION": 1, "NEUTRAL": 2}' --iters 50 --model-name roberta-large
استنساخ شوكة لدينا من لاما ريبو واتبع الإرشادات لإعدادها خارج ريبو Autoprompt. لقد أوصينا بإنشاء بيئة كوندا منفصلة لما لما بسبب التبعيات والمتطلبات المختلفة.
انسخ مجلد بيانات AutoPrompt في دليل data LAMA أو تعيين data_path_pre في scripts/run_experiments.py إلى موقع بيانات مخصص.
من أجل جعل لاما يعمل مع روبرتا ، قم بتشغيل الأوامر التالية:
mkdir pre-trained_language_models/roberta
cd pre-trained_language_models/roberta
curl -O https://dl.fbaipublicfiles.com/fairseq/models/roberta.large.tar.gz
tar -xvzf roberta.large.tar.gz
قم بتحديث ملف data/relations.jsonl .
لتغيير إعدادات التقييم ، انتقل إلى scripts/run_experiments.py وقم بتحديث القيم القابلة للتكوين وفقًا لذلك. ملاحظة: يتم وضع علامة على كل إعدادات من الإعدادات القابلة للتكوين بتعليق [CONFIGURABLE] .
LMs في الجزء العلوي من الملفcommon_vocab_filename إلى الملف المناسب. أي شيء تقييم كل من Bert و Roberta يتطلب أن يكون هذا الحقل common_vocab_cased_rob.txt بدلاً من common_vocab_cased.txt المعتاد.use_ctx إلى True إذا كان تشغيل التقييم لاستخراج العلاقةsynthetic إلى True لتقييم الجملة المضطربة لاستخراج العلاقةget_TREx_parameters ، قم بتعيين data_path_pre على مسار البيانات المقابل (على سبيل المثال "../data/relation_extraction" لاستخراج العلاقة)قم بتشغيل رمز التقييم
python scripts/run_experiments.py
اضبط PYTHONPATH في حالة حدوث الخطأ التالي: ModuleNotFoundError: No module named 'lama'
export PYTHONPATH="${PYTHONPATH}:/path/to/the/AutoPrompt/repo"
@inproceedings{autoprompt:emnlp20,
author = {Taylor Shin and Yasaman Razeghi and Robert L. Logan IV and Eric Wallace and Sameer Singh},
title = { {AutoPrompt}: Eliciting Knowledge from Language Models with Automatically Generated Prompts },
booktitle = {Empirical Methods in Natural Language Processing (EMNLP)},
year = {2020}
}