Bert CNN信息抽取

Github参考代码:https://github.com/Wangpeiyi9979/IE-Bert-CNN

数据集来源于百度2019语言与智能技术竞赛,在上述链接中提供下载方式。

感谢作者提供的代码。

1、信息抽取任务

给定schema约束集合及句子sent,其中schema定义了关系P以及其对应的主体S和客体O的类别,例如 (S_TYPE:人物,P:妻子,O_TYPE:人物)、(S_TYPE:公司,P:创始人,O_TYPE:人物)等。任务要求参评系统自动地对句子进行分析,输出句子中所有满足schema约束的SPO三元组知识Triples=[(S1, P1, O1), (S2, P2, O2)…]。

输入/输出:

☆  输入:schema约束集合及句子sent

☆  输出:句子sent中包含的符合给定schema约束的三元组知识Triples

数据集样例:

[{'text': '如何演好自己的角色,请读《演员自我修养》《喜剧之王》周星驰崛起于穷困潦倒之中的独门秘笈', 'spo_list': [{'predicate': '主演', 'object_type': '人物', 'subject_type': '作品', 'object': '周星驰', 'subject': '喜剧之王'}]}]

2、Bert CNN 模型输入数据构建

(1)原始数据集中的每条记录记录取text和spo_list的内容,其他的不关注。

(2)对text句子中每个字进行编码,转换成各自的索引或编号,记为sens。

(3)将text句子中的每个字,并结合spon_list,用BIO实体标注法进行标注,记为tags。

(4)从spon_list提取关系所属类别,每个关系表述为(s1, e1, s2, e2, r),其中s1和e1为主体在句子中的开始和结束位置序号,s2和e2为客体在句子中的开始和结束位置序号,r为关系所属类别。提取到的关系记为entRels。

那么模型的输入为sens,tags,entRels。其中sens和tags的维度为(B,L),B为batchsize,L为句字的长度。该代码中L的取值为180,原始句子需要进行填充和截断以满足长度为180。entRels为list列表,长度为B,列表中每个元素是句子包含的关系,并且每个句子可能存在多个关系。

3、Bert CNN模型训练

(1)模型输入:sens,tags,entRels。

(2)sens(B,L)和句子实际长度掩模输入Bert,得到特征序列(B,L,768)。

(3)将特征序列(B,L,768)输入Bert分类器,用于实体分类,实体共有39类,那么输出为logits(B, L, 39)。

(4)根据entRels,提取(2)中对应的特征序列,提取的范围包括从主体到客体全部文字,主体与客体中间的文字,即包含主体、客体、中间文字,特就是提取关系所涉及到的句子最小长度,并且通过填充或裁剪将截取后短句的长度限制为13个字。那么每个关系的维度为(13, 768)。由于一个句子可能包含多个关系,那么关系的数量可能大于B,记为N,那么总的关系特征维度为(N,13, 768)。

(5)CNN:使用三个不同尺寸的卷积对关系特征进行特征提取,卷积核的大小分别为(5, 768),(9,768),(13, 768),输入通道数为1,输出为230,那么提取到三组特征的维度为(N,230, 13),将三组特征拼接得到(N,690,13)维度的特征。可以看到卷积核第一维度的长度不同,是每个特征关联到的关系序列的字数不一样。

(6)对CNN特征的最后一个维度进行最大池化得到(N,690)维度的特征,再用(690,50)的Linear线性变化分类到50个不同的关系类别,维度为(N,50),记为out。

(7)损失函数:损失函数包含实体损失和关系损失,二者的权重分别为0.85和0.15。实体损失通过(3)中logits和输入tags的交叉熵损失计算得到;实体损失通过(6)中out和输入entRels中关系类别的交叉熵损失计算得到。

4、Bert CNN模型推理

(1)模型输入:sens

(2)sens(B,L)和句子实际长度掩模输入Bert,得到特征序列(B,L,768)。

(3)将特征序列(B,L,768)输入Bert分类器,用于实体分类,实体共有39类,那么输出为logits(B, L, 39)。

(4)logis选取39个类别中最大概率对应的类别,初步得到预测的实体标签(B,L)。

(5)从预测的实体标签中筛选出可能存在的关系的实体对,如果不加入先验知识,两两实体间均有可能存在关系,这样可能的实体对会比较多。也可以通过一定的先验判断来进行初步筛选。删选出来的实体对标注为(s1, e1, s2, e2, 0)。

(6)同模型训练(4),筛选实体关系对应短句的Bert特征(N,13, 768),同模型训练(5)(6),得到关系分类特征(N,50),选取取值最大的为最终分类,从而可以得到N个分类。

(7)(4)中得到实体分类结果,(6)中得到关系分类结果。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding的叶子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值