这是ACL-IJCNLP 2021论文的源代码:很少:一个名为“实体识别数据集”的少数元素。查看几个网站。
***********************************************************************************************************************
09/03/2022:我们添加了使用Bert Tagger进行监督培训的培训脚本。运行bash data/download.sh supervised bash run_supervised.sh
01/09/2021:我们已经修改了Arxiv中少数MEND的监督设置的结果,感谢PEDROMLF的帮助。
19/08/2021:重要吗?在发布的剧集数据附带,我们更新了培训脚本。只需在运行train_demo.py时添加--use_sampled_data来训练和测试发布的情节数据。
02/06/2021:为了简化培训,我们发布了按情节采样的数据。单击此处下载。文件被命名为: {train/dev/test}_{N}_{K}.jsonl 。我们分别对火车,开发,测试进行了20000、1000、5000集的采样。
26/05/2021:当前的少数几个(SUP)是句子级别。我们很快将发布几个段落级别的少数网站(SUP)1.1,其中包含更多上下文信息。
11/06/2021:我们已经修改了令牌化一词,我们很快将更新最新结果。我们衷心感谢Tingtingma和Chandan Akiti
很少有一个大型的,精细的手动注释命名实体识别数据集,其中包含8种粗粒类型,66种细粒类型,188,200个句子,491,711个实体和4,601,223个令牌。构建了三个基准任务,一个是监督的:很少的nerd(sup),另外两个是很少的:很少的nerd(intra)和很少的nerd(inter)。
少数几个模式是:
例如,基于上下文手动注释很少的nerd,例如,在“伦敦是英国摇滚乐队的第五张专辑…… ”句子中,名为London命名实体被标记为Art-Music 。
运行以下脚本以安装其余依赖项,
pip install -r requirements.txtsupervised ,另外两个用于少量设置inter和intra 。每个包含三个文件train.txt , dev.txt , test.txt 。 supervised数据集随机拆分。 inter数据集在粗糙类型中随机拆分,即每个文件都包含所有8种粗型类型,但具有不同的细粒类型。 intra数据集通过粗略类型随机分配。要获取几个基准的三个基准数据集,只需在下面运行带有参数supervised/inter/intra bash文件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方式K〜2K射击采样策略,实施是sat util/fewshotsampler.py 。
具有BERT的原型网络在model/proto.py中实现。
BERT带有BERT的NNSHOT在model/nnshot.py中实现。
通过在util/framework.py中添加额外的viterbi解码器来实现structshot。
请注意,我们用于structshot模型的骨干bert编码器未通过NER任务预先训练
运行train_demo.py 。论点如下所示。默认参数用于inter模式数据集上的proto模型。
-- 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 in Structshot,我们使用0.32在1-shot设置中使用0.318 ,用于5-Way-5-shot设置,为10-way-5-5-shot设置使用0.434 。
以inter数据集上的structshot模型为例,可以按以下方式运行删除。
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-Way-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路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许可证,很少有NERD数据集分发。该代码是根据Apache 2.0许可证分配的。
如果您有任何疑问,请随时联系