三元组抽取

案列介绍:

{
  "text": "九玄珠是在纵横中文网连载的一部小说,作者是龙马",
  "spo_list": [
    ["九玄珠", "连载网站", "纵横中文网"],
    ["九玄珠", "作者", "龙马"]
  ]}

一个句子,句子包含三元组。其中三元组是(s,p,o)的形式,s,o是实体,p是两个实体的关系。

五种样本的特点:

        1.s和o不是分词工具分出来的正确的词,因此对p(关系)标注才能取出正确的s,o,考虑到分词可能切错边界,因此应该基于子的输入标注。

        2.样本中大多数的抽取结果是“一个s,多个(p,o)的形式”,比如《战狼》的主演包括吴京和余男,那么抽取(战狼,主演,吴京),(战狼,主演,余男)

        3.抽取结果是“多个s,一个(p,o),多个(p,o)的形式”,比如《战狼》、《战狼2》的主演都是吴京,那么抽取(战狼,主演,吴京),(战狼2,主演,余男)

        4.抽取结果是“同一对(s,o)也可能对应多个p”,比如《战狼》的主演和导演都是吴京,那么抽取(战狼,主演,吴京),(战狼,导演,吴京)

        5.极端情况下,s,o之间是重叠的。比如“《鲁迅自传》,由江苏文艺出版社出版”,除了抽出(鲁迅自传,出版社,江苏文艺出版社),还要抽出(鲁迅自传,作者,鲁迅)

概率图能够同时完成这五项,利用CNN+Attention+sigmoid模型完成

概率图思想:

       Seq2seq解码器上建模

                P(y1,y2,…,yn|x)=P(y1|x)P(y2|x,y1)…P(yn|x,y1,y2,…,yn−1)

                实际预测的时候,实现通过x(c向量)来预测第一个单词,通过第一个已知单词来预测单词依次传递,直到结束。

三元组的思想:

        P(s,p,o)=P(s)P(o|s)P(p|s,o)

先预测s,然后传入s来预测o,然后传入s,o来预测之间的关系p.实际应用中,我们还可以把o,p预测合并到一步。先预测s,然后传入s来预测s对应的o和p。

半指针-半标注:

        三元组模型只能抽取单个,处理可能多个s,多个p的情况,我们使用“半指针-半标注”

结构就是把softmax换成sigmoid.在关系分类的时候也使用sigmoid而不是softmax激活。这种方法可以简单高效的解码,并完全覆盖了五个特点。(softmax是多分类,有五十种关系。Sigmoid是二分类,只有0,1。这里面就是将49中分为1类,剩下是一类。他们都是求概率的)

整体结构:

        

 

        

1.输入字的id,然后经过embedding,得到对应的向量序列,然后加上Position embedding(位置嵌入)。

2.将得到的“字-词-位置embedding”,输入到12层bert进行编码,得到编码后的序列。

3.将编码后的数据传入到 self attention,将输出结果与先验特征进行拼接。

4.将拼接后的结果传入CNN,Dense,用半指针-半标注结构预测s的首和尾。就是抽取实体s

5.拿到“字-词-位置embedding”输入到12层bert的序列,与s的实体进行拼接,传入到self attention。

6.将拼接后的结果传入CNN,Dense,对于每一种p,都构建一个半指针-半标结构来预测对应的o的首位位置,同时就把o,p都预测出来了。

三元组模型结构:

模型结构:

        1.将数据转为id形式,传入bert的编码器,得到编码序列。

        2.编码序列接两个分类器,预测s。

        3.根据传入的s,从编码序列中抽取s的首和尾对应的编码向量。

        4.以s的编码向量作为条件,对编码序列做一次条件later norm.

        5.根据条件layer norm后的序列来预测s对应的o,p.

        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值