接上一篇知识抽取-实体及关系抽取。
事件是 促使事情状态和关系改变的条件 [Dong et.al., 2010]。目前已存在的知识资源(如维基百科等) 所描述实体及实体间的 关系大多是静态的 ,而事件能描述 粒度更大的、动态的、 结构化的知识 ,是现有知识资源的重要补充。
与[关系抽取]相比,事件抽取同样需要从文本中 抽取 predicate 和对应的 arguments ,但不同的是,关系抽取的问题是 binary 的,且两个 arguments 通常都会在同一个句子中出现,而事件抽取的难点在于,有 多个 arguments 和 modifiers *,可能会分布在多个句子中,且有些 arguments 不是必须的,这使得 bootstrapping/distant learning/coreference 都变得非常困难。
整体而言,事件抽取的任务可以分两大类:
本文的重点在于事件识别与抽取。首先看一下相关的核心概念:
直观上来看,可以把事件抽取的任务理解成从文本中 找到特定类别的事件 ,然后进行填表的过程。
严肃些看下事件识别和抽取的任务定义:
也就是说,事件抽取任务最基础的部分包括:
当然还有一些其他的子任务包括事件属性标注、事件共指消解等。
事件抽取大多是分阶段进行,通常由 trigger classifier 开始,如果有 trigger, 把 trigger 以及它的上下文作为特征进行分类 判断事件类型,再进行下一步的 argument classifier ,对句子中的 每个 entity mention 进行分类 ,判断是否是 argument,如果是, 判定它的角色 。
MUCs 最开始,事件抽取的系统都是 基于人工编写的规则,基于语法树或者正则表达式 ,如 CIRCUS (Lehnert 1991), RAPIER (Califf &Mooney 1997), SRV (Freitag 1998), AutoSlog (Riloff 1993), LIEP (Huffman 1995), PALKA (Kim &Moldovan 1995), CRYSTAL (Soderland et al. 1995), HASTEN (Krupka 1995) 等等,后来,慢慢的有了监督学习的模型,在 ACE 的阶段,大多数系统都是基于监督学习了,但由于标注一致性的问题,系统的效果普遍较差,ACE 事件抽取只举行了一次,在 2005 年。
下面先来看一下基于模板的抽取方法,基本都是通过 句法(syntactic) 和 语义约束(semantic constraints) 来进行识别。
在早期,模板创建过程通常从一个大的标注集开始,模板的产生 完全基于人工标注语料 ,学习效果高度依赖于 人工标注质量 。
人工标注耗时耗力,且存在一致性问题,而弱监督方法不需要对语料进行完全标注,只需 人工对语料进行一定的预分类或者制定种子模板 ,由机器根据 预分类语料或种子模板自动进行模式学习 。
基于模式匹配的方法在 特定领域中性能较好 ,知识表示简洁,便于理解和后续应用,但对于语言、领域和文档形式都有不同程度的依赖, 覆盖度和可移植性较差 。
模式匹配的方法中, 模板准确性 是影响整个方法性能的重要因素。在实际应用中,模式匹配方法应用非常广泛,主要特点是 高准确率低召回率 ,要提高召回率,一是要建立更完整的模板库,二是可以用半监督的方法来建 trigger 字典。
建立在统计模型基础上,事件抽取方法可以分为 pipeline 和 joint model 两大类。
将事件抽取任务转化为 多阶段的分类问题 (管道抽取),需要顺序执行下面的分类器:
分类器可以用 MaxEnt, SVM。重点还是在于提取和集成有区分性的特征,包括 **句子级信息 **和 篇章级信息 。
句子级信息:与候选词相关的 词法特征、上下文特征、实体特征、句法特征、语言学特征 等,如:
篇章级特征:
跨文档利用全局信息。对于一个句子级的抽取结果不仅要考虑当前的置信度,还要考虑与待抽取文本相关的文本对它的影响,以及全局信息如事件与话题的关系,事件与事件的共现信息等,主要工作有:
早期大部分的研究都是基于 Pipeline 方法,然而它的问题也很明显:
又分为 Joint Inference 和 Joint Modeling 两种。
Joint Inference
使用集成学习的思路,将各模型通过 整体优化目标整合起来 ,可以通过 整数规划 等方法进行优化。
Joint Modeling (Structured)
又可以称为基于结构的方法,将事件结构看作依存树,抽取任务 相应转化为依存树结构预测问题 ,触发词识别和元素抽取可以 同时完成 ,共享隐层特征,使用搜索进行求解,避免了误差传播导致的性能下降,另外,全局特征也可以从整体的结构中学习得到,从而使用全局的信息来提升局部的预测。相关工作有:
尽管 Li 等人的联合系统优势明显,但在未见词和特征上缺乏泛化, 人工提取的特征集是离散表达 ,能力有限。
几种方法的 trigger 和 argument 抽取结果,可以看出,实体之间协同消歧对效果提升非常明显
上面的方法在特征提取过程中还是会依赖依存分析、句法分析、词性标注等传统的外部 NLP 工具,还是会造成误差积累,另外有些语言和领域并没有这类处理工具,加之特征也需要人工设定,2015 年起基于深度学习的事件抽取方法逐渐成为研究热点,相比于传统机器学习,深度学习方法优势明显:
Event Extraction via Dynamic Multi-Pooling Convolutional Neural Networks Yubo Chen et. al., ACL 2015
自然语言处理中,传统 CNN 使用的最大池化对一个 feature map 只能得到一个最大值,这对事件抽取并不适用,因为事件抽取中一个句子中可能会包含多个事件,一个 argument candidate 在不同的 trigger 下也会扮演不同的角色,传统的最大池化只保留“最重要”的信息,而丢失的信息会导致 multiple-event sentence 下的事件漏分。DMCNN 使用 动态多池化卷积 能实现对 一个句子中不同部分的最大值获取 ,以保留更多有价值的信息,逻辑和 PCNN 相似。
DMCNN 作者把事件抽取看做两个阶段的多分类任务,第一步是 触发词分类(trigger classification) ,利用 DMCNN 对句子中每个词进行分类,判断是否是触发词,如果句子中存在触发词,执行第二步 论元分类(argument classification) ,同样使用 DMCNN,给 trigger 分配 arguments,同时匹配 arguments 到 role,以第二个任务为例介绍一下过程。
主要包括四个部分,以 argument classification 为例:
Trigger classification 阶段:
DMCNN的表现:
DMCNN 的效果是突破性的,但分两个阶段的预测 仍有误差传递的问题 ,也没有利用好 trigger 和 argument 之间的依赖关系 。
JRNN: Joint Event Extraction via Recurrent Neural Networks, ACL 2016
Nguyen et.al., 2016 通过 RNN 用联合方法解决时间抽取的问题,继承了 Li (2013) 和 Chen (2015) 的优点,并克服了它们的一些缺陷。
有监督的方法需要大量的标注样本,人工标注耗时耗力,还存在一致性的问题,因此 弱监督方法也是事件抽取的一个重要分支 。
Chen 等提出利用部分高质量的标注语料训练分类器,然后利用初步训练好的分类器判断未标注的数据,选取 高置信度的分类样本作为训练样本 ,通过迭代自动扩充训练样本[Chen and Ji, 2009]。Liao 等在相关文档中使用自训练的(Self-Training)的半监督学习方法扩展标注语料,并利用全局推理的方法考虑样例的多样性进而完成事件抽取;进一步提出同时针对词汇和句子两个粒度训练最大熵分类器,并用协同训练(Co-training)的方法扩展标注数据,进而对分类器进行更充分的训练[Liao and Grishman, 2011a2011b]。
而目前,弱监督/训练数据生成方面比较流行的方向有 利用外部资源,通过远程监督,以及跨语料迁移的方法 。
外部资源
Leveraging FrameNet to Improve Automatic Event Detection, ACL2016
FrameNet 是语言学家定义及标注的语义框架资源,采用层级的组织结构,有1000+框架、1000+词法单元、150000+标注例句。在结构上,FrameNet 和事件抽取有着很高的相似性,一个框架由一个词法单元和若干框架元素组成,一个事件有触发词和若干事件角色组成。另外,FrameNet 中很多 frame 其实也能够表示某些事件,如
因此,Liu 等 利用 ACE 语料训练的分类器去判定 FrameNet 中句子的事件类别 ,再利用全局推断将 FrameNet 的语义框架和 ACE 中的事件类别进行映射 ,进而利用 FrameNet 中人工标注的事件样例扩展训练数据以提升事件检测性能 [Liu et.al., 2016b]。
Automatically Labeled Data Generation for Large Scale Event Extraction, ACL2017
Yubo Chen 提出运用结构化的知识库来以及远程监督的方法来自动生成大规模事件语料。
当把关系抽取中常用的远程监督方法用到事件抽取中时,会发现有下面两个问题,一是 现有事件知识库(如 Freebase)中缺乏触发词信息 ,如上图,在关系抽取中,我们可以用两个论元 Barack Obama, Michelle Obama 进行回标,但是在事件抽取中,marriage 这一事件类型在 Freebase 中被表示为 m.02nqglv,所以我们不能直接用事件类型和论元来进行回标,在用 DS 前, 必须先检测触发词 。
根据 DS 在 RE 中的应用,可以假设 如果一个句子中出现了所有的论元,那么这个句子就可以被作为是一个事件,句子中的动词就可以作为触发词 。然而 一个事件中的论元可能出现在多个句子中 ,如果用所有论元来进行句子的回标,那么能抽出的训练数据就非常少了,所以应该 对论元进行排序,选择有代表性的论元进行回标 。
整个流程如下,首先对 Freebase 中的核心论元进行检测,根据 角色显著性(role saliency) 、 事件相关性( event relevance) 和 核心率(key rate) 对论元进行优先级排序,接着利用所有的核心论元去 Wikipeida 中回标,根据 触发率(trigger rate) 、 触发词频率( trigger candidate frequency) 、 触发词事件频率(trigger event type frequency) 来进行触发词检测,这一阶段得到的触发词表中只有动词,缺少名词,也存在噪声,于是再利用 FrameNet 过滤动词性触发词中的噪声,同时扩展名词性触发词,最后利用 Soft Distant Supervision 来自动生成标注数据。
还有方法如 Karthik Narasimhan et al., EMNLP 2016 ,从网络获取同一事件的不同报道,再使用强化学习方法,做信息融合的决策(互补信息的融合、冗余信息的选择)。
跨语料迁移
由于目前中文事件抽取缺少公认语料,很多学者尝试利用现有大量的 高质量英文标注语料辅助中文事件抽取 。Chen 等首次提出该想法并利用跨语言协同训练的 Bootstrap 方法进行事件抽取[Chen and Ji, 2009]。Ji 提出基于中英文单语事件抽取系统和基于并行语料两种构建跨语言同义谓词集合的方法辅助进行中文事件抽取[Ji, 2009],Zhu 等利用机器翻译同时扩大中文和英文训练语料,联合利用两种语料进行事件抽取[Zhu et.al., 2014]。Hsi 等联合利用符号特征和分布式特征的方法,利用英文事件语料提升中文事件抽取的性能[Hsi et.al., 2016]。
Event Detection via Gated Multilingual Attention Mechanism, AAAI2018
Motivation:
所以文章提出了两种 attention 机制, 一是利用多语言一致性 ,分别对每种语言进行单语语境的注意力计算,对每个候选触发词,对其上下文进行注意力机制,注意力权重表示句子中不同单词对预测事件类型的重要性,二是 利用互补信息 ,用 gated cross-lingual attention 来模拟其他语言的可信度,gate 来控制目标语言流向源语言的信息,集成多语言的信息。
目前事件抽取的相关研究大部分是面向英文文本,中文文本的工作才刚起步,一方面,中文的自身特点(需要分词、缺少时态和形态的变换)有一定挑战,另一方面,数据集上也缺乏统一、公认的语料资源和相关评测。尽管如此,近年来中文事件抽取在公开评测、领域扩展及上述的跨语料迁移方面也都取得了一些进展。
公开评测方面,除了在模型方面的创新[Chen and Ng, 2012Li et.al., 2012a2013b],在中文语言特性的利用方面,Li 等通过中文词语的形态结构、同义词等信息捕获更多的未知触发词,进而解决中文事件抽取面临的分词错误和训练数据稀疏等问题; 进一步细分中文事件触发词内部的组合语义(复合、附加和转化),进而提高系统的性能[Li et.al., 2012b]。Ding 等利用聚类的方法自动生成新事件类型的语料, 在抽取过程中特别地考虑了待抽取文本的 HowNet 相似度[Ding et.al., 2013]。
特定领域方面,国内很多机构均面向实际应用展开特定领域的事件抽取研究, 覆盖突发灾难、金融、军事、体育、音乐等多个领域。例如,Zhou 等针对金融领域事件中的收购、分红和贷款三个典型事件,提出自动构建抽取规则集的方法进行中文金融领域事件抽取 [Zhou, 2003];Liang 等利用事件框架的归纳和继承特性实现对灾难事件的抽取[Liang and Wu, 2006]。
其他方向的一些 Paper:
特征表示:
– Argument Attention: Exploiting Argument Information to Improve Event Detection via Supervised Attention Mechanisms (ACL2017)多事件抽取:
– HBTNGMA: Collective Event Detection via a Hierarchical and Bias Tagging Networks with GatedMulti-level Attention (EMNLP-2018)
篇章级事件抽取:
– DCFEE: A Document-level Chinese Financial Event Extraction System based on Automatically LabeledTraining Data (ACL 2018)
事件关系抽取:
– ATT-ERNN: Attention-based Event Relevance Model for Stock Price Movement Prediction (CCKS-2017 Best Paper Award)
– MLNN: Event Coreference Resolution via Multi-loss Neural Network without Arguments (CCKS-2018)
主流方法包括基于相似度聚类和基于概率统计两类。在这不多做介绍。以后有时间再补充。
这是我的第一篇技术博客,也是对近期学习的问答系统进行一个小结,方便回顾所学。文章难免有错误之处,欢迎大家批评指正,不胜感激。
下面将从两个方面对问答系统进行小结:
一、常见的问答系统种类及介绍
二、问答系统中的常用技术
1.根据问题所属的知识领域来分类:
(1) 开放域闲聊性。 举例:微软小冰
(2) 面向FAQ和任务型。举例:京东JIMI、苹果Siri
(3)限定域知识型。 举例:左手医生(问答模型、信息检索)
2.根据答案生成阶段的技术分类:
(1)检索式 (2)生成式
3.依据答案来源分类:
(1)基于知识图谱问答系统
(2)机器阅读理解的问答系统
(3)基于问答对的问答系统
定义:给定自然语言处理问题,通过对问题进行语义理解和解析,进而利用知识库进行查询、推理得出答案。对事实性问答任务而言(如政策问题)这种做法依赖于知识图谱,准确率比较高。要求知识图谱是比较大规模的,因为KB-QA无法给出在知识图谱之外的答案。下面给出常见分类:
(1)基于符号表示的KB-QA(传统的语义解析方法)
(2)基于向量表示的KB-QA(知识表示学习的方法)
评价标准:召回率(Recall)、精确率(Precision)、F1
常用数据集:WebQuestion、SimpleQuestion、NLPCC KBQA数据集(中文)
(1)基于符号表示的KB-QA(传统的语义解析方法)
定义:该方法是一种偏语言学的方法,主体思想是将自然语言转化为一系列形式化的逻辑形式,通过对逻辑形式进行自底向上的解析,得到一种可以表达整个问题语义的逻辑形式,通过相应的查询语句在知识库中进行查询,从而得出答案。
语义解析传统方法:
问题->短语检测->资源映射->语义组合->逻辑表达式
语义解析目前一般做法:
建图->主题词链接->确定核心推导链->增加约束和聚合函数
将语义解析简化为查询图生成,将其表述为具有分阶段状态和动作的搜索问题。
(2)基于向量表示的KB-QA(基于表示学习的方法)
定义:把知识库问答看做一个语义匹配过程。通过表示学习知识库以及用户问题的语义表示,得到低维空间的数值向量,再通过数值计算,直接匹配与用户问句语义最相似的答案。即问答任务就可以看成问句语义向量与知识库中实体、边的语义向量相似度计算的过程。
随着深度学习的发展,基于表示学习的知识库问答取得了较好的效果。
一般做法:
问题和答案映射向量->向量匹配->计算问题-答案score->优化问题->候选答案选择
详细过程:
问题和答案映射向量:
如何学习问题向量:把问题用LSTM进行建模
如何学习答案向量:答案不能简单映射成词向量,一般是利用到答案实体,答案类型,答案路径,答案关系,答案上下文信息。分别和问句向量做相似度计算,最终的相似度为几种相似度之和。代表性的论文 [1]Dong, ACL. Question answering over freebase with multi-column convolutional neural networks.2015提出Multi-column CNN,在答案端加入了更多信息,答案类型、答案路径以及答案周围的实体和关系三种特征向量分别和问句向量做相似度计算,最终的相似度为三种相似度之和。
向量匹配、计算问题-答案score:把这些特征分别映射成不同的向量,作为答案的其中一个向量(而不是直接拼接起来),最后用这些特征向量依次和问题做匹配,把score加起来作为总的score。
优化问题、候选答案选择:一般用Margin Loss,极大化问题对正确答案的score,同时极小化问题对错误答案的score。当模型训练完成后,通过score进行筛选,取最高分的作为最终答案。
早期方法使用记忆网络来做,论文:Bordes, arXiv. Large-scale simple question answering with memory networks.2015.首先通过Input模块来处理问题,加入知识库信息,将三元组通过输入模块变换为一条一条的记忆向量,再通过匹配主语获得候选记忆,进行cos匹配来获取最终记忆,将最终记忆中的宾语输出作为答案。在WebQuestions上得到了42.4的F1-score,在SimpleQuestions上得到了63.9的Accuracy。
接着,又有很多位学者提出了其他基于知识表示学习的方法。其中论文[Xie.2018]提出一种基于深度学习的主题实体抽取模型,结合了问句单词级别和字符级别的嵌入表示来学习问题的序列表示,并利用双向LSTM对单词序列编码,最后使用CNN网络根据单词的上下文信息预测单词是否为主题词。在答案选择部分,文章提出一种基于自注意力机制的深度语义表示模型。使用双向LSTM和CNN网络来构建深度语义模型,并提出一种基于局部和全局上下文的自注意力机制用于计算单词的注意力权重。考虑语义表示学习和实体抽取任务之间的具有相互辅助作用,文章提出深度融合模型,将基于自注意力机制的深度语义表示模型与主题实体抽取模型结合,用多任务学习的方式进行联合训练。在NLPCC-ICCPOL 2016数据集上得到了83.45的F1-score。
今年,Huang, WSDM. Knowledge graph embedding based question answering.2019 提出KEQA模型,不同于以往的直接计算问句和答案语义相似度的方法,本文尝试通过关系和实体学习模型从问句分别重构出实体和关系的知识表示,并进一步重构出三元组的知识表示,最终答案为知识库中与重构三元组最接近的三元组。同时文章也评估了不同的知识表示学习方法TransE,TransH, TransR对KEQA模型精度的影响。
1)基于符号的方法,缺点是需要大量的人工规则,构建难度相对较大。优点是通过规则可以回答更加复杂的问题,有较强的可解释性.
2)基于向量的方法,缺点是目前只能回答简单问题,可解释性差。优点是不需要人工规则,构建难度相对较小。
1)复杂问句,目前End2End的模型只能解决简单问答。
2)多源异构知识库问答。对于开放域问答,单一的知识库不能完全回答所有问题。
3)训练语料,知识库中有实体和关系,除此之外还可能有描述实体的文本信息,或许可以结合结构化知识和非结构化文本。
4)对话中的自然语言形式回复。传统的自动问答都是采用一问一答的形式。然而在很多场景下,需要提问者和系统进行多轮对话交互,实现问答过程。这时,需要系统返回用户的答案不再只是单一实体、概念、关系的形式,而是需要是以自然语言的形式返回答案。这就需要自动生成自然语言的回复。现有方法多利用 sequence-to-sequence 模型进行自然语言生成,在这一过程中,如何与知识库相结合,将知识库问答的答案加入自然语言回复中,仍是亟待解决的问题。
机器阅读理解在 NLP 领域近年来备受关注,自 2016 年 EMNLP 最佳数据集论文 SQuAD 发表后,各大企业院校都加入评测行列。利用机器阅读理解技术进行问答即是对非结构化文章进行阅读理解得到答案,可以分成匹配式QA,抽取式QA和生成式QA,目前绝大部分是抽取式QA。阅读理解花样很多,但是基本框架差异不大。
SQuAD(斯坦福问答数据集):这是一个阅读理解数据集,由众包人员基于一系列维基百科文章的提问和对应的答案构成,其中每个问题的答案是相关文章中的文本片段或区间。SQuAD 一共有 107,785 个问题,以及配套的 536 篇文章。
(1)匹配式QA
给定文章、问题和一个候选答案集(一般是实体或者单词),从候选答案中选一个score最高的作为答案。这种形式比较像选择题型,已经基本上没人做了。
(2)抽取式 QA
让用户输入若干篇非结构化文本及若干个问题,机器自动在阅读理解的基础上,在文本中自动寻找答案来回答用户的问题。抽取式 QA 的某个问题的答案肯定出现在某篇文章中。抽取式 QA 的经典数据集是 SQuAD。
(3)生成式QA
目前只有MSRA的MS MARCO数据集,针对这个数据集,答案形式是这样的:
1)答案完全在某篇原文
2)答案分别出现在多篇文章中
3)答案一部分出现在原文,一部分出现在问题中
4)答案的一部分出现在原文,另一部分是生成的新词
5)答案完全不在原文出现(Yes / No 类型)
随着互联网技术的成熟和普及, 网络上出现了常问问题(frequent asked questions, FAQ)数据, 特别是在 2005 年末以来大量 的社区问答(community based question answering, CQA)数据(例如 Yahoo!Answer)出现在网络上, 即有了大量的问题答案对数据, 问答系统进入了开放领域、基于问题答案对时期。
一般过程:问题分析 ->信息检索->答案抽取
问题分析阶段:和基于自由文本的问答系统的问题分析部分基本一样, 不过还多了几个不同的研究点:
(1)问题主客观的判断
(2)问题的紧急性(通常在CQA数据中)
信息检索阶段:该阶段目标是如何根据问题的分析结果去缩小答案 可能存在的范围,其中存在两个关键问题:
(1)检索模型(找到和问题类似的问题)
(2)两个问题相似性判断(返回答案或返回相似问题列表)
答案抽取部分:在答案抽取部分, 由于问题答案对已经有了答案, 答案抽取最重要的工作就是判断答案的质量.研究怎么从问题的众多答案中选择一个最好的答案.
下面网址给出了一些论文和近期研究成果:
https://blog.csdn.net/class_guy/article/details/81535287
参考文献:
[1]Berant.EMNLP.Semantic parsing on freebase from question-answer pairs.2013
[2]Yih.ACL.Semantic Parsing via Staged Query Graph Generation:Question Answering with Knowledge Base.2015
[3]Dong, ACL. Question answering over freebase with multi-column convolutional neural networks.2015
[4]Hao, ACL. An end-to-end model for question answering over knowledge base with cross-attention combining global knowledge.
[5]Bordes, arXiv. Large-scale simple question answering with memory networks.2015
[6]Huang, WSDM. Knowledge graph embedding based question answering.2019
[8]Susht.知乎.一份关于问答系统的小结.2018
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)