摘要
本文接着 知识图谱系列——关系抽取(1)[1],继续介绍一个2019年新出的非常好的方法R-BERT[2] 。该方法使用预训练模型 BERT 到句子级别关系抽取任务上,取得了很好地效果。其主要贡献在于率先将 BERT 用在了关系抽取任务上, 探索了实体和实体位置在大型预训练模型中的结合方式,也证实了可以通过在实体前后加标识符得方式表明实体位置强化表征, 代替传统位置向量得做法,实际工业实践效果良好。
1 算法原理
关于BERT的原理可以参见google BERT源码和文章说明[3-4], 如图1所示,文章所展示的图非常明显的把方法思路展示出来:
(1) 使用BERT进行句子embedding表征;
(2) 标记entity位置,取出实体embedding向量序列;
(3)取出[cls]的embedding表示整个句子的意思 并连接全连接层,对实体向量序列取平均值 big分别连接全连接层;
(4)将三个向量进行拼接,再连接全连接层,而后进行softmax并输出结果。图1
2 实践小结
(1)数据预处理
假设输入的句子为: "中华民族是一个伟大的民族", 在送入 BERT 之前进行标记实体的预处理如下。第一个实体得前后添加 $ 符号,第二个实体前后添加 # 符号: "$中华民族$是一个伟大的#民族#。"
两个实体前后添加特殊符号的目的是标识两个实体, 让模型能够知道这两个词的特殊性,相当于显性指出两个实体的位置,告诉模型:这个词比较特殊要注意。
(2)参数设置参考
(2)效果
文中作者在 SemEval-2010 Task 8 dataset 上做了实验, 实验证明 R-BERT 比其他的模型如attention-CNN,entity attention bi-lstm 等效果都要好很多.。
除此之外,作者的实验结果还支持以下结果:不加实体标志且不使用实体embedding,只是用句子embedding,F1效果只有81.09%;
不显性标志实体前后的标识符会使 F1 效果从 89.25% 降至 87.98%. 说明标识符确实可以显著帮助模型提供实体信息;
在 BERT 输出层仅取出 [CLS ]获取句子向量而不利用实体向量会使得F1 效果降至 87.98%, 说明显性使用实体信息对模型是有显著效果的,这个很容易理解。
另外,本人实践工业数据效果远比此前模型高,其中不光是因为BERT这种预训练模型表达能力强的关系,显性标记实体这个操作既简单,效果又倍儿棒。
【知识图谱系列——关系抽取就介绍这两篇吧,毕竟2019年出来的新论文方法效果已经很好了,工业应用还是以实用为主嘛。下节开始介绍 知识图谱系列——实体链接技术】
参考文献
[1] 知识图谱系列——关系抽取(1):debuluoyi:知识图谱系列——关系抽取(1)zhuanlan.zhihu.com
[2] Wu, S., & He, Y. (2019). Enriching Pre-trained Language Model with Entity Information for Relation Classification.arXiv preprint arXiv:1905.08284.Enriching Pre-trained Language Model with Entity Information for Relation Classificationarxiv.orggoogle-research/bertgithub.com
[4] Devlin, J. , Chang, M. W. , Lee, K. , & Toutanova, K. . (2018). Bert: pre-training of deep bidirectional transformers for language understanding.github.com/debuluoyigithub.com