热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关系抽取模型SpERT模型

关系抽取模型----SpERT模型SpERT模型是联合式抽取模

关系抽取模型----SpERT模型

SpERT模型是联合式抽取模型,同时抽取实体和关系。SpERT模型采用分类的思想实现联合抽取,实体抽取和关系抽取模型均为分类模型。SpERT模型是Span-based Joint Entity and Relation Extraction with Transformer Pre-training(2020)提出的,代码地址,SpERT模型
(1) 实体抽取和关系抽取均采用分类的思想
(2) 采用穷近的思想预测给定文本中所有可能的文本片段所属的实体类型
(3) 关系抽取依赖于出抽取出的实体,预测抽取实体的所有组合的关系类型
(4) 进行关系抽取会可考虑实体间的文本特征信息

模型结构

SpERT的模型采用bert 作为embedding,预测实体类型,选取实体类型为非None的实体进行关系分类,结构如下图:
spert模型
(1)实体分类,这里对实体进行分类,是一个softmax,但是考虑了实体的头尾,实体分类模型得到的是实体的类别和实体span,也就是文本中的那些字段是实体,模型的输入文本tokenizer, 实体span,实体mask,实体size等
(2)对实体进行过滤span filter,对实体模型的结果进行过滤,保留有实体,根据保留的实体构建关系负样本,
(3)关系分类,输入是实体,实体间连续文本特征max-pooling,实体宽度矩阵,经过一个线性层,得到关系分类的结果
注意:实体分类采用的是softmax,关系分类采用的是sigmoid

span classification

  • span’s BERT embeddings
    在这里插入图片描述
  • BERT/width embeddings
    在这里插入图片描述
    其中c是是bert embedding中CLS向量,即这个句子的句向量。
  • entity classification
    在这里插入图片描述

span filtering

过滤实体类型为None的实体

Relation classification

-特征表示
在这里插入图片描述
-关系分类
在这里插入图片描述
其中?(?_1 ),?(?_2)表示BERT/width embeddings,?为实体间max-pooling的BERT embeddings

Loss计算

关系分类的loss和实体分类的loss和为整个模型的loss
在这里插入图片描述
其中ℒ^?为cross entropy ,ℒ^?为binary cross entropy。

模型数据构建说明

span classification数据说明

实体分类模型中加入了负样本,提高模型的鲁棒性。

  • 数据candidate span 实体构建方式
    (1)正例:数据中的实体数据
    (2)反例:在句子中选取所有长度小于实体最大span长度的文本片段作为实体反例,实体类型为None。
    例如:古往今来,能饰演古龙小说人物“楚留香”的,无一不是娱乐圈公认的美男子,2011年,36岁的张智尧在《楚留香新传》里饰演楚留香,依旧帅得让人无法自拔。假设实体最大span长度为5,
    实体正例为(张智尧,人物,45,47),(楚留香新传, 影视作品,50,54),(楚留香,人物,15,17)
    实例反例为:(古,None,0,0),(今,None,1,1)…
    (古往,None,0,1)(往今,None,1,2)(今来,None,2,3)…

    (古往今来,None,0,4) (往今来,能,None,1,5)…
    随机选取实体的反例数量为100
    注意:反例实体数据中不包含真正的实体数据
  • relation classification数据说明
    (1)正例数据集:正例数据为训练集中的实体关系数据
    (2)反例数据:采用正例中的关系subject和关系object两两配对构建关系类型为None的数据。
    例如:古往今来,能饰演古龙小说人物“楚留香”的,无一不是娱乐圈公认的美男子,2011年,36岁的张智尧在《楚留香新传》里饰演楚留香,依旧帅得让人无法自拔。
    正例数据关系三元组:(楚留香新传,主演,张智尧),(张智尧,饰演,楚留香)
    反例数据关系三元组:(楚留香新传,None,楚留香)
    注意:关系反例中的subject和object不能相同,且关系三元组中的subject和object与正例不能相同,关系反例的数量为100

实验结果

在百度2020关系抽取数据集上,SpERT的模型的结果如下:

precision = 57.09, recall = 80.67, f1_score = 66.86

测试集上的举例结果如下:

{
"text": "《吸血鬼偶像》是李根旭指导的一部情景喜剧,集结了洪宗玄、金宇彬等众多年轻偶像,并由搞笑明星申东烨和实力演员金秀美参演配角,讲述了一个吸血鬼星球傻乎乎的王子和他的护卫们来到地球上,为了成为明星而孤军奋斗的故事",
"entity": [
{
"type": "影视作品",
"start_index": 1,
"name": "吸血鬼偶像"
},
{
"type": "人物",
"start_index": 8,
"name": "李根旭"
},
{
"type": "人物",
"start_index": 24,
"name": "洪宗玄"
},
{
"type": "人物",
"start_index": 28,
"name": "金宇彬"
},
{
"type": "人物",
"start_index": 45,
"name": "申东烨"
},
{
"type": "人物",
"start_index": 53,
"name": "金秀美"
}
],
"relation": [
{
"subject": "吸血鬼偶像",
"predicate": "导演",
"object": "李根旭"
},
{
"subject": "吸血鬼偶像",
"predicate": "主演",
"object": "洪宗玄"
},
{
"subject": "吸血鬼偶像",
"predicate": "主演",
"object": "金宇彬"
},
{
"subject": "吸血鬼偶像",
"predicate": "主演",
"object": "申东烨"
},
{
"subject": "吸血鬼偶像",
"predicate": "主演",
"object": "金秀美"
}
]
},
{
"text": "蒋明杭州杭氧股份有限公司董事长他一直主张杭氧要走自主创新的道路,把核心技术、关键技术牢牢掌握在自己手中",
"entity": [
{
"type": "人物",
"start_index": 0,
"name": "蒋明"
},
{
"type": "企业",
"start_index": 2,
"name": "杭州杭氧股份有限公司"
}
],
"relation": [
{
"subject": "杭州杭氧股份有限公司",
"predicate": "董事长",
"object": "蒋明"
}
]
}

总结

SpERT模型采用分类思想实现实体和关系抽取,其中使用了max-pooling特征,SpERT模型可以抽取出span 长度内所有可能的实体和关系。


推荐阅读
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 嵌入式处理器的架构与内核发展历程
    本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
author-avatar
我叫yyson_836
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有