最近在学习和整理关系抽取的模型,在学习的过程中对关系抽取有了进一步的认识。小白的学习之路漫长开始。转入今天的正题。
(1)TPLinker是一种关系抽取的新范
(2)TPLinker是单阶段抽取模型,
(3)TPLinker实体和关系公用同一个解码,同时避免偏差暴露,同时抽取实体和关系,并不是先抽实体再抽关系,累加实体抽取错误的误差,保证了训练和预测的一致性。
(4)TPLinker模型可以处理SingleEntityOverlap (SEO), and EntityPairOverlap (EPO) ,同时可以处理实体嵌套问题
TPLinker使用bert和Handshaking Kernel,Handshaking Kernel是核心。
TPLinker的模型结构图:
TPLinker模型需要对关系三元组(subject, relation, object)进行手动Tagging,过程分为三部分:
(1)entity head to entity tail (EH-TO-ET)
(2)subject head to object head (SH-to-OH)
(3)subject tail to object tail (ST-to-OT)
标记示例见下图,EH-TO-ET用紫色表示,SH-to-OH用红色表示,ST-to-OT用蓝色表示。
由于这种Tagging标记方式为Handshaking Tagging,矩阵是稀疏的,故将下三角标记的1对称到上三角部分,并且标记为2。这种标记方式可以处理实体重嵌套,例如New York City和New York。
解码过程抽取出实体和实体间对应的关系,过程如下:
(1)构建实体EH-TO-ET字典D,其中字典D的key是实体头,value为实体
(2)解码ST-to-OT,构建字典E;再解码SH-to-OH且在字典D中尽可能查找满足实体头的所有实体subject和object
(3)验证上述找到的subject 和object实体对儿的尾部是否在E中,如果在E中,得到实体subject,objdect和关系三元组
解码过程包括抽取实体和关系,这里考虑了实体的type,解码过程如下:
(1) 根据handshaking kernel的结果得到所有handshaking tagging的结果,即[(start, end, idstag)]
(2) 根据得到的handshaking tagging的结果解码得到EH-TO-ET,即(entity_start, entity_end, entity_type),同时构建head_ind2entities字典,字典的key是entity_head index,value 是entity token span
(3) 根据得到的handshaking tagging的结果解码得到ST-TO-OT或者OT-TO-ST,即(sub_tail, obj_tail, rel_type)
(4) 根据handshaking tagging的结果解码得到SH-TO-OH,ST-TO-OT, sub_head, obj_head, rel_type, 验证sub_head,obj_head是否在head_ind2entities中,如果sub_head, obj_head在head_ind2entities中,验证(sub_tail, obj_tail, rel_type)是否在(3)中的结果,如果在,则返回关系三元组
通过Handshaking Tagging得到实体对,实体对的特征表示为:
实体对所属关系的模型表示:
模型损失函数
其中,N是句子的长度, E,H,T分别表示EH-TO-ET,SH-to-OH,ST-to-OT, l ^ ∗ \hat l^{*} l^∗是真是的标签
TPLinker跟其他模型的实验结果对比如下图:
最近在用TPLinker模型做中文关系抽取,数据处理为以下格式:
{
"id": 9,
"text": "在导师阵容方面,英达有望联手《中国喜剧王》选拔新一代笑星",
"relation_list": [
{
"subject": "中国喜剧王",
"object": "英达",
"subj_char_span": [
15,
20
],
"obj_char_span": [
8,
10
],
"predicate": "嘉宾",
"subj_tok_span": [
15,
20
],
"obj_tok_span": [
8,
10
]
}
],
"entity_list": [
{
"text": "英达",
"type": "人物",
"char_span": [
8,
10
],
"tok_span": [
8,
10
]
},
{
"text": "中国喜剧王",
"type": "电视综艺",
"char_span": [
15,
20
],
"tok_span": [
15,
20
]
}
]
}
最近一段时间在学习关系抽取,主要看了TPLinker,CasRel,苏神的bert4keras这三个联合抽取模型,并且用baidurelation2020比赛数据集做了简单的对比实验(GPU显存比较小,batch和max length设置的比较小),三个模型训练的轮数不太够,epoch均为20。通过对比实验发现,苏神的bert4keras的实验效果和CasRel的结果相近,三个模型在部分数据上表现的不一样,这里只取一个对比例子,
TPLinker模型结果
{
"text": "除了闪瞎人员的超级英雄演员阵容,还有几位大名鼎鼎的幕后工作者,比如“漫威之父”斯坦·李(幕前彩蛋也没少客串),《银河护卫队》系列的导演詹姆斯·古恩(他同时也是“浣熊火箭”),漫威影业的主席凯文·费奇等等",
"id": "test_13",
"relation_list": [
{
"subject": "银河护卫队",
"object": "詹姆斯·古恩",
"subj_tok_span": [
56,
61
],
"obj_tok_span": [
67,
73
],
"subj_char_span": [
56,
61
],
"obj_char_span": [
67,
73
],
"predicate": "导演"
},
{
"subject": "浣熊火箭",
"object": "詹姆斯·古恩",
"subj_tok_span": [
80,
84
],
"obj_tok_span": [
67,
73
],
"subj_char_span": [
80,
84
],
"obj_char_span": [
67,
73
],
"predicate": "导演"
}
]
}
{
"text": "夏志清毕业于上海沪江大学(这是一所美国教会学校),兄弟俩在北大既无背景也无后盾",
"id": "test_15",
"relation_list": [
{
"subject": "夏志清",
"object": "上海沪江大学",
"subj_tok_span": [
0,
3
],
"obj_tok_span": [
6,
12
],
"subj_char_span": [
0,
3
],
"obj_char_span": [
6,
12
],
"predicate": "毕业院校"
}
]
}
{
"text": "《遗忘》是台湾女歌手邓丽君演唱的一首歌曲,这首歌曲首次原先在1979年9月20日收录在专辑《难忘的一天》中于台湾等地发行,同年11月15日收录在专辑《甜蜜蜜》中于香港等地发行",
"id": "test_24",
"relation_list": [
{
"subject": "遗忘",
"object": "难忘的一天",
"subj_tok_span": [
1,
3
],
"obj_tok_span": [
42,
47
],
"subj_char_span": [
1,
3
],
"obj_char_span": [
46,
51
],
"predicate": "所属专辑"
},
{
"subject": "遗忘",
"object": "甜蜜蜜",
"subj_tok_span": [
1,
3
],
"obj_tok_span": [
69,
72
],
"subj_char_span": [
1,
3
],
"obj_char_span": [
75,
78
],
"predicate": "所属专辑"
},
{
"subject": "遗忘",
"object": "邓丽君",
"subj_tok_span": [
1,
3
],
"obj_tok_span": [
10,
13
],
"subj_char_span": [
1,
3
],
"obj_char_span": [
10,
13
],
"predicate": "歌手"
}
]
}
CasRel模型结果
{
"text": "除了闪瞎人员的超级英雄演员阵容,还有几位大名鼎鼎的幕后工作者,比如“漫威之父”斯坦·李(幕前彩蛋也没少客串),《银河护卫队》系列的导演詹姆斯·古恩(他同时也是“浣熊火箭”),漫威影业的主席凯文·费奇等等",
"relation": [
[
"银河护卫队",
"导演",
"詹姆斯·古恩"
]
]
}
{
"text": "夏志清毕业于上海沪江大学(这是一所美国教会学校),兄弟俩在北大既无背景也无后盾",
"relation": [
[
"夏志清",
"毕业院校",
"沪江大学"
],
[
"夏志清",
"毕业院校",
"上海沪江大学"
]
]
}
{
"text": "《遗忘》是台湾女歌手邓丽君演唱的一首歌曲,这首歌曲首次原先在1979年9月20日收录在专辑《难忘的一天》中于台湾等地发行,同年11月15日收录在专辑《甜蜜蜜》中于香港等地发行",
"relation": [
[
"遗忘",
"歌手",
"邓丽君"
],
[
"遗忘",
"所属专辑",
"难忘的一天"
]
]
}
苏神的bert4keras的结果
{
"text": "除了闪瞎人员的超级英雄演员阵容,还有几位大名鼎鼎的幕后工作者,比如“漫威之父”斯坦·李(幕前彩蛋也没少客串),《银河护卫队》系列的导演詹姆斯·古恩(他同时也是“浣熊火箭”),漫威影业的主席凯文·费奇等等",
"bert4keras_relation": [
[
"银河护卫队",
"导演",
"詹姆斯·古恩"
]
]
}
{
"text": "夏志清毕业于上海沪江大学(这是一所美国教会学校),兄弟俩在北大既无背景也无后盾",
"bert4keras_relation": [
[
"夏志清",
"毕业院校",
"沪江大学"
],
[
"夏志清",
"毕业院校",
"上海沪江大学"
]
]
}
{
"text": "《遗忘》是台湾女歌手邓丽君演唱的一首歌曲,这首歌曲首次原先在1979年9月20日收录在专辑《难忘的一天》中于台湾等地发行,同年11月15日收录在专辑《甜蜜蜜》中于香港等地发行",
"bert4keras_relation": [
[
"甜蜜蜜",
"歌手",
"邓丽君"
],
[
"遗忘",
"所属专辑",
"难忘的一天"
],
[
"遗忘",
"所属专辑",
"甜蜜蜜"
],
[
"遗忘",
"歌手",
"邓丽君"
],
[
"难忘的一天",
"歌手",
"邓丽君"
]
]
}
如有错误,欢迎指出。