金融评测任务

CCKS2019

Posted by Wwt on May 22, 2019

任务描述

本文是对CCKS的一个评测任务进行介绍,并介绍了其中一个baseline系统。

“事件识别”是舆情监控领域和金融领域的重要任务之一,“事件”在金融领域是投资分析,资产管理的重要决策参考。“事件识别”的复杂性在于事件类型和事件主体的判断,比如“公司A产品出现添加剂,其下属子公司B和公司C遭到了调查”,对于“产品出现问题”事件类型,该句中事件主体是“公司A”,而不是“公司B”或“公司C”。我们称发生特定事件类型的主体成为事件主体,本任务中事件主体范围限定为:公司和机构。事件类型范围确定为:产品出现问题、高管减持、违法违规…

本次评测任务的主要目标是从真实的新闻语料中,抽取特定事件类型的主体。即给定一段文本T,和文本所属的事件类型S,从文本T中抽取指定事件类型S的事件主体。

输入:一段文本,事件类型S

输出:事件主体

示例:

​ 样例1

​ 输入:”公司A产品出现添加剂,其下属子公司B和公司C遭到了调查”,”产品出现问题”

​ 输出:”公司A”

​ 样例2

​ 输入:”公司A高管涉嫌违规减持”,”交易违规”

​ 输出:”公司A”

模型

这种事件抽取任务是偏向于检索匹配以及初步的语义理解技术。实际上这个比赛就是阅读理解竞赛SQUAD 1.0的简化版:它要输入”一段文本”+”事件类型”,输出文本中的实体,如果将”事件类型”看出问题,将”一段文本”看作是篇章,那么它就跟squad 1.0的格式一模一样了,任何squad的模型都可以简化用到这个问题上。本文采用BiLSTM+指针结构标注实体

结构图

1

1. 模型对事件类型进行向量化得到"类型编码",然后拼接到输入文本中的每一个词向量
2. 将最后的预测转化为了一个序列标注任务,改为"0/1标注"来分开识别答案的开始和终止位置,这可以看成一种"半指针半标注"的结构

BiLSTM

模型中输入一段文本和事件类型,事件类型作为特征,和文本中的每个词进行向量相加。然后输入到双向LSTM中,通过对序列前向和后向进行编码,捕获长远距离依赖关系。模型使用了两个双向LSTM层,然后将隐层向量输出至自注意力层。

注意力

本文的模型中,自注意力层主要对序列进行全新编码,这里的Attention来源于《Attention is all you need》。通过计算序列中词与每个词的相似度,这样的过程重复h次,最后将h次的结果拼接起来,可以从不同的表示空间学习到相关信息。

输出设计

到现在,模型的整体结构应该已经呈现出来了。我们通过双向LSTM和自注意力把输入文本编码为一个固定维度的向量,这个向量中融合了事件类型特征。这时候我们得到了一个混合输入文本、事件类型的特征序列,直接对这个序列进行处理即可,将编码后的序列向量拼接事件类型特征向量,直接对序列进行标注。

既然用到标注,那么理论上最简单的方案是输出一个0/1序列:直接标注出材料中的每个词”是(1)”或”否(0)”答案。然而,这样的效果并不好,因为一个可能由连续多个不同的词组成,要让模型将这些不同的词都有同样的标注结果,有可能”强模型所难”。于是我们还是用两次标注的方式,来分别标注答案的开始位置和终止位置。

这样一来,模型的输出设计跟指针方式和纯序列标注都不一样,或者说是两者的简化及融合。

部分参数

词向量的维度为128,由官方提供的训练语料。

自注意力层的输出维度也为128维

模型使用的多分类损失函数

用adam优化器进行训练,学习速率设置为$10^{-3}$

参考

基于CNN的阅读理解式问答模型:DGCNN

开源代码