关于人工智能:一文详解BERT模型实现NER命名实体抽取

1次阅读

共计 5692 个字符,预计需要花费 15 分钟才能阅读完成。

在自然语言解决和常识图谱中,实体抽取、NER 是一个根本工作,也是产业化利用 NLP 和常识图谱的关键技术之一。BERT 是一个大规模预训练模型,它通过精心设计的掩码语言模型(Masked Language Model,MLM)来模仿人类对语言的认知,并对数十亿个词所组成的语料进行预训练而造成弱小的根底语义,造成了成果卓绝的模型。通过 BERT 来进行实体抽取、NER 的办法是以后在 NLP 和常识图谱的产业化利用中最罕用的办法,是成果与老本衡量下的最佳抉择。本文具体解说应用 BERT 来进行实体抽取,看完本文就会用以后工业界最佳的模型了。

什么是实体抽取?

实体是一个常见的名词,《常识图谱:认知智能实践与实战》一书将其定义为:实体(Entity):是指一种独立的、领有清晰特色的、可能区别于其余事物的事物。在信息抽取、自然语言解决和常识图谱等畛域,用来形容这些事物的信息即实体。实体能够是形象的或者具体的。

在实体抽取中,实体也成为命名实体(Named Entity),是指在实体之上会将其分门别类,用实体类型来框定不同的实体。图 1 是一些常见的“实体”的例子,比方“城市”类型的实体“上海”,“公司”类型的实体“达观数据”等。

图 1 实体示例

实体抽取(Entity Extraction,EE)的指标就是辨认一段文本中所蕴含的实体,在其余语境中,也被称之为“实体辨认(Entity Recognition,ER)”、“命名实体辨认(Named Entity Recognition,NER)”,这些不同的名词在大多数状况下所指代的意思是一样的。

举例来说,有一段文本:达观数据 同济大学 联结共建的“常识图谱与语义计算联结实验室”正式揭牌成立

辨认出其中的加粗局部,并标记为“机构”类型的实体,就是实体抽取。实体抽取的过程通常能够分为是两个阶段:
1. 辨认出所有示意实体的词汇
2. 将这些词汇分类到不同实体类型中

在传统的命名实体辨认工作中,通常有人物、机构、地点等。而在常识图谱中,实体类型能够有数十种,甚至数百种。对于常识图谱来说,将各种文本中的实体抽取进去是最根本的工作,有许多办法都致力于解决这个问题。

图 2 实体抽取案例

家喻户晓,实体抽取的复杂程度非常之高,这不仅仅有上图中的这样简单的文档的起因,语言自身的了解也存在重重困难,有些场景下即便是人类也会呈现不解之处。比方语言中隐含着业余的背景常识,隐形或显性的上下文语境,同样的文本表白着齐全不同的概念,而雷同的概念又有多变的语言表达办法等等。这些综合的起因使得了解语言成为了人工智能皇冠上的明珠,而从文本中抽取实体则不可避免地要了解语言,实体抽取的成果则依赖于对语言了解的水平。

图 3 语言了解困难重重

历史上,用来进行实体抽取的办法包含基于规定的办法、机器学习办法、深度学习办法和弱监督学习办法等几大类,每类办法中都有很多种不同的算法,具体的算法内容能够参考《常识图谱:认知智能实践与实战》第三章《实体抽取》(P78~136)。

BERT 介绍

BERT 是英文“Bidirectional Encoder Representations from Transformers”的缩写,是 Google 开发的一种基于 Transformer 的深度学习技术,用于人工智能畛域的文本预训练。BERT 由 Jacob Devlin 和他在 Google 的共事于 2018 年创立,并在论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》中公布。在 2019 年,谷歌发表已开始在其搜索引擎中应用 BERT,到 2020 年底,它简直在搜寻查问中都应用了 BERT。在 2020 年的一篇论文《”A Primer in BERTology: What We Know About How BERT Works”》中提到“In a little over a year, BERT has become a ubiquitous baseline in NLP experiments and inspired numerous studies analyzing the model and proposing various improvements. The stream of papers seems to be accelerating rather than slowing down, and we hope that this survey helps the community to focus on the biggest unresolved questions.”自从 BERT 进去当前,也疏导了至今煊赫一时的“大模型”浪潮。其本质就是“预训练”+“微调”:

图 4 BERT 模型,来自参考文献[2]

对于普罗公众来说,人工智能的标志性事件当属 AlphaGo,号称人类最难的智力游戏败于机器,可是大街小巷的谈资。

在自然语言解决畛域,BERT 在过后的自然语言解决畛域堪称掀起轩然大波,总结起来有:
1. 在机器浏览了解顶级程度测试 SQuAD1.1 中体现出惊人问题,首次两个掂量指标上全面超过人类,并且还在 11 种不同 NLP 测试中创出最佳问题。对于 SQuAD 数据集和评测参考 https://rajpurkar.github.io/S…,以后是 2.0 版本。
2. 谷歌团队成员 Thang Luong 示意,BERT 模型开启了 NLP 的新时代
3. 证实了通过大规模语料集预训练的技术,可能大幅度晋升各类文本浏览了解的成果,也因而,“大模型”自此衰亡
4.Masked LM(见下图)通过学习 masked 的词,不仅让模型学会了上下文信息,还学会了语法 syntax、语义 semantics、语用 pragmatics 等,并可能很好地学会局部畛域常识
5. 预训练模型越大,成果越好;对应的,老本也会越高。相比于单任务模型来说,无监督的预训练模型老本要大 1000 倍以上
6. 学术界传统上认为,在一些很难解决的文字浏览了解工作上,计算机无望可能全面超过人类

图 5 掩码语言模型

掩码语言模型的提出则来自于 Google 的更早些的一篇论文《Attention Is All You Need》(下载地址:https://arxiv.org/pdf/1706.03…)所提到的 Transformers 模型(见下图)。但 BERT 与 Transformers 略有区别,应用的是其编码器局部,这点从 BERT 的论文题目也能够看进去。事实上,以后煊赫一时的大模型中(如 GPT- 3 等),简直都依赖于 Transformers 的模型构造,特地是其中的自注意力机制。《常识图谱:认知智能实践与实战》一书 P123~130 的“BERT 模型详解”一节则对联合代码实现该 BERT 的模型构造进行具体的解析,通俗易懂,非常适合浏览来深刻了解 BERT 模型。上述两篇论文则提供了更多的试验比照素材,深刻浏览有助于理解 BERT 为何会在过后引起轰动,以至于在 NLP 畛域引领风骚数年。

 图 6 Transformer 模型构造

此外值得一提的是,Google 最后 公布的 BERT 模型有两种配置:
1.BERT BASE:12 个编码器,带有 12 个双向自注意力头;
2.BERT LARGE:24 个编码器,带有 16 个双向自注意力头。

这两种配置构造相似,Large 版本要比 Base 版本“更大”,成果天然更好,同时应用时资源要求也更高。本文以 Base 版本示例,以使得在一张显卡上即可实现。换成 Large 版本不必扭转任何代码,但因为网络更大,可能须要更高级的显卡或多卡来反对模型的训练。

语料筹备

本文采纳“MSRA 实体抽取数据集”,并应用 BIO 标记办法来标记,数据集在 GitHub 上有很多,也能够 GitHub 官网下载。(https://github.com/wgwang/kgb…)

MSRA 数据集中,实体类型有三种:
1.LOC:地点类型  
2.ORG:机构类型
3.PER:人物类型
一个例子为:
1 O
、O
中 B-ORG
国 I-ORG
作 I-ORG
协 I-ORG
和 O
现 B-LOC
代 I-LOC
文 I-LOC
学 I-LOC
馆 I-LOC
负 O
责 O
人 O
在 O
巴 B-PER
金 I-PER
家 O
中 O
介 O
绍 O
文 B-LOC
学 I-LOC
馆 I-LOC
新 O
馆 O
设 O
计 O
模 O
型 O
。O

从上述例子能够看出:1.“中国作协”是组织机构(ORG)类型:

  • ·B-ORG 标签:因为它是一个机构实体的开始
  • ·I-ORG 标签:因为它是一个机构实体的连续

2.“古代文学馆”和“文学馆”是地点(LOC)类型:

  • B-LOC 标签:因为它是地点实体的开始
  • I-LOC 标签:因为它是地点实体的连续

3.“巴金”是工作(PER)类型:

  • B-PER 标签:因为它是人物实体的开始
  • I-PER 标签:因为它是人物实体的连续

4. 其余词被调配 O 标签:因为它们不是任何实体应用

BERT 来进行实体抽取的话,须要将语料进行解决,转化成列表的模式(train_data 和 test_data,对应于原始的 train.txt 和 test.txt),列表的每一个元素是一个键值对元组,键为文本列表,值为标签列表。如下图所示:

图 7 数据样例用

BERT 进行实体抽取

这里应用最风行的 PyTorch 框架来实现。首先是引入相干的库。

这里抉择的是 Google 公布的模型 bert-base-chinese(https://huggingface.co/models 提供了大量的模型供应用,包含各种业余的预训练模型,比方面向金融畛域 FinBERT,面向医药畛域的 MedBERT 等等):
BERT_NAME = ‘bert-base-chinese’

转化为 torch 可能应用的数据集

再用如下代码将 torch 的 dataset 转化为按微批提取的 dataloader:

到此,数据筹备实现,前面就能够应用数据集来训练模型和测试模型成果了。

构建模型

在本文中,咱们将应用来自 HuggingFace 的预训练 BERT 根底模型。既然咱们要在 token 级别对文本进行分类,那么咱们须要应用 BertForTokenClassificationclass。

BertForTokenClassificationclass 是一个包装 BERT 模型并在 BERT 模型之上增加线性层的模型,将充当 token 级分类器。基于 BertForTokenClassificationclass 来创立基于 BERT 的实体抽取模型非常简单,见上面代码:

通过如下代码即可实例化一个用 BERT 进行实体抽取的模型:
model = BertModel(len(label2id)+1)

训练

咱们的 BERT 模型的训练循环是规范的 PyTorch 训练循环。在训练模型中,须要应用 GPU,否则会十分耗时。GPU 倡议应用 nvidia 的显卡提供,1080ti 及其更高版本皆可。

model = model.cuda()

因为 BERT 曾经应用了大规模语料训练并失去了通用的语义示意,通常应用的话,仅须要从新微调最下面一层即可。为此,须要解冻其余不须要训练的层的参数。上面代码实现了这个逻辑:

接下来就是常见的深度学习训练方法了,这里应用 AdamW 优化器,其余优化器也能够依据须要进行抉择,具体的参考 PyTorch 的官网文档。

lr = 0.00005
optimizer = torch.optim.AdamW(optimizer_grouped_parameters, lr=lr)

上面是具体的训练代码:

在测试数据上评估模型

当初咱们曾经训练了用于抽取实体的 BERT 模型。在后面数据集筹备中还有测试集,这里能够应用测试集来看成果:

另外,上述的成果评估是比较简单的,理论利用中还能够应用更为精密的评估办法,比方按所抽取的实体来评估的办法。更多的用于评估实体抽取的办法可参考《实体抽取:如何评估算法的成果?》一文。
(https://mp.weixin.qq.com/s/ST…)

论断

本文介绍了全面介绍了如何应用 BERT 进行实体抽取,并给出了代码实例。通过本文,读者能够很不便地“依瓢画葫芦”实现一个基于 BERT 模型的实体抽取程序,从而学会工业界中最好用的实体抽取模型,并将其利用到学习或工作当中。

具体来说,本文内容包含:

  1. 介绍了什么是实体抽取
  2. 介绍了什么是 BERT
  3. 用代码实例介绍了如何应用 BERT 进行实体抽取的残缺过程,这包含四个内容:
  4. 筹备数据
  5. 构建模型
  6. 训练模型
  7. 测试模型成果

参考文献

  1. Ashish Vaswani etc., Attention Is All You Need, arxiv: 1706.03762, 2017
  2. Jacob Devlin etc., BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, arxiv:1810.04805, 2018
  3. Anna Rogers etc., A Primer in BERTology: What We Know About How BERT Works, arxiv:2002.12327 2020
  4. 王文广,  常识图谱:认知智能实践与实战, 电子工业出版社, 2022  

作者简介

王文广,达观数据副总裁,高级工程师,《常识图谱:认知智能实践与实战》作者,曾取得上海市计算机学会科技进步奖二等奖和上海市浦东新区科技进步奖二等奖,专一于自然语言解决、常识图谱、图像与语音剖析、认知智能、大数据和图剖析等方向的技术钻研和产品开发。当初是上海市人工智能标准化技术委员会委员,上海科委评审专家,中国计算机学会(CCF)高级会员,中文信息学会(CIPS)语言与常识计算专委会委员,中国人工智能学会(CAAI)深度学习专委会委员。申请有数十项人工智能畛域的国家发明专利,在国内外出名期刊会议上发表有十多篇学术论文。曾带队取得国内国内顶尖算法比赛 ACM KDD CUP、EMI Hackathon、“中国法研杯”法律智能比赛、CCKS 常识图谱评测的冠亚季军问题。在达观数据致力于将自然语言解决、常识图谱、计算机视觉和大数据技术产品化,以 OCR、文档智能解决、常识图谱、RPA 等产品服务于金融、智能制作、贸易、半导体、汽车工业、航空航天、新能源、双碳等畛域。

正文完
 0