独家 | 轻松上手,通过微调Transformers完成命名实体识别任务
作者:Lars Kjeldgaard 翻译:王闯(Chuck)
校对:和中华
本文约2500字,建议阅读7分钟 本文基于丹麦团队研发的Python开源包NERDA演示了如何通过简单微调BERT Transformer来处理NER任务。
照片源自Pixabay,作者vinsky2002
命名实体识别简介
工具箱
“NERDA” Python包的官方徽标,由Ekstra Bladet新闻提供
pip install NERDA
from NERDA.datasets import get_conll_data, download_conll_data download_conll_data()
training = get_conll_data('train')
validation = get_conll_data('valid')
Germany [B-LOC]
's [O]
representative [O]
to [O]
the [O]European [B-ORG]
Union [I-ORG]
's [O]
veterinary [O]
committee [O
]Werner [B-PER]
Zwingmann [I-PER]
said [O]
on [O]
Wednesday [O]
...
建模
tag_scheme = [
'B-PER',
'I-PER',
'B-ORG',
'I-ORG',
'B-LOC',
'I-LOC',
'B-MISC',
'I-MISC'
]
transformer = 'bert-base-multilingual-uncased'
# hyperparameters for network
dropout = 0.1
# hyperparameters for trainingtraining
hyperparameters = {
'epochs' : 4,
'warmup_steps' : 500,
'train_batch_size': 13,
'learning_rate': 0.0001
}
整合
from NERDA.models import NERDA
model = NERDA(
dataset_training = training,
dataset_validation = validation,
tag_scheme = tag_scheme,
tag_outside = 'O',
transformer = transformer,
dropout = dropout,
hyperparameters = training_hyperparameters
)
model.train()
>>> test = get_conll_data('test')
>>> model.evaluate_performance(test)
级别F1-分数
B-PER 0.963
I-PER 0.987
B-ORG 0.887
I-ORG 0.866
B-LOC 0.922
I-LOC 0.817
B- MISC 0.823
I-MISC 0.680
AVG_MICRO 0.907
>>> model.predict_text('Cristiano Ronaldo plays for Juventus FC')
([['Cristian', 'Ronaldo', 'plays', 'for', 'Juventus', 'FC']],
[['B-PER', 'I-PER', 'O', 'O', 'B-ORG', 'I-ORG']])
微调任意Transformer
model = NERDA(
...,
transformer = 'google/electra-small-discriminator',
...
)
微调任意语言
from NERDA.datasets import get_dane_data
model = NERDA(
...,
dataset_training = get_dane_data('train')
,dataset_validation = get_dane_data('dev'),
...
)
关于NERDA
原文标题:
Easy Fine-Tuning of Transformers for Named-Entity Recognition
原文链接:
https://towardsdatascience.com/easy-fine-tuning-of-transformers-for-named-entity-recognition-d72f2b5340e3
https://github.com/ebanalyse/NERDA
https://huggingface.co/
https://pytorch.org/
https://github.com/google-research/bert
“DaNE: A Named Entity Ressource for Danish”, Hvingelby et. al (2020):http://www.lrec-conf.org/proceedings/lrec2020/pdf/2020.lrec-1.565.pdf
https://github.com/google-research/electra
https://towardsdatascience.com/what-are-transformers-and-how-can-you-use-them-f7ccd546071a
https://towardsdatascience.com/bert-explained-state-of-the-art-language-model-for-nlp-f8b21a9b6270
https://towardsdatascience.com/understanding-electra-and-training-an-electra-language-model-3d33e3a9660d
译者简介
王闯(Chuck),台湾清华大学资讯工程硕士。曾任奥浦诺管理咨询公司数据分析主管,现任尼尔森市场研究公司数据科学经理。很荣幸有机会通过数据派THU微信公众平台和各位老师、同学以及同行前辈们交流学习。
翻译组招募信息
工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。
你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。
其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。
点击文末“阅读原文”加入数据派团队~
转载须知
如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。
发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。
点击“阅读原文”拥抱组织