Это исходный код набора данных ACL-IJCNLP 2021: несколько выстрелов, названных набором данных о распознавании объекта . Проверьте веб-сайт Flee-nerd.
*************************************
09.09.2022: Мы добавили сценарий обучения для контролируемого обучения с помощью Bert Tagger. Запустите bash data/download.sh supervised загрузке данных, а затем запустите bash run_supervised.sh .
01/09/2021: Мы изменили результаты контролируемой настройки MALT-SNERD в 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: текущий мало-серник (SUP) на уровне предложения. Вскоре мы выпустим несколько сервис (SUP) 1.1, который является уровнем параграфа и содержит больше контекстной информации.
11/06/2021: мы изменили слово токенизацию и скоро обновим последние результаты. Мы искренне благодарим Тингтингма и Чандан Акити
Нестандартный набор данных-это крупномасштабный, мелкозернистый набор данных по распознаванию сущностей, который содержит 8 крупнозернистых типов, 66 мелкозернистых типов, 188 200 предложений, 491 711 объектов и 4601 223 токена . Построены три эталонные задачи, одна контролируется: мало-сервица (SUP), а два других-несколько выстрелов: мало-сервица (интра) и несколько-сервис (интер).
Схема мало-серых-это:
Несколько человек аннотируется вручную на основе контекста, например, в предложении « Лондон-пятый альбом британской рок-группы… », названная сущность London помечена как Art-Music .
Запустите следующий скрипт для установки оставшихся зависимостей,
pip install -r requirements.txtsupervised , два других для нескольких выстрелов inter и intra . Каждый содержит три файла train.txt , dev.txt , test.txt . Наборы данных supervised случайным образом. inter наборы данных случайным образом разделены в грубом типе, то есть каждый файл содержит все 8 грубых типов, но разные мелкозернистые типы. intra наборы данных случайным образом разделены грубым типом. Чтобы получить три контрольных набора данных из Mater-Snerd, просто запустите data/download.sh с помощью параметров supervised/inter/intra как показано ниже.
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 Как установлено в нашей статье, мы разрабатываем стратегию отбора проб и 2K Shot в нашей работе, реализация SAT util/fewshotsampler.py .
Прототипические сети с BERT реализованы в model/proto.py .
Nnshot с Bert реализован в model/nnshot.py .
Structshot реализуется путем добавления дополнительного декодера Viterbi в util/framework.py .
Обратите внимание, что энкодер BERT BERT, который мы использовали для модели StructsHot, не обучается с задачей NER
Запустить train_demo.py . Аргументы представлены ниже. Параметры по умолчанию предназначены для модели proto в наборе данных inter Mode.
-- 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 Для гиперпараметра --tau в Structshot мы используем 0.32 в 1-выстреле, 0.318 для 5-й 5-выстрел и 0.434 для настройки 10-й 5-выстрел.
Например, принять модель structshot на inter , вытягивания можно запустить следующим образом.
5-way-1 ~ 5-выстрел
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-й-5 ~ 10-выстрел
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-выстрел
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.
Если у вас есть какие -либо вопросы, не стесняйтесь обращаться