导语
spert: 一种以变压器网络BERT为核心的联合实体和关系提取模型。采用基于span的方法:任何标记子序列(或span)构成一个潜在的实体,任何一对span之间都可以保持关系。
论文题目:Span-based Joint Entity and Relation Extraction with Transformer Pre-trainin
论文链接:https://arxiv.org/abs/1909.07755
论文代码:https://github.com/markus-eberts/spert
任务目标:关系抽取
即从一句话中提取实体与关系,构成一个三元组
比如:
"xiao ming started in xiao zhang`s Happy comedians"
我们的目标是获取三元组
("xiao ming",Plays-In,"comedians")
或者
("comedians",Director,"xiao ming")
下面是这个模型整体的架构图:
span classification(span分类)
红色方块表示实体
黄色方块表示文本内容
蓝色方块表示span长度信息
绿色方块表示整个句子的语义
表示向量合并操作
span的表示:
c表示整个句子语义嵌入
使用softmax分类器分类span(softmax分类器会在后续文章中详细介绍)
首先定义好entity目录,比如person、organization;
span被分类为 中的类别,或者none(表示span不包含实体);
span使用BERT来做嵌入操作(就是将其转化为特征向量);
定义一个fusion function(融合函数):来融合嵌入后的向量,这篇论文就是选用了一个比较好的融合函数max-pooling;
表示span的长度嵌入,目的是把span的长度信息融合span的特征向量中,因为太长的span不可能表示实体;
span filtering (span过滤)
过滤掉被分类到none类别的span和长度超过10的span(太长的不可能是实体)
relation classification(关系分类)
在两个相邻的实体之间,通过BERT和max-pooling,我们获得一个语义嵌入c(S1,S2)关系是不对称的,所以考虑S1和S2的顺序,通过两个单位向量进行处理
两者经过一个单层的分类器, 表示sigmoid函数
定义一个临界值 ,比较y和的值来确定x是否是实体关系三元组