百度Lic2020关系抽取baseline学习 for Bert4Keras
前情提要
就是参加了Lic2021多形态信息抽取赛道,然后找了找之前的baseline,看到了苏神的思路,特地学习了一下,然后记录一下。
赛事背景
信息抽取旨在从非结构化自然语言文本中提取结构化知识,如实体、关系、事件等。目前,大多数研究工作仅关注单一类型信息的抽取效果,缺乏在不同类型信息抽取任务上的统一评价。因此,本次竞赛设立了多形态信息抽取任务,期望从不同维度对结构化知识抽取效果进行综合评价。竞赛将对外发布业界最大规模的中文多形态信息抽取数据集,囊括实体、关系、事件等不同形态的结构化知识抽取,同时涵盖句子和篇章两种粒度的自然语言文本。希望通过此次竞赛及开放的大规模中文数据集,助力信息抽取技术的进一步发展。
任务说明
关系抽取任务的目标是对于给定的自然语言句子,根据预先定义的schema集合,抽取出所有满足schema约束的SPO三元组。schema定义了关系P以及其对应的主体S和客体O的类别。
样本输入示例:
{
"text":"王雪纯是87版《红楼梦》中晴雯的配音者,她是《正大综艺》的主持人"
}
输出示例:
{
"text":"王雪纯是87版《红楼梦》中晴雯的配音者,她是《正大综艺》的主持人",
"spo_list":[
{
"predicate":"配音",
"subject":"王雪纯",
"subject_type":"娱乐人物",
"object":{
"@value":"晴雯",
"inWork":"红楼梦"
},
"object_type":{
"@value":"人物",
"inWork":"影视作品"
}
},
{
"predicate":"主持人",
"subject":"正大综艺",
"subject_type":"电视综艺",
"object":{
"@value":"王雪纯"
},
"object_type":{
"@value":"人物"
}
}
]
}
样本特点:
参照苏神的博客:
Idea
-
苏神提出的基于概率图的抽取方案,就是先抽取subject,然后再根据subject同时预测object和predicate。
-
第二点就是针对类别失衡的问题,作者提出了一种将概率值做n次方的形式,去解决这种问题。
-
这是模型结构
流程就是:
1、原始序列转id后,传入bert的编码器,得到编码序列; 2、编码序列接两个二分类器,预测s; 3、根据传入的s,从编码序列中抽取出s的首和尾对应的编码向量; 4、以s的编码向量作为条件,对编码序列做一次条件Layer Norm; 5、条件Layer Norm后的序列来预测该s对应的o、p。
这里的条件Layer Norm会具有更好的表达能力。
剩下的具体细节就参考苏神的博客就可以了