作者:Lars Kjeldgaard
翻译:王闯(Chuck)校对:和中华
本文约2500字,建议阅读7分钟本文基于丹麦团队研发的Python开源包NERDA演示了如何通过简单微调BERT Transformer来处理NER任务。
照片源自Pixabay,作者vinsky2002
在本文中,我们将介绍如何通过简单微调(fine-tune)任意预训练的(pretrained)自然语言处理transformer,来完成任意语言中的命名实体识别(Named-Entity Recognition, NER)任务。
为什么这个话题值得你关注?因为NER是一项强大的自然语言处理任务,在诸多领域都有实际应用,在Towards Data Science之前的帖子中已有详细介绍。然而要想得到不错的NER模型效果,通常需要基于预训练的transformer对NER模型进行特定语言或领域的微调,这在计算资源有限的情况下,是比较可行的办法,而且能看到实际效果。
为了展示如何做到,我们使用python的NERDA包调用BERT transformer对NER模型进行微调。
NERDA是一套通用的NER系统,可用于以最少的代码量对任意语言的NER任务和任意transformer进行微调。
命名实体识别简介
如果你还不熟悉NER,请查看维基百科上的定义:
命名实体识别(也称(命名)实体标识,实体片取或实体提取)是用于信息提取的自然语言处理子任务,旨在将非结构化文本中提到的命名实体定位并分到预定义的类别,例如人名,组织机构名,地名,医疗代码,时间,数量,货币值,百分比等。
我们可以通过一个NER任务的例子来作进一步解释。
任务:在文本中标识人名和组织机构名:
Jim bought 300 shares of Acme Corp.
解答:人名:'Jim',组织机构名:'Acme Corp.'
若你想获得本文中提到的其他概念和技术的介绍,请移步文末“参考资料”部分,那里我们列了许多Towards Data Science先前的帖子。
工具箱
现在,我们要实际上手为NER微调transformer了。
无论你选择哪一种transformer和目标语言,我们这里介绍的步骤都是通用的。
我们将利用python的NERDA包来完成这项工作。
“NERDA” Python包的官方徽标,由Ekstra Bladet新闻提供
NERDA拥有为NER任务进行transformers微调的易用接口。