金融领域文档级别事件抽取-Doc2EDAG: An End-to-End Document-level Framework for Chinese Financial Event Extract

该论文来自EMNLP2019、清华&微软研究院、源码&数据集【1】已开源github:Doc2EDAG
paper地址:paper原文
金融领域数据有以下两种特征:
① 事件元素分散(Arguments-scattering):指事件论元可能在不同的句子(Sentence)中。
② 多事件(Muti-event):指一个文档中可能包含多个事件。
由于Sentence-level级别的事件抽取模型不能很好的处理一个句子中有多个事件的情况,本文提出一个
文档级别的金融领域事件抽取模型
(Doc2EDAG),该模型的核心思想是将文档级别的事件表填充任务(Document-level Event table filling,DEE)转化为基于实体的有向无环图的路径扩展任务(Entity-based directed acyclic graph,EDAG)。该模型将Document-level级别的context进行编码,并设计了一个记忆机制进行图路径扩展。为缓解远程监督标注时的错误,该模型忽略掉触发词标注(trigger-words labeling),忽略触发词标注可以省略掉触发词预定义和启发式生成触发词(对于没有触发词的句子,从预定义的触发词集合中启发式生成一个触发词)。
关键概念:
实体(entity):实体对象的文本跨度
事件角色(entity role):对于事件表的预定义字段
事件参数(event argument):事件参数是扮演特定事件角色的实体
事件记录(event record):一个事件记录对应于事件表的一个条目,并包含几个具有所需角色的参数

DEE Task Without Trigger Words(无触发词的DEE任务):
① Entity extraction: 提取实体作为参数候选
② Event detection: 判断文档是否针对每个事件类型触发(二分类)
③ Event table filing: 将参数填充到触发事件表中
Doc2EDAG task:
Doc2EDAG任务的思想是将事件表填充任务转化为EDAG的路径扩展任务。
该任务有两个核心步骤:
①文档级别的实体编码(document-level entity encoding)
②有向无环图的生成(EDAG generation)

根据预定义的事件角色(Event role)顺序生成EDAG的过程如下图所示:

Doc2EDAG的工作流程,下图的流程对应Figure3的图扩展过程。

事件表填充(event table finling)案例:

Document-level entity encoding:
在进行文档级别的实体编码之前要先将句子进行embedding并识别句子中的entity。本文将一个文档视为一个sentence使用Transformer-1编码,使用BI-LSTM-CRF进行句子级别的实体识别。
Entity&Sentence Embedding:
将所有的实体和句子进行embedding,并分别使用最大池化操作获得固定维度的向量。
Document-level Encodeing:
为所有已经编码的entity和sentence添加句子位置编码(sentence position embedding)并送入transformer-2获得文档级别的entity mention和sentence embedding。在该步骤使用max-pooling合并名称相同的实体。
EDAG Generation:
(1) 首先使用线性分类器对每个event type进行事件触发分类(event-triggering classification,二分类任务)。
(2) 为每个已分类的event type按照预定义的event role顺序创建EDAG,图节点对应entity或NA(NA表示当前sentence没有与当前event role匹配的实体)。创建完成的EDAG每条完整路径对应event table中的一条事件记录。
(3) 为了记录当前实体是否已经被添加到EDAG中,本文为每个句子创建一个记忆向量m,当句子中的entity或NA被添加到EDAG中时就更新对应位置的m向量值。
Path Expanding:
该任务被视为一个二分类任务,即判断某个实体是否对应当前顺序下的event role,如果是就将该实体添加到EDAG中,如果没有任何实体能与当前event role匹配则将NA添加到EDAG中。
该步骤将对应位置的记忆向量m与entity进行拼接,并添加一个额外的可训练的实体角色指示向量(event-role indicator embedding)送入transformer-3进行encoding,然后从transformer-3的output得到一个enriched entity embedding,最后将此enriched entity embedding送入分类器进行分类。
实验:
本文构建了一个金融领域文档级别的事件抽取数据集(原数据来自),实验预定义了五类event type:股权冻结Equity Freeze (EF), 股权回购Equity Repurchase (ER), 股权减持Equity Underweight (EU), 股权增持Equity Overweight (EO) and 股权解押Equity Pledge (EP)。
为了降低error-propagation,模型训练过程中采用**计划采样【2】**方式(scheduled sampling)进行迭代训练,计划 采样是指训练网络时不完全采用真实序列作为下一步的输出,而是以一个概率p选择真实标记,以1-p概率选择模型输出,p是变化的,开始训练时p较大,模型训练越充分p越小[3]。
实验结果:
S:single-event
M:multi-event

关注我的微信公众号,一起变得更强:

参考:
[1] https://github.com/dolphin-zs/Doc2EDAG
[2] Samy Bengio, Oriol Vinyals, Navdeep Jaitly, and Noam Shazeer. 2015. Scheduled sampling for sequence prediction with recurrent neural networks. In NIPS.

全部评论

相关推荐

最近群里有很多同学找我看简历,问问题,主要就是集中在明年三月份的暑期,我暑期还能进大厂嘛?我接下来该怎么做?对于我来说,我对于双非找实习的一个暴论就是title永远大于业务,你在大厂随随便便做点慢SQL治理加个索引,可能就能影响几千人,在小厂你从零到一搭建的系统可能只有几十个人在使用,量级是不一样的。对双非来说,最难的就是约面,怎么才能被大厂约面试?首先这需要一点运气,另外你也需要好的实习带给你的背书。有很多双非的同学在一些外包小厂待了四五个月,这样的产出有什么用呢?工厂的可视化大屏业务很广泛?产出无疑是重要的,但是得当你的实习公司到了一定的档次之后,比如你想走后端,那么中厂后端和大厂测开的选择,你可以选择中厂后端(注意,这里的中厂也得是一些人都知道的,比如哈啰,得物,b站之类,不是说人数超过500就叫中厂),只有这个时候你再去好好关注你的产出,要不就无脑大厂就完了。很多双非同学的误区就在这里,找到一份实习之后,就认为自己达到了阶段性的任务,根本不再投递简历,也不再提升自己,玩了几个月之后,美其名曰沉淀产出,真正的好产出能有多少呢?而实际上双非同学的第一份实习大部分都是工厂外包和政府外包!根本无产出可写😡😡😡!到了最后才发现晚了,所以对双非同学来说,不要放过任何一个从小到中,从中到大的机会,你得先有好的平台与title之后再考虑你的产出!因为那样你才将将能过了HR初筛!我认识一个双非同学,从浪潮到海康,每一段都呆不久,因为他在不断的投递和提升自己,最后去了美团,这才是双非应该做的,而我相信大部分的双非同学,在找到浪潮的那一刻就再也不会看八股,写算法,也不会打开ssob了,这才是你跟别人的差距。
迷茫的大四🐶:我也这样认为,title永远第一,只有名气大,才有人愿意了解你的简历
双非本科求职如何逆袭
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务