从文本中识别实体并抽取实体之间的语义关系
与其他两种方法相比,有监督的学习方法能够抽取更有效的特征,其准确率和召回率都更高。
有监督的关系抽取方法主要包括:
基于核函数的方法[Zhao and Grishamn 2005;Bunescu and Mooney 2006]
基于逻辑回归的方法[Kambhatla 2004]
基于句法解析增强的方法[Miller et al.2000]
基于条件随机场的方法[Culotta et al. 2006]
但是阻碍这些系统效果继续提升的主要问题在于,人工标注训练数据需要花费大量的时间和精力
针对这个局限性,Mintz 等人[Mintz et al. 2009]提出了远程监督(Distant Supervision)的思想。
作者们将纽约时报新闻文本与大规模知识图谱FreeBase进行实体对齐。远程监督假设,一个同时包含两个实体的句子蕴含了该实体对在Freebase中的关系,并将该句子作为该实体对所对应关系的训练正例。作者在远程监督标注的数据上提取文本特征并训练关系分类模型,有效的解决了关系抽取的标注数据规模问题。
之后又有人从各个角度对远程监督技术提出了改进方案。
例如:Takamatsu 等人[Takamatsu et al. 2012]改进了实体对齐的技术,降低了数据噪音,提高了关系抽取的总体效果。
Yao 等人[Yao et al. 2010]提出了基于无向图模型的关系抽取方法。
Riedel 等人[Riedel et al. 2010]则增强了远程监督的假设,与[Mintz et al. 2009]相比错误率减少了31%。
以上远程监督技术都假设一个实体只对应一种关系。但是,很多实体之间具有多种关系。例如:“乔布斯创建了苹果公司”,“乔布斯是苹果公司的CEO”。因此,Hoffmann 等人[Hoffmann et al. 2011]提出采用多实例多标签(Multi-Instance Multi-lable)方法对关系抽取进行建模,刻画一个实体对可能存在多种关系的情况。类似地, Surdeanu 等人[Surdeanu et al. 2012]也提出利用多实例多标签和贝叶斯网络来进行抽取。
现有的有监督学习关系抽取方法已经取得了较好的效果,但它们严重依赖词性标注,句法解析等自然语言处理标注提供分类特征,而自然语言处理标注工作往往存在大量错误,这些错误将会在关系抽取系统中不断传播放大,最终影响关系抽取的效果。
[Socher et al. 2012]提出使用递归神经网络来解决关系抽取问题。
1. 该方法首先对句子进行句法解析;
2. 然后为句法树上的每个节点学习向量表示;
3. 通过递归神经网络,可以从句法树最顶端的词向量开始,按照句子的句法结构迭代合并,最终得到该句子的向量表示,并用于关系分类。
该方法能够有效地考虑句子的句法结构信息,但同时该方法无法很好的考虑两个实体在句子中的位置和句义信息。
[Zeng et al. 2014]提出采用卷积神经网络进行关系抽取。采用词汇向量和词的位置向量作为卷积神经网络的输入,通过卷积层、池化层和非线性层得到句子表示。通过考虑实体的位置向量和其他相关的词汇特征,句子中的实体信息能够较好地考虑到关系抽取中。
后来,[Santos et al. 2015]还提出了一种新的卷积神经网络进行关系抽取,其中采用了新的损失函数,能够有效地提高不同关系类别之间的区分性。
[Miwa et al. 2016]提出了一种基于端到端神经网络的关系抽取模型。该模型使用双向LSTM和树形LSTM同时对实体和句子进行建模。
目前基于卷积神经网络的方法在关系抽取的标准数据集SemEval-2010 Task 8 上取得了最好的效果。
上面介绍的神经网络模型在人工标注的数据集上取得了巨大成功。然而,与之前基于特征的关系抽取系统类似,神经网络关系抽取模型也面临着人工标注数据较少的问题。
[Zeng et al. 2015]尝试将基于卷积神经网络的关系抽取模型扩展到远程监督数据上。其中假设每个实体对的所有句子中至少存在一个句子反映该实体对的关系,提出了一种新的学习框架;以实体对为单位,对于每个实体对只考虑最能反映其关系的那个句子。该方法在一定程度上解决了神经网络关系抽取模型在远程监督数据上的应用,在 NYT10 数据集上取得了远远高于基于特征的关系抽取模型的预测效果。但是,该方法仍然存在一定的缺陷:该模型对于每个实体对只能选用一个句子进行学习和预测,损失了来自其他大量的有效句子的信息。
我们有没有可能把实体对对应的有噪音的句子过滤掉,然后利用所有有效句子进行学习和预测呢? [Lin et al. 2016]提出了一种基于句子级别注意力机制的神经网络模型来解决这个问题,该方法能够根据特定关系为实体对的每个句子分配权重,通过不断学习能够使有效句子获得较高权重,而有噪音的句子获得较小的权重。与之间的模型相比,该方法取得较大提升。相关代码:http://github.com/thunlp/NRE
关系抽取系统性能还有很大的提升空间,仍然有很多问题亟待解决
首先,基于句法树的树形LSTM神经网络模型在关系抽取上取得了不错的效果。这说明句法信息的引入对于关系抽取有一定帮助。然而,目前的句法分析仍然存在较多错误。在考虑句法信息的同时也引入了大量错误噪音。有研究表明,如果对于一个句子考虑其最可能的多个句法分析树,分析结果准确率可以得到较大提升。因此,一个重要的研究方向是,如何有效地将句子的多个可能句法树信息结合起来,用于关系抽取。
其次,目前的神经网络关系抽取主要用于预先设定好的关系集合。而面向开放领域的关系抽取,仍然是基于模板等比较传统的方法。因此,我们需要探索如何将神经网络引入开发领域的关系抽取,自动发现新的关系及其事实。此外,对现有神经网络模型如何对新增关系和样例进行快速学习也是值得探索的实用问题。
最后,目前关系抽取主要基于单语言文本。事实上,人类知识蕴藏于不同动态和类型的信息源中。我们需要探索如何利用多语言文本、图形和音频信息进行关系抽取。
句法分析旨在将句子从词语的序列形式按照某种语法体系转化为图结构(通常为树结构),以刻画句子内部的句法关系(主谓宾等),是自然语言处理的核心问题之一。依存语法是众多语法体系中的一种,它使用依存弧连接句子中两个具有一定句法关系的词语,最终形成一颗句法依存树。依存语法以其形式简洁、易于标注、便于应用等优点,受到越来越多研究人员的重视,已成为句法分析研究的主流,有效支撑了信息抽取、情感分析、机器翻译等多个研究任务。
例如,对于字面上非常相似的两个句子“您转的这篇文章很无知”和“您转这篇文章很无知”,虽然它们仅相差了一个“的”字,但是它们的含义完全不同,这主要是由于这两句话的主语不同造成的。图1分别给出了这两个句子的依存句法分析结果 [1],我们可以看到第一句话的主语(SBV关系)是“文章”,而第二句话的主语是“转”的动作。可见,若不使用依存句法分析工具,很难判断这两句话的情感对象,即什么是“无知”的。
图1:依存句法分析对比示例
主流依存句法分析方法分为基于图(Graph-based)和基于转移(Transition-based)两类:基于图的方法将依存句法分析看成从完全有向图中寻找最大生成树的问题,图中的边表示两个词之间存在某种句法关系的可能性;基于转移的方法通过一系列移进、规约等转移动作构建一棵依存句法树,学习的目标是寻找最优动作序列。与基于图的方法相比,基于转移的方法算法复杂度更低,因此具有更高的分析效率,同时由于能采用更丰富的特征,其分析准确率也与基于图的方法相当,因此受到了越来越多学者的关注,尤其是近年来很多深度学习技术都试图应用于基于转移的方法,因此本文也将重点介绍该类方法。
所谓深度学习技术,一般是指建立在含有多层非线性变换的神经网络结构之上,对数据的表示进行抽象和学习的一系列机器学习算法。该方法已对语音识别、图像处理等领域的进步起到了极大的推动作用,同时也引起了自然语言处理领域学者的广泛关注,已成功地应用于机器翻译、阅读理解、问答系统等任务,并已然成为新的自然语言处理标准方法。那么,近年来依存句法分析,尤其是基于转移的依存句法分析究竟是如何利用深度学习技术的呢?这些方法对其它研究领域是否也有借鉴意义呢?未来的研究方向会在哪里呢?本文试图就这些问题加以详细的阐述。
基于转移的依存句法分析法使用一系列由初始到终止的状态(State或Configuration)表示句法分析的过程 [2],一个状态由栈(Stack)、缓存(Buffer)以及部分已分析好的依存弧构成,其中栈用于存储已经过分析的词,缓存表示待分析的词。
初始状态下,栈中仅含有一个根节点(Root),缓存中存储句子中全部的词。一个状态经过一个转移动作(Action)变为一个新的状态,转移动作共有移进(Shift)、左归约(Left-Reduce)、右归约(Right-Reduce)三种。其中移进动作将缓存中第一个词压入栈中;左规约在栈顶的两个词之间产生一条左指向依存弧,同时将栈顶第二个词下栈;右规约在栈顶的两个词之间产生一条右指向依存弧,同时将栈顶词下栈。
可证明,经过一系列转移动作,最终能够达到终止状态,即栈中仅含有一个根节点,缓存为空,此时恰好构成一颗完整的依存树,并完成对一个句子的依存句法分析过程。
基于转移的依存句法分析目的就是要学习一个分类器,其输入为一个状态,输出为该状态下最可能的动作,这又被称为贪心解码算法,后面我们会介绍其它非贪心的解码算法。
传统的方法通过抽取一系列人工定义的特征来表示状态,即分类的依据,如栈顶的词、词性,缓存中的第一个词、词性,已生成部分依存树的最左或最右词,这些又被称为核心特征。为了提高分类的精度,还需要人工定义各种组合特征。如Zhang and Nivre (2011) 曾给出了一套准优化的特征及特征组合模板,共有20种核心特征,72种组合特征。
抽取出特征后,传统方法往往采用线性分类器,即将特征进行线性加权组合,组合系数为分类器学习获得的权重,最终选取分数最高的类别作为所要采取的动作。
以上传统的做法存在一个较为严重的问题,就是人工定义特征极其繁琐,需要丰富的句法分析领域知识,即便如此也往往很难将全部有效特征都抽取出来,例如仅使用最左或最右叶子节点表示已生成的部分依存树显然不够准确,而传统方法又无法使用更合适的特征来表示它们。随着深度学习技术的兴起,人们发现可以利用其强大的抽象表示能力来解决以上的问题。
根据所采用解码方法的不同,基于转移的依存句法分析技术又可分为贪心和全局解码两种算法。在将深度学习应用于此的时候,也分别对应这两种算法,下面分别加以介绍。
斯坦福大学的Chen and Manning (2014) 最早将深度学习技术成功应用于依存句法分析。与传统方法一样,他们也首先从一个状态中提取一些重要的核心特征,但是与传统方法使用高维、稀疏、离散向量表示(又称One-hot表示)这些特征不同,他们使用低维、稠密、连续的分布式向量来表示特征。直觉上,相似的词、词性甚至句法关系等特征可以使用相似的向量表示,从而一定程度上克服数据稀疏问题;理论上,分布式表示是一种降维方法,可有效克服机器学习中的“维数灾难(Curse of Dimensionality)”问题,同时这种分布式表示的表达能力更强,与其维度成指数关系。
深度学习中的非线性激活函数还可以隐含的达到传统方法中特征组合的效果,从而避免了繁琐的组合特征设计,最终取得了与传统方法相当的准确率。与此同时,该方法由于不需要显示地进行特征组合这一极其耗时的操作,附以预计算等深度学习计算技术,最终还极大加快了依存句法分析的速度。
当然,Chen and Manning (2014) 的方法仍然需要人工提取核心特征,同时也无法更好地表示部分依存树。CMU的Dyer等人 (2015) 提出使用长短时记忆循环神经网络(LSTM-RNN)来表示栈和缓存,并使用递归神经网络来表示部分依存树,另外还额外地使用一个LSTM表示历史的转移动作序列,最终将这些网络输出的向量进行拼接来表示一个状态,从而达到无需进行任何人工特征提取和组合的操作,即可更完备地表示状态的目的。Ballesteros等人 (2015) 后来又进一步拓展他们自己上述的工作,使用字符序列的双向LSTM来表示单词,从而更好地对单词进行泛化表示,克服低频词或未登录词表示不精确等问题。
Dyer等人的一系列工作虽然无需人工提取任何特征,但是网络过于复杂,不便于学习。Kiperwasser and Goldberg (2016) 提出了一个非常简单的特征表示和学习方法,他们使用双向LSTM来对句子中的每个词进行表示,然后将该词表示作为依存句法分析系统的输入,在仅使用少量核心特征的情况下,取得了较高的准确率。该方法不但适用于基于转移的依存句法分析算法,还适用于基于图的依存句法分析算法。
以上一系列工作都是在利用深度学习较强的特征表示能力来表示转移状态,所采用的算法又被称为贪心解码,即每次选择给定状态下最好的转移动作,在选择的过程中并没有考虑后续状态对其的影响。在基于转移的依存句法分析领域,很早就有学者提出利用柱搜索(Beam Search)等近似全局搜索/解码算法来综合考虑多个状态之间的依赖关系,从而选择更好的转移动作序列 (Johansson and Nugues, 2007; Zhang and Clark, 2008)。基于此思想,Google的Weiss等人 (2015) 将以上贪心解码方法中获得的每个转移动作的隐层输出向量作为全局解码算法的输入特征,然后利用结构化感知器对这些特征的参数进行学习,最终获得了比贪心解码更好的准确率。
然而,Weiss等人 (2015) 的方法仅将深度学习获得的结果作为传统句法分析算法的特征,割裂了学习和解码两个部分。是否有办法一体化的使用深度学习技术进行全局的学习和解码呢?Zhou等人 (2015) 直接计算完整转移动作序列的似然函数,然而对整个句子来说,其可能的转移动作序列太多以至于无法枚举,所以无法精确地计算似然函数。为解决该问题,他们引入了对照学习(Contrastive Learning)方法来近似求解似然函数,即在进行全局归一化时,只考虑Beam中的有限结果。Google的Andor等人 (2016) 也采用了类似的思想,经过细致的参数调节,使得他们的句法分析系统获得了目前文献中报告的最高准确率,Google于今年5月份开源了他们的系统 – SyntaxNet [3]。值得一提的是,除了依存句法分析外,Google还将相同的基于转移的框架应用于词性标注、句子压缩等任务。
深度学习在自然语言处理中的应用方兴未艾,本文以依存句法分析为例,介绍了如何利用深度学习强大的表示能力更好地进行特征学习,从而获得比传统方法更好的分析精度。同时我们注意到,深度学习并非一劳永逸,目前的方法还需利用传统方法构造转移系统,同时全局解码算法也有助于系统性能的进一步提升。
近来序列到序列(Sequence to Sequence),也称编码解码(Encoder Decoder)方法在多个自然语言处理任务中都到了广泛的应用,如机器翻译、阅读理解等。那么,该方法是否也能应用于依存句法分析呢?如果可以的话,我们就无需再使用传统方法中的转移系统了。另一方面,依存句法分析中的全局解码算法对序列到序列的模型也会有借鉴作用,尤其是在学习阶段目前还没有研究工作采用全局学习算法。
依存句法是典型的结构化学习问题,在自然语言处理中,还有很多结构化学习的任务,如分词、词性标注等,我们同样可以借鉴上述基于转移的算法框架加以解决。除此之外,还有更多的自然语言处理任务值得尝试,如上面介绍的Google就使用该框架进行句子压缩。
很多上层应用依赖于句法分析,尤其是深度学习中的递归神经网络方法主要依赖的就是句法分析的结果进行语义的递归组合 (Socher 2014)。然而在实际应用中句法分析的结果可能存在错误,同时句法分析的标准是语言学家定义的语法体系,而依据这种语法体系进行语义组合未必适合上层的应用。因此,是否可以根据上层应用来自动调整句法分析的结果,即基于动态变化的网络结构进行学习呢?传统的有监督学习框架很难实现该目标,而强化学习(Reinforcement Learning)框架为我们提供了一种自动学习动态网络结构的途径。
Andor, D., Alberti, C., Weiss, D., Severyn, A., Presta, A., Ganchev, K., Collins, M. (2016). Globally Normalized Transition-Based Neural Networks. ACL.
Chen, D., & Manning, C. D. (2014). A Fast and Accurate Dependency Parser using Neural Networks. ACL.
Ballesteros, M., Dyer, C., & Smith, N. A. (2015). Improved Transition-Based Parsing by Modeling Characters instead of Words with LSTMs. EMNLP.
Dyer, C., Ballesteros, M., Ling, W., Matthews, A., & Smith, N. A. (2015). Transition-Based Dependency Parsing with Stack Long Short-Term Memory. ACL.
Johansson, R., & Nugues, P. (2007). Incremental Dependency Parsing Using Online Learning. EMNLP
Kiperwasser, E., & Goldberg, Y. (2016). Simple and Accurate Dependency Parsing Using Bidirectional LSTM Feature Representations. TACL.
Socher, R. (2014) Recursive Deep Learning for Natural Language Processing and Computer Vision. PhD Thesis, Stanford University.
Weiss, D., Alberti, C., Collins, M., & Petrov, S. (2015). Structured Training for Neural Network Transition-Based Parsing. ACL.
Zhang, Y., & Clark, S. (2008) Joint Word Segmentation and POS Tagging Using a Single Perceptron. ACL.
Zhang, Y., & Nivre, J. (2011). Transition-based Dependency Parsing with Rich Non-local Features. ACL.
Zhou, H., Zhang, Y., Huang, S., & Chen, J. (2015). A Neural Probabilistic Structured-Prediction Model for Transition-Based Dependency Parsing. ACL.
[1] 该结果通过“语言云(http://www.ltp-cloud.com/)”分析获得,具体依存句法关系解释见该网站。
[2] 随着状态表示方式、转移动作的不同,基于转移的方法可以分为多种转移系统,在此我们以最简单的标准弧(Arc-Standard)转移系统为例加以说明。
[3] https://github.com/tensorflow/models/tree/master/syntaxn