事件抽取:Document-level Event Extraction via Parallel Prediction Networks

news2025/4/19 8:44:13

任务:给定一篇文章,从中提取出一个或多个结构化的事件 Y = { y i } i = 1 k Y=\{y_i\}_{i=1}^{k} Y={yi}i=1k ,其中每个事件 t t t事件类型 y i t y_{i}^{t} yit表示是,包含一系列角色 ( r i 1 , r i 2 , . . . , r i n ) (r_{i}^{1},r_{i}^{2},...,r_{i}^{n}) (ri1,ri2,...,rin),这些角色被论元 ( a i 1 , a i 2 , . . . , a i n ) (a_{i}^{1},a_{i}^{2},...,a_{i}^{n}) (ai1,ai2,...,ain)填充。
模型架构图

2.1备选论元识别

给定有 N S N_S NS个句子的文档 D = { S i } i N s D=\{S_i\}_i^{N_s} D={Si}iNs,首先进行编码得到上下文化的表示。 C i = T r a n s f o r m e r − 1 ( S i ) C_i=Transformer-1(S_i) Ci=Transformer1(Si) 给定文档的上下文感知的嵌入表示为 { C i } i = 1 N s \{C_i\}_{i=1}^{N_s} {Ci}i=1Ns
句子级别的候选论元识别堪为序列标注任务(BIO),从给定句子中 S i S_i Si得到候选论元 A = { a i } i = 1 N a A=\{a_i\}_{i=1}^{N_a} A={ai}i=1Na N a N_a Na是识别出的候选论元的个数。

2.2 文档级别的编码器

i i i个句子中的论元span [ c i , j , . . . , c i , k ] [c_{i,j},...,c_{i,k}] [ci,j,...,ci,k],执行最大池化,得到论元的局部嵌入 c i a ∈ R d c_{i}^{a}∈\mathbb{R}_{d} ciaRd。句子的嵌入类似,第 i i i个句子 C i C_i Ci,执行最大池化,得到句子嵌入 c i a ∈ R d c_{i}^{a}∈\mathbb{R}_{d} ciaRd。其中 d d d是隐藏层的尺寸。
为每个句子添加sentence position嵌入表示句子顺序,如下图。送入transformer后通过多投资注意力机制,建模所有句子和候选论元的交互,得到文档感知的句子和论元表示。
在这里插入图片描述
公式表示: [ H a ; H s ] = T r a n s f o r m e r − 2 ( c 1 a . . . c N a a ; c 1 s . . . c N s s ) [H^a;H^s]=Transformer-2(c_{1}^{a}...c^{a}_{N_a};c_{1}^{s}...c_{N_s}^{s}) [Ha;Hs]=Transformer2(c1a...cNaa;c1s...cNss)由于论元在一个文件中可能有很多提及,我们利用最大池化技术将具有相同字符级标记的多个参数嵌入合并为一个嵌入。
最终,合并后的候选论元 A ′ = { a i } i = 1 N a ′ A'=\{a_i\}_{i=1}^{N_{a}'} A={ai}i=1Na表示为 H a ∈ R N a ′ × d H^a∈\mathbb{R}^{N_{a}'×d} HaRNa×d,文档感知的句子表示 H s ∈ R N s × d H^s∈\mathbb{R}^{N_s×d} HsRNs×d
在解码之前,我们通过对 H s H_s Hs进行最大池化操作,堆叠一个线性分类器,对每个事件类型进行二元分类。

2.3 多粒度解码器

为了解决论元分散、多事件问题提出了多粒度解码器,包括事件解码器、角色解码器、事件to角色解码器三个部分。这三个粒度的解码器都是基于非自回归机制的,基于文档感知的H_a和H_s,平行生成所有可能的事件。
事件解码器
在解码前,解码器需要知道待生成事件的尺寸。文章使用了m个可学习的嵌入作为事件解码器的输入,表示为 Q e v e n t ∈ R m × d Q_{event}∈\mathbb{R}^{m×d} QeventRm×d。其中,m是超参数,表示了生成事件的数目,在实验中被设定为远大于文档中事件数目的平均值。
Event-Decoder是一个非自回归的解码器,用于平行提取所有事件。由N层相同的Transformer层堆叠而成。每一层包含两部分,多头自注意力机制建模事件间的交互,多头跨注意力机制将文档感知的表示 H s H_s Hs整合到事件查询 Q e v e n t Q_{event} Qevent中。 m m m个事件查询解码为 m m m 个输出嵌入: H e v e n t = E v e n t − D e c o d e r ( Q e v e n t ; H s ) H_{event}=Event-Decoder(Q_{event};H^s) Hevent=EventDecoder(Qevent;Hs)其中 H e v e n t ∈ R m × d H^{event}∈\mathbb{R}^{m×d} HeventRm×d
角色解码器
role decoder用于平行填充一个事件中的所有角色,建模角色间的交互。一个预测的事件类型 t t t n n n 个语义角色类型 ( r 1 , r 2 , . . . , r n ) (r_1,r_2,...,r_n) (r1,r2,...,rn),所以 Q r o l e Q^{role} Qrole n n n 个可学习的嵌入组成。与事件解码器相同,自注意力机制建模角色之间的关系,跨注意力机制融合文档感知的候选论元 H a H^a Ha表示的信息。 H r o l e = R o l e − D e c o d e r ( Q r o l e ; H a ) H^{role}=Role-Decoder(Q^{role};H^a) Hrole=RoleDecoder(Qrole;Ha)其中, H r o l e ∈ R n × d H^{role}∈\mathbb{R}^{n×d} HroleRn×d
事件to角色解码器
针对不同的事件查询(queries),为了生成多种形式的有相关论元的事件,设计了event-to-role的解码器。建模事件查询 H e v e n t H^{event} Hevent和角色查询 H r o l e H^{role} Hrole间的交互。
H e 2 r = E v e n t 2 R o l e − D e c o d e r ( H r o l e ; H e v e n t ) H^{e2r}=Event2Role-Decoder(H^{role};H^{event}) He2r=Event2RoleDecoder(Hrole;Hevent)其中, H e 2 r ∈ R m × n × d H^{e2r}∈\mathbb{R}^{m×n×d} He2rRm×n×d

2.4 事件预测

上一阶段得到了m个预测事件,每个事件包含n个角色嵌入。为了过滤掉虚假事件,通过FFN网络做二分类,判断每个事件预测是否为空。 p e v e n t = s o f t m a x ( H e v e n t W e ) p^{event}=softmax(H^{event}W_e) pevent=softmax(HeventWe)
其中, W e ∈ R d × 2 W_e∈\mathbb{R}^{d×2} WeRd×2是可学习的参数。
对于每个有预定角色的预测事件,通过用 ( N a ′ + 1 ) (N_a '+ 1) (Na+1)类分类器填补候选指数或空值来解码预测的参数(除候选论元表示 H a H_a Ha外,附加了一个可学习的嵌入来表示空值) P r o l e = s o f t m a x ( t a n h ( H e 2 r W 1 + H a W 2 ) ⋅ v 1 ) P^{role}=softmax(tanh(H^{e2r}W_1+H^aW_2)\cdot v_1) Prole=softmax(tanh(He2rW1+HaW2)v1)其中, W 1 ∈ R d × d W_1∈\mathbb{R}^{d×d} W1Rd×d W 2 ∈ R d × d W_2∈\mathbb{R}^{d×d} W2Rd×d v 1 ∈ R d v_1∈\mathbb{R}^{d} v1Rd都是可学习参数, P r o l e ∈ R m × d × ( N a ′ + 1 ) P^{role}∈\mathbb{R}^{m×d×(N_a '+ 1)} ProleRm×d×(Na+1)
在预测网络之后,得到了 m m m个事件, Y ^ = ( Y ^ 1 , Y ^ 1 , . . . , Y ^ m ) \hat Y=(\hat Y_1,\hat Y_1,...,\hat Y_m) Y^=(Y^1,Y^1,...,Y^m),其中, Y ^ i = ( P i 1 , P i 2 , . . . , P i n ) \hat Y_i=(P^1_i,P_i^2,...,P_i^n) Y^i=(Pi1,Pi2,...,Pin)包含 n n n个预测论元,其中 P i j = P r o l e [ i , j , : ] ∈ R N a ′ + 1 P_i^j =P^{role}[i,j,:]∈\mathbb{R}^{N_a'+1} Pij=Prole[i,j,:]RNa+1

2.5 匹配损失

训练过程中,如何将预测的 m m m个事件和一系列论元指派给真实的 k k k个事件,受启发于匈牙利算法提出了匹配损失,可以在预测和真实事件间产生最优二分匹配。
预测事件( m m m是固定的生成事件的数量): Y ^ = ( Y ^ 1 , Y ^ 1 , . . . , Y ^ m ) \hat Y=(\hat Y_1,\hat Y_1,...,\hat Y_m) Y^=(Y^1,Y^1,...,Y^m)
真实事件( k k k是文档中的真实事件数量): Y = ( Y 1 , Y 2 , . . . , Y k ) Y=(Y_1,Y_2,...,Y_k) Y=(Y1,Y2,...,Yk)
m ≥ k m≥k mk,这里 m m m是2.4提到的超参数,在代码中表示为num_generated_sets。第 i i i个预测事件表示为 Y ^ i = ( P i 1 , P i 2 , . . . , P i n ) \hat Y_i=(P^1_i,P_i^2,...,P_i^n) Y^i=(Pi1,Pi2,...,Pin)。第 i i i个真实事件表示为 Y i = ( r i 1 , r i 2 , . . . , r i n ) Y_i=(r_i^1,r_i^2,...,r_i^n) Yi=(ri1,ri2,...,rin)
σ ^ = arg ⁡ max ⁡ σ ∈ Π ( m ) ∑ i m C m a t c h ( Y ^ σ ( i ) , Y i ) \hat\sigma=\mathop{\arg\max}\limits_{\sigma\in\Pi(m)}\sum_{i}^mC_{match}(\hat Y_{\sigma(i)},Y_i) σ^=σΠ(m)argmaximCmatch(Y^σ(i),Yi)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/456881.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

构建高效数据中台——数据只有被使用起来,才能创造价值

产品经理们时常会碰到这种问题: 我刚上线一个功能,请研发同志们帮我拉个数据出来分析,却被残酷告知需要排期。 我这里急得跺脚,但也只能理解。 数据研发们每天有查不完的数据和写不完的表,业务部门要的数据迟迟拿不到&…

ABAP SM30自定义搜素帮助,且带出相关描述,也可回车带出。

本篇文章用SM30字段BUKRS带出BUTXT为例。 MODULE zfzhdm_f4help INPUT.DATA: lt_dynpfields1 TYPE STANDARD TABLE OF dynpread,ls_dynpfields1 TYPE dynpread,lt_return1 TYPE STANDARD TABLE OF ddshretval,ls_return1 TYPE ddshretval,lv_povstepl1 TYPE sy-stepl…

引领文旅新体验!实时云渲染助力打造“永不落幕”的湾区文采会元宇宙

2022年11月25日至27日,2022年粤港澳大湾区公共文化和旅游产品(东莞)采购会(简称“湾区文采会”)在广东省东莞市文化馆举行。 文采会期间,文采会元宇宙线上虚拟展厅全新亮相,这艘承载着科技与文化…

优秀的FAQ示例及FAQ页面制作技巧

在网页中问答设计中,虽然说客服会话更有人情味、解决效率更高,但从实际的客户使用情况和使用偏好来看,越来越多的人更喜欢自助服务。数据显示,约67%的受访者会优先选择自助服务,91%的客户使用过帮助中心来解决问题。可…

python进阶知识点汇总

一、函数 1、函数的传参: (1)值传递:将实际的参数复制一份传递给形参,函数中修改形参时,不会影响到实际参数; def a(b,c2):return bcprint(a(10)) print(a(123,2)) print(a(2))(2…

Gitlab添加组、创建用户和项目、权限管理

一、创建组 1、使用root管理员权限来创建组,一个组里面包含多个项目分支,可以将用户来添加到组里进行设置权限,不同的组有不同的权限。 2、输入群组名称、描述、和可见性级别,点击创建群组 二、创建用户 1、普通用户只能访问属于…

静态路由综合实验

目录 实验要求 实验步骤 1.子网划分 2.配置IP和环回 3.配置静态路由,实现全网可达 4.配置缺省路由,使R1-R4可以访问5.5.5.5/24 5.配置空接口防环 6.ping测试 实验要求 1.除R5的环回地址固定以外,整个其他所有网段基于192.168.1.0/2…

【C++】二叉搜索树BST

目录 1.二叉搜索树的性质2.二叉搜索树功能的实现1.二叉搜索树的框架2.插入3.查找4.删除(难点)解析 3.二叉搜索树功能的递归实现1.查找递归实现2.插入递归实现递归形式中新建节点的链接问题 3.删除的递归实现 4.二叉搜索树部分默认成员函数实现1.构造函数…

SpringBoot(8)日志监控

日志监控 监控的意义使用监控监控原理 自定义监控指标Metrics端点自定义端点 监控的意义 监控服务状态是否宕机监控服务运行指标(内存,虚拟机,线程,请求等)监控程序运行日志管理服务(服务上下线) 监控的实施方式 1.显示监控信息的服务器&am…

低功耗设计方法学——篇Ⅱ

引言 低功耗设计关乎ASIC芯片的性能稳定。对ASIC 特别是一些Soc芯片的设计有着重要的影响,随着集成规模的大幅度增加,芯片自身的功耗问题暴露也越来越明显。低功耗设计的需求和必要性也越来越值得关注。本文就《Low Power Methodology Manual For Syste…

逍遥自在学C语言 | 赋值运算符

前言 在C语言中,赋值运算符用于将一个值赋给变量 这个过程分为两个步骤: 计算赋值运算符右侧的表达式将结果赋给左侧的变量。 C语言提供了多个不同的赋值运算符,包括基本的赋值运算符、复合赋值运算符以及条件赋值运算符等 一、人物简介…

LeetCode121 买卖股票的最佳时机 遍历法和动态规划

题目地址:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/ 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股…

Python爬虫之MongoDB

目录 一、Mongo概述 二、安装&下载 1.下载: 2.安装 三、基本命令 插⼊数据 查询数据 修改数据 删除数据 索引 四、Python与MongoDB交互 1.安装pymongo 2.使⽤ 一、Mongo概述 MongoDB是什么? MongoDB是⾮关系型数据库(No sql) 为啥需要…

无线传感网络课程作业 1-dijkstra算法计算最短路径并输出经过的节点

无线传感网络课程作业 1 仅供参考-如有需要可订阅专栏 题目有如下网络图: abc三个数以a=3,b=1,c=1为例 运行环境:anaconda3环境管理工具,Python 3.9.12,Windows 10 22H2算法实现原理流程i).

Java——二叉搜索树的后序遍历序列

题目链接 牛客在线oj题——二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。 数据范围: 节点数量 0≤n≤1000 …

PLECS的基本介绍

PLECS的基本介绍 一:PLECS的基本介绍简单说明二:多功能的辅助工具三:主要功能介绍1、独特的热分析功能2、功能强大的示波器3、极快的仿真速度4、强大的波形分析工具5、C 语言控制器6、丰富的元件库 一:PLECS的基本介绍简单说明 1&…

QMS-云质说质量 - 7 IATF 16949哪个条款严重不符合项最多?

云质QMS原创 转载请注明来源 作者:王洪石 引言 AIAG 《质量2020》报告的数据是否让你惊讶? AIAG与德勤合作发布的汽车行业《质量2020》报告指出,"OEMs和供应商都将问题解决和CSR(Customer Specific Requirement顾客特定要求…

What...MiniGPT-4居然开源了,提前感受 GPT-4 的图像对话能力

说在前面的话: 一个月前,OpenAI向外界展示了GPT-4如何通过手绘草图直接生成网站,令当时的观众瞠目结舌。 在GPT-4发布会之后,相信大家对ChatGPT的对话能力已有所了解。圈内的朋友们应该已经亲身体验过无论是文本生成、编写代码&…

涨点技巧:基于Yolov5/Yolov7的困难样本挖掘---LRM loss,提升难样本检测精度

1.hard example mining(困难样本挖掘)✨✨✨ 困难例挖掘方法通常可以提高目标检测器的性能,因为它受到不平衡训练集的影响。为了通过RoI正确地挖掘困难例,引入了在线困难例挖掘(OHEM)方法[15]。该方法建议只考虑对反向传播最有利的RoI。给出最高损失值的RoI被认为是最难的…

【汽车品牌案例 Objective-C语言】

一、刚才,我给大家说了一下这个单元格的重用,接下来,我给大家再做一个案例, 1.再做一个什么案例呢,还是显示那个汽车品牌, 咱们上午是不是做过一个那个汽车品牌的展示了,做过那个展示,那是简单的一个展示,咱们再做一个,使用另外一个不同的一个plist文件,car_total.…