学习笔记之知识图谱三元组抽取模型


前言

这里使用一个多任务模型抽取三元组。任务1是抽取subjects, 任务2是同时抽取objects 和 predictions。抽取的方式并不是BIO标注的方式而是采用半指针半标注的方法。

一、模型整体思路

1、模型大体描述如下:基于Bert编码器,利用半指针半标注的方式,先抽取subjects,再同时抽取objects和predictions。
2、模型具体描述如下:
step1 利用Bert等编码器将输入文本编码成词向量。
step2 将词向量经过一个dense层变化成两维的向量。
step3 将得到的2维向量分别过一个sigmoid激活函数,分别代表是否是subject的起始,是否是subject的结束。最终可以得到1or多个subjects.
step4 将得到的subjects过一个dense层转化成词向量维度与step1得到的词向量相加
step5 再将step4得到的结果经过一个dense层输出一个2关系量的向量。
step6 最后再将2
关系量的向量转化成 【关系量,2】的矩阵,代表对于每一个可能的prediction对应的objects标识。

二、模型建立

1、SubjectModel 流程如下:

input_ids, attention_mask
last_hidden_status 768*1
subject_output 2*1
sigmoid 2* 1
subject_out

2 、ObjectModel 流程如下:

subject_output 2 * 1
subject_output变化成768*1
subject_output + last_hiddenn_status 768 * 1
object_output 49 * 2
last_hidden_status768*1

三、训练阶段

model
+subject_labels
model
+object_labels
input_ids, attention_mask, subject_ids
subject_output
subject_loss
loss
object_output
object_loss

四、解码阶段

对于验证集,先输入input_ids,attention_mask得到subject_output,设定两个阈值(比如0.5,0.6)决定subject的起始和结尾,进而得到subject。再将subject_output,input_ids, attention_mask再导入objectModel得到obejct_output,同理设定两个阈值(比如0.2,0.3)得到objects和predicate。如此得到的三元组和验证集的labels比对,计算F1。

总结

知识图谱的构建是知识图谱的核心。我们这里介绍的方法是一个baseline的方法,有很多可以改进的空间。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值