赞
踩
案列介绍:
{
"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.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。