هذا هو الكود المصدري لمجموعة بيانات التعرف على الكيانات القليلة المسمى ACL-IJCNLP 2021: عدد قليل من اللقطات . تحقق من موقع عدد قليل من nerd.
*********************************
09/03/2022: لقد أضفنا البرنامج النصي التدريبي للتدريب الخاضع للإشراف باستخدام Bert Tagger. قم بتشغيل bash data/download.sh supervised لتنزيل البيانات ، ثم تشغيل bash run_supervised.sh .
01/09/2021: قمنا بتعديل نتائج الإعداد الخاضع للإشراف على عدد قليل من الأنيق في Arxiv ، شكرًا على مساعدة Pedromlf.
19/08/2021: مهم؟ في مرافقة بيانات الحلقة التي تم إصدارها ، قمنا بتحديث البرنامج النصي التدريبي. ما عليك سوى إضافة --use_sampled_data عند تشغيل train_demo.py للتدريب والاختبار على بيانات الحلقة التي تم إصدارها.
02/06/2021: لتبسيط التدريب ، أصدرنا البيانات التي تم أخذ عينات منها حسب الحلقة. انقر هنا للتنزيل. تتم تسمية الملفات مثل: {train/dev/test}_{N}_{K}.jsonl . قمنا بأخذ عينات من 20000 ، 1000 ، 5000 حلقة للقطار ، ديف ، اختبار ، على التوالي.
26/05/2021: إن عدد قليل من nerd (SUP) هو مستوى الجملة. سنقوم قريبًا بإصدار عدد قليل من NERD (SUP) 1.1 ، وهو مستوى الفقرة ويحتوي على المزيد من المعلومات السياقية.
11/06/2021: قمنا بتعديل كلمة الرمز المميز وسنقوم قريبًا بتحديث أحدث النتائج. نشكر بصدق تينغنغما وتشاندان أكيتي
عدد قليل من NERD عبارة عن مجموعة بيانات على نطاق واسع من الحبيبات المذكورة يدويًا يدويًا ، والتي تحتوي على 8 أنواع من الحبيبات الخشنة ، و 66 نوعًا من الحبيبات الدقيقة ، و 188،200 جملة ، و 491،711 كيانًا و 4،601،223 راحة . تم بناء ثلاث مهام مرجعية ، واحدة تحت إشراف: قليلة (SUP) والآخران قليلة: عدد قليل من nerd (intra) وعدد قليل (inter).
مخطط عدد قليل من nerd هو:
تم شرح عدد قليل من NERD يدويًا استنادًا إلى السياق ، على سبيل المثال ، في الجملة " لندن هي الألبوم الخامس لفرقة موسيقى الروك البريطانية ... " ، تم تصنيف الكيان المسماة London على أنه Art-Music .
قم بتشغيل البرنامج النصي التالي لتثبيت التبعيات المتبقية ،
pip install -r requirements.txtsupervised للإشراف ، والآخران لإعداد عدد قليل من الطلقة inter و intra . كل منها يحتوي على ثلاثة ملفات train.txt ، dev.txt ، test.txt . يتم تقسيم مجموعات البيانات supervised عشوائيا. يتم تقسيم inter البيانات بشكل عشوائي داخل النوع الخشن ، أي يحتوي كل ملف على جميع أنواع 8 أنواع خشنة ولكن أنواع الحبيبات الدقيقة المختلفة. يتم تقسيم مجموعات البيانات intra بشكل عشوائي حسب النوع الخشن. للحصول supervised/inter/intra ثلاث مجموعات بيانات قليلة من قليلة ، ما عليك سوى تشغيل data/download.sh
bash data/download.sh supervisedللحصول على أخذ عينات من البيانات حسب الحلقة ، قم بتشغيل
bash data/download.sh episode-data
unzip -d data/ data/episode-data.zip يتم تجهيز البيانات مسبقًا في نماذج بيانات NER النموذجية على النحو التالي ( tokentlabel ).
Between O
1789 O
and O
1793 O
he O
sat O
on O
a O
committee O
reviewing O
the O
administrative MISC-law
constitution MISC-law
of MISC-law
Galicia MISC-law
to O
little O
effect O
. Oهيكل مشروعنا هو:
--util
| -- framework.py
| -- data_loader.py
| -- viterbi.py # viterbi decoder for structshot only
| -- word_encoder
| -- fewshotsampler.py
-- proto.py # prototypical model
-- nnshot.py # nnshot model
-- train_demo.py # main training script كما هو موضح في ورقتنا ، نقوم بتصميم استراتيجية أخذ عينات N ~ 2K في عملنا ، فإن التنفيذ هو SAT util/fewshotsampler.py .
يتم تنفيذ الشبكات النموذجية مع BERT في model/proto.py .
يتم تنفيذ nnshot مع Bert في model/nnshot.py .
يتم تحقيق structshot عن طريق إضافة وحدة فك ترميز Viterbi إضافية في util/framework.py .
لاحظ أن ترميز Bert Bert Bert الذي استخدمناه في نموذج الهيكل ليس مدربًا مسبقًا بمهمة NER
تشغيل train_demo.py . وترد الحجج أدناه. المعلمات الافتراضية هي لنموذج proto على مجموعة بيانات الوضع inter .
-- mode training mode, must be inter, intra, or supervised
-- trainN N in train
-- N N in val and test
-- K K shot
-- Q Num of query per class
-- batch_size batch size
-- train_iter num of iters in training
-- val_iter num of iters in validation
-- test_iter num of iters in testing
-- val_step val after training how many iters
-- model model name, must be proto, nnshot or structshot
-- max_length max length of tokenized sentence
-- lr learning rate
-- weight_decay weight decay
-- grad_iter accumulate gradient every x iterations
-- load_ckpt path to load model
-- save_ckpt path to save model
-- fp16 use nvidia apex fp16
-- only_test no training process, only test
-- ckpt_name checkpoint name
-- seed random seed
-- pretrain_ckpt bert pre-trained checkpoint
-- dot use dot instead of L2 distance in distance calculation
-- use_sgd_for_bert use SGD instead of AdamW for BERT.
# only for structshot
-- tau StructShot parameter to re-normalizes the transition probabilities بالنسبة إلى Hyperparameter --tau في Structshot ، نستخدم 0.32 في إعداد 1 طلقة ، 0.318 لإعداد 5-Wway-5-Shot ، و 0.434 لإعداد 10 اتجاه-5 طلقة.
خذ نموذج structshot على inter البيانات على سبيل المثال ، يمكن تشغيل التمثيل على النحو التالي.
5-Way-1 ~ 5-Shot
python3 train_demo.py --mode inter
--lr 1e-4 --batch_size 8 --trainN 5 --N 5 --K 1 --Q 1
--train_iter 10000 --val_iter 500 --test_iter 5000 --val_step 1000
--max_length 64 --model structshot --tau 0.325-way-5 ~ 10-shot
python3 train_demo.py --mode inter
--lr 1e-4 --batch_size 1 --trainN 5 --N 5 --K 5 --Q 5
--train_iter 10000 --val_iter 500 --test_iter 5000 --val_step 1000
--max_length 32 --model structshot --tau 0.31810-way-1 ~ 5-shot
python3 train_demo.py --mode inter
--lr 1e-4 --batch_size 4 --trainN 10 --N 10 --K 1 --Q 1
--train_iter 10000 --val_iter 500 --test_iter 5000 --val_step 1000
--max_length 64 --model structshot --tau 0.3210-Way-5 ~ 10 طلقة
python3 train_demo.py --mode inter
--lr 1e-4 --batch_size 1 --trainN 10 --N 10 --K 5 --Q 1
--train_iter 10000 --val_iter 500 --test_iter 5000 --val_step 1000
--max_length 32 --model structshot --tau 0.434إذا كنت تستخدم قليلة في عملك ، فيرجى الاستشهاد بالورقة:
@inproceedings { ding-etal-2021-nerd ,
title = " Few-{NERD}: A Few-shot Named Entity Recognition Dataset " ,
author = " Ding, Ning and
Xu, Guangwei and
Chen, Yulin and
Wang, Xiaobin and
Han, Xu and
Xie, Pengjun and
Zheng, Haitao and
Liu, Zhiyuan " ,
booktitle = " Proceedings of the 59th Annual Meeting of the Association for Computational Linguistics and the 11th International Joint Conference on Natural Language Processing (Volume 1: Long Papers) " ,
month = aug,
year = " 2021 " ,
address = " Online " ,
publisher = " Association for Computational Linguistics " ,
url = " https://aclanthology.org/2021.acl-long.248 " ,
doi = " 10.18653/v1/2021.acl-long.248 " ,
pages = " 3198--3213 " ,
}يتم توزيع مجموعة بيانات قليلة على ترخيص CC BY-SA 4.0. يتم توزيع الكود تحت ترخيص Apache 2.0.
إذا كان لديك أي أسئلة ، فلا تتردد في الاتصال