這是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許可證分配的。
如果您有任何疑問,請隨時聯繫