首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【信息抽取】如何使用BERT进行关系抽取

事物、概念之间的关系是人类知识中非常重要的一个部分,但是他们通常隐藏在海量的非结构文本中。为了从文本中抽取这些关系事实,从早期的模式匹配到近年的神经网络,大量的研究在多年前就已经展开。

然而,随着互联网的爆炸发展,人类的知识也随之飞速的增长,因而对关系抽取(Relation Extraction, RE)提出了更高的要求,需要一个有效的RE系统,能够利用更多的数据;有效的获取更多的关系;高效的处理更多复杂的文本;具有较好的扩展性,能够迁移到更多的领域。

本文首先介绍一种基于预训练模型的关系抽取方法,即能够引入现今最有效的预训练模型BERT,来进行关系分类的方法。

作者&编辑 | 小Dream哥

1 预训练模型

预训练模型是近一两年来NLP领域取得的非常重要的进展。基于大型的预训练模型finetune下游任务,是如今NLP领域非常流行的做法,在很多的NLP任务中都取得了SOTA的效果,我们在此前也写了很多的文章进行介绍,感兴趣的读者可以看看:

既然预训练模型这么有效,自然会有用它来做关系抽取和分类的了,我们今天就介绍基于BERT的关系抽取模型。

本文涉及的模型参考论文如下:

[1] Wu S , He Y . Enriching Pre-trained Language Model with Entity Information for Relation Classification[J]. 2019.

[2] Giorgi J , Wang X , Sahar N , et al. End-to-end Named Entity Recognition and Relation Extraction using Pre-trained Language Models[J]. 2019.

2 关系分类

1) 模型结构

如上图所示,是该模型的结构,下面做一个简单的介绍:

1.输入层,跟典型的BERT输入层无异。需要注意的是,在这个模型中,分别用特殊符号$和#号标识两个实体的位置。

2.利用了BERT特征抽取后2个部分的特征:

BERT【CLS】位置的embeding和两个实体相对应的embeding

3.将上述3个特征拼接起来,再接一个全连接层和softmax层输出关系的分类。

论文中用到的模型参数如下,感兴趣同学可以复现一下:

2) 模型结果

模型结构并不复杂,但是取得了不错的效果:

我们可以认为模型对分类任务起到关键效果的部分有3个:

1.BERT【CLS】embedding,学习到了句子级的特征

2.BERT实体embedding,学习到了实体的语义特征

3.特殊符号,带给了模型实体的边界及位置信息

论文做了实验来论证这3部分特征的作用,如下图所示:

1.R-BERT-NO-SEP-NO-ENT 代表既没有分隔符也没有实体embedding特征的模型

2.R-BERT-NO-SEP代表既没有分隔符的模型

3.R-BERT-NO-ENT代表既没有实体embedding特征的模型

4.R-BERT代表完整的模型结构

结果可以看出,实体embedding和分隔符对模型效果贡献了很大。这主要是因为,在关系分类的任务中,句子的语义信息和两个实体的词级信息均很重要。通过两个分隔符,能够帮助BERT学习两个实体的位置,从而提高模型对实体的表征能力

3 BERT Joint抽取模型

上述模型是一个单纯的关系分类模型,在前面的关系抽取文章中我们提到过,联合抽取通常具有更好的效果,下面介绍一种基于BERT的联合抽取模型,即通过一个模型能够得到输入文本中的实体以及实体之间的关系,供读者参考。

1) 模型结构

如上图所示,是本文要介绍的联合抽取模型的结构图,可以把这个模型分成3个部分:

1.NER Module,实体抽取模块。

2.RE Module,关系分类模块。

3. BERT,共享特征抽取模块。

对于实体抽取模块,跟此前我们介绍的基于BERT的实体抽取模型没有差别,不了解的同学可以出门左转先看一下:

RE模块相对复杂一点,我们详细介绍一下,

RE模块的输入将两个部分的输入近拼接得到:

1.BERT对输入序列编码得到的特征序列;

2.NER模块的输出,经过argmax函数得到一个跟输入序列长度相同的,转化为固定维度的序列。

拼接得到的向量分别通过一个Feed Forward层,通过一个biaffine分类器,预测出实体之间的关系。

biaffine分类器的实际作用如下:

2) 模型结果

如上图所示,该模型在几个数据集中均取得了不错的效果,感兴趣的同学可以实现一下试试。

总结

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200805A076L600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券