热门标签 | 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 长度内所有可能的实体和关系。


推荐阅读
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 该问题可能由守护进程配置不当引起,例如未识别的JVM选项或内存分配不足。建议检查并调整JVM参数,确保为对象堆预留足够的内存空间(至少1572864KB)。此外,还可以优化应用程序的内存使用,减少不必要的内存消耗。 ... [详细]
  • 题目链接:https://www.luogu.com.cn/problem/P6453在解决 COCI 2008-2009 第四轮 PERIODNI 问题时,我们需要逐行分析。由于一行中的字符若被断开则不再视为同一行,因此每行的最大矩形区域需要单独计算。通过这种方法,可以确保每层都能找到其最大连续子矩形,从而有效解决问题。 ... [详细]
  • 如何在C#中配置组合框的背景颜色? ... [详细]
  • 脑机接口技术在物联网行业中的应用与前景分析
    近期,国际研究人员开发了一种轻便的脑电图(EEG)采集与信号处理系统,并在物联网领域进行了初步应用研究。该系统配备了8个可扩展的采集电极和1个参考电极,具备高灵敏度的放大功能,能够有效捕捉和处理脑电信号。通过与物联网技术的结合,该系统有望在智能家居、健康监测和人机交互等领域发挥重要作用,展现出广阔的应用前景。 ... [详细]
  • 在Ubuntu上安装MySQL时解决缺少libaio.so.1错误及libaio在MySQL中的重要性分析
    在Ubuntu系统上安装MySQL时,遇到了缺少libaio.so.1的错误。本文详细介绍了如何解决这一问题,并深入探讨了libaio库在MySQL性能优化中的重要作用。对于初学者而言,理解这些依赖关系和配置步骤是成功安装和运行MySQL的关键。通过本文的指导,读者可以顺利解决相关问题,并更好地掌握MySQL在Linux环境下的部署与管理。 ... [详细]
  • 开发日志:201521044091 《Java编程基础》第11周学习心得与总结
    开发日志:201521044091 《Java编程基础》第11周学习心得与总结 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 本文深入探讨了C#中的反射与特性功能。首先,介绍了反射的基本概念,即通过元数据(包括类的方法、属性和字段等)在运行时动态获取和操作程序信息的能力。此外,还详细解析了特性的使用方法及其在代码注解和元数据扩展中的重要作用,为开发者提供了丰富的编程技巧和实践指导。 ... [详细]
  • Java学习第10天:深入理解Map接口及其应用 ... [详细]
  • 第六章:枚举类型与switch结构的应用分析
    第六章深入探讨了枚举类型与 `switch` 结构在编程中的应用。枚举类型(`enum`)是一种将一组相关常量组织在一起的数据类型,广泛存在于多种编程语言中。例如,在 Cocoa 框架中,处理文本对齐时常用 `NSTextAlignment` 枚举来表示不同的对齐方式。通过结合 `switch` 结构,可以更清晰、高效地实现基于枚举值的逻辑分支,提高代码的可读性和维护性。 ... [详细]
  • 如何精通编程语言:全面指南与实用技巧
    如何精通编程语言:全面指南与实用技巧 ... [详细]
  • 本文将继续探讨 JavaScript 函数式编程的高级技巧及其实际应用。通过一个具体的寻路算法示例,我们将深入分析如何利用函数式编程的思想解决复杂问题。示例中,节点之间的连线代表路径,连线上的数字表示两点间的距离。我们将详细讲解如何通过递归和高阶函数等技术实现高效的寻路算法。 ... [详细]
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社区 版权所有