码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
文本关键信息抽取-面向复杂文本结构的实体关系联合抽取研究(论文研读)(二)
面向复杂文本结构的实体关系联合抽取研究
4具有关系导向注意力机制的联合抽取模型
4.1问题描述
4.3所提模型与理论
4.3.1上下文特征提取层
4.3.2关系导向层
4.3.3特征分类层
4.3.4损失函数
4具有关系导向
注意力机制
的联合抽取模型
本章介绍实体关系联合抽取模型:具有关系导向注意力机制的联合抽取模型(Relation-GuidedAttentionMechanismModelinJointExtractionofEntitiesandRelations,Joint-RGA)。Joint-RGA首先通过上下文提取层得到输入句子的序列特征和区域特征。由于每个关系子空间下的句子表示是不同的,因此,Joint-RGA通过关系导向层为每种关系构造新句子表示。最后,在特征分类层使用多头注意力机制和BiGRU来捕获特定关系下句子上下文信息,从而抽取出句子中的三元组。
4.1问题描述
如3.1章节所述,关系抽取任务会面临重叠三元组的问题,这一问题对联合抽取模型产生了极大的困扰。在3.3章节中介绍了Joint-GNAA联合抽取模型,该模型使用二阶段的GCN特征编码器提取句子特征,并通过公式(3.31)建立二维关系标签映射矩阵,从而提取每个单词对的关系。但是Joint-GNAA存在一个问题,即通过softmax对二维关系标签映射矩阵进行概率打分,矩阵中每个位置只会生成一个数值。对于双实体重叠三元组来说,单词对存在多个关系,而二维矩阵只能表示一个关系,因此Joint-GNAA无法完全抽取双实体重叠类型的三元组。为了进一步的解决双实体重叠问题,本章提出了基于关系导向注意力机制的联合抽取算法,在独立关系空间下进行实体序列标注,不同关系空间的实体互不冲突,通过这种思想使得模型具有抽取双实体重叠三元组的能力。
4.3所提模型与理论
本章提出的基于关系导向注意力机制的联合抽取算法架构如图4-2所示,它由以下三个部分组成:(1)上下文特征提取层:通过BiGRU、CNN和BiGCN编码器来提取句子的多粒度特征表示和区域特征表示。(2)关系导向层:同一个词语在不同关系子空间下的特征信息有所不同,关系导向层旨在为每个关系重新构建一个新的句子表示。它由两个部分组成,即关系导向注意力机制和关系门控机制。其中关系导向注意力机制通过关系向量和上下文平均向量计算每个单词的关系权重系数,最后通过加权平均得到新的句子表示。关系门控机制类似于LSTM的门控机制,旨在通过自适应的学习来保留对当前关系子空间有利的信息。(3)特征分类层:特征分类层旨在对每种关系下的句子表示进行解码。首先通过多头注意力机制和BiGRU提取该关系空间下单词的语义特征。然后通过CRF层来约束实体标签之间的逻辑依赖。最后通过激活函数将特征信息映射到预定义的实体标签集合中进行头尾实体的标注。
4.3.1上下文
特征提取
层
输入一个文本序列{x1,x2,x3…xn},上下文特征提取层的任务是充分捕获句子的语义特征信息。不同于Joint-GNAA模型的上下文提取层,本章在上下文字词嵌入、字符嵌入和词性嵌入的基础上添加了位置嵌入以及中文偏旁部首嵌入。1.多特征嵌入层BiGRU能够融合前向和后向的信息,因此可以更好的提取特征信息。BiGRU根据更新门和重置门控制特征的流动,拼接前向和后向GRU特征输出作为BiGRU最终的状态表示ht:
2.BiGCN层
为了在句子表示中融入图结构依赖信息,和章节3.3.2一样,使用句法解析工具spacy创建一个依存树,最后将依存树作为输入语句特征信息的邻接矩阵,并使用GCN提取区域依存特征。BiGCN同时考虑了单词节点的传入和传出信息。GCN的节点特征传播计算方式如下:
4.3.2关系导向层
序列中每个单词在不同的关系空间下的特征表示是不同的,因此,建立单词到关系子空间的映射可以识别出所有关系下的实体对,通过方式可以解决重叠三元组的问题。
1.关系导向注意力机制
给定一个输入序列,序列中可能包含多个实体关系三元组。对于每种关系而言,每个单词对于该关系所扮演的角色是不同的,针对每种关系类型重新构造一个新的句子表示,可以捕获对在该关系下具有较大权重单词的信息。关系导向注意力机制首选通过对输入序列的特征向量求和平均得到句子平均向量sg,然后通过激活函数以及归一化操作得到每个单词的注意力得分eik,具体计算方式如下:
2.关系门控机制
关系导向注意力机制为每种关系构造新的句子表示,但同时也会引入冗余的信息。在处理序列文本时,LSTM利用门控机制来避免依赖问题,通过遗忘门将无用的信息进行舍弃。关系门控机制的作用和LSTM门控相同,通过端到端的训练学习每个关系下的句子表示,保留对于实体标注任务有帮助的信息,舍弃干扰信息。具体公式如下:
4.3.3特征分类层
输入句子的表示在经过关系导向层之后,保留了每个单词在当前关系下对实体标注有帮助的信息。为了更进一步的融合基于关系的表示信息,将关系导向层的输出输送到多头注意力中,进行自适应的语义融合。多头注意力采用多个“头”的结构,每个头所关注的映射空间是独立的,因此能够在不同的维度上进行特征融合。多头注意力机制的计算方式如下:
赋予模型更好的泛化能力。将当前的输入以及上一个时间步的隐藏状态作为计算单元的输入,然后拼接两个方向的隐藏状态作为最终的句子表示输出Gk:
经过BiGRU层得到关系K的句子表示Gk后,虽然可以直接通过全连接层输出每个单词的实体标签,但是由于标签之间存在着约束规则,全连接层线性变换无法解码标签之间的依赖性。为了充分利用标签之间的依赖信息,本文引入条件随机场(CRF)来提取标签之间的关联信息。对于实体标注来说,输入句子中的字符可以被标识为“头实体字符”、“中间实体字符”、“结尾实体字符”和“其他”,如果一个字符被标记为“中间实体字符”,那么它的前一个字符不可能出现“结尾实体字符”和“其他”的标记。这种规则的约束不仅可以降低实体标注的错误率,同时还可以增加实体单词内部之间的交互性。CRF通过计算序列的分布式表示构建概率图模型,在解码的过程中将所有的输入考虑在内,融入标签之间的依赖信息,增加实体标注的准确度。
4.3.4损失函数
一个句子虽然可能包含多个关系三元组,但是句子中出现的关系总数仍远远小于预定义的关系集合。如果在特征分类层对所有的关系种类进行解码,将会产生大量的负样本,使得模型收敛速度缓慢。因此,Joint-RGA使用负关系样本策略对模型进行训练,即每次解码时从当前输入的句子中随机选择nneg个负关系样本。对于负样本关系,将所有单词的实体标签标记为“非实体”。关系rk下的序列标签为:
使用负对数似然损失函数(NLL)来对模型的参数进行训练,损失函数计算公式如下:
相关阅读:
go入门快速学习笔记(有java基础)
中国防腐漆行业竞争态势与供需趋势预测报告2022-2028年
Java数据类型
【第八篇】- Maven 构建 Java 项目
flutter系列之:flutter中常用的ListView layout详解
JS实现鼠标拖动
Vue组件间传值
JavaScript 之数组的方法使用
NVDIA GPU参数列表: 3090,4090, A40, A30,V100, A100, A800性能参数
Elasticsearch:使用 Langchain 和 OpenAI 进行问答
原文地址:https://blog.csdn.net/qq_38978225/article/details/127784713
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号