语言技术平台(LTP)发布新功能:中文语义依存图分析

1.引言

要让机器能够理解自然语言,需要对原始文本自底向上进行分词、词性标注、命名实体识别和句法分析,若想要机器更智能,像人一样理解和运用语言,还需要对句子进行更深一层的分析,即句子级语义分析。

语义依存分析是通往语义深层理解的一条蹊径,它通过在句子结构中分析实词间的语义关系(这种关系是一种事实上或逻辑上的关系,且只有当词语进入到句子时才会存在)来回答句子中“Who did what to whom when and where”等问题。例如句子“张三昨天告诉李四一个秘密”,语义依存分析可以回答四个问题,即谁告诉了李四一个秘密,张三告诉谁一个秘密,张三什么时候告诉李四一个秘密,张三告诉李四什么。

图1语义依存表示示例

图1中表示语义的形式为依存形式,Agt表示施事、Cont表示内容等。其优势在于形式简洁,易于理解和运用。语义依存分析建立在依存理论基础上,是对语义的深层分析。可分为两个阶段,首先是根据依存语法建立依存结构,即找出句子中的所有修饰词与核心词对,然后再对所有的修饰词与核心词对指定语义关系。可见,语义依存分析可以同时描述句子的结构和语义信息。

语义分析可以跨越句子的表层结构直接获取深层语义表达的本质,例如句子:“昨天,张三将一个秘密告诉李四。”,虽然它和图1中的句子表述形式不同,但含义相同,具体见图2。这种性质在信息检索、机器翻译等诸多领域有重要作用。

图2语义依存表示示例

同时,由于中文严重缺乏形态的变化,词类与句法成分没有严格的对应关系,导致中文句法分析的精度始终不高。目前英文在标准测试集上的句法分析准确率达到90%左右,而中文只能达到80%左右。既然中文是意合的,在形式分析上有劣势,因此我们提出发挥中文意合的特点,跨越句法分析直接进行语义依存分析。


2.语义依存表示

2.1   语义依存树


在对中文语义依存分析的探索中,我们首先尝试了用树结构融合依存结构和语义关系。图1是一个语义依存树的示例。

哈工大社会计算与信息检索研究中心与北京语言大学邵艳秋教授合作于2011年推出了BH-SDP-v1(BLCU and HITSDP)语义依存表示体系,并对中文宾州句法树库中的10,068个句子进行了标注。该标注语料经过整理后在SemEval-2012上组织了国际公开评测[1]。这是世界上最早的语义依存分析技术评测。2014年,其他学者才开始组织英文语义依存分析评测。

该语料库存在如下几个问题:有些语义关系彼此易混淆;语义关系数量太大,有些关系在标注语料中出现次数很少;句子全部来自新闻,涵盖的语言现象有限;依存树结构,刻画语义不全面。


2.2   语义依存图


对于语义依存树表示体系存在的问题,我们采用的解决方案是用语义依存图分析代替语义依存树分析。形式上类似于依存语法,但必要时突破树形结构(BH-SDP-v2)。这样的突破使得对连动、兼语、概念转位等汉语中常见的现象的分析更全面深入,当然这也给依存分析器的构建带来了很大的难度,因为任何词都可能有多个父节点。图3直观地展示了语义依存树与依存图的区别。

图3 语义依存树与语义依存图对比示例

 

语义依存树与语义依存图的主要区别在于,在依存树中,任何一个成分都不能依存于两个或两个以上的成分,而在依存图中则允许句中成分依存于两个或两个以上的成分。且在依存图中允许依存弧之间存在交叉,而依存树中不允许。

BH-SDP-v2压缩了语义关系类型的数量,重新组织并缩减了语义关系,将关系分为主要语义角色、事件关系、关系标记,从而减少不必要的类间关系混淆。语义关系在保留了一般语义关系、反关系基础上,我们还定义了嵌套关系,用来标记一个事件降级充当了另一个事件的成分。

我们标注了语义依存图语料库,包含10068句新闻语料和15000句课文句子。新闻句子平均长度是31个词,课本句子平均长度是14个词。我们又基于该标注语料在SemEval-2016上组织了一次国际公开评测[2]。

3.基于转移的语义依存图分析

目前依存分析领域两大主流方法分别是基于转移(Transition-based)和基于图(Graph-based)的依存分析。基于图的算法将依存分析转换为在有向完全图中求解最大生成树的问题,是基于动态规划的一种图搜索算法。该算法由McDonald等于2005年提出,是一种全局最优的搜索算法。基于转移的依存分析算法将句子的解码过程建模为一个转移序列的构造过程。其依存分析模型的目标是通过学习得到一个能够准确的预测下一步转移动作的分类器。


3.1   基于转移的依存图分析框架


与语义依存树不同,在依存图中,每个词的父节点个数是不确定的。这种不确定性使得用基于图的方法解决该问题变得很困难,因此我们选择了基于转移的方法,通过修改现有转移系统中的转移动作来直接生成语义依存图。

基于转移的依存分析的转移系统一般包括一个保存正在处理中的词的栈σ,一个保存待处理词的缓存β,和一个记录已经生成的依存弧的存储器A。这三个部分的状态合在一起称为转移状态。分析算法中还定义了若干转移动作(如移进、规约等),通过执行转移动作,系统可以从一个状态转移到另一个状态,同时可能生成依存弧。我们的目标是训练一个分类器,在每个转移状态下,根据从上述三部分中获得的信息,预测出下一步要执行的转移动作。图4给出了用Arc-standard算法进行基于转移的依存分析的整个流程。

图4 基于转移的依存分析流程示意图

为了处理依存图结构,我们在Choi等人2013年提出的List-based算法[3的基础上修改了几个转移动作的执行条件,使得修改后的算法能够直接生成语义依存图。原List-based算法[3]在前文介绍的转移系统基础上,还多了一个栈δ用于保存暂时跳过的词,该结构是为了处理非投射树(即存在交叉弧的树)。在原算法中,一个词的父节点一旦被找到,立即将该词规约,这种规则保证了最终生成的一定是一棵依存树。在我们修改的算法中,一个词的父节点找到后,并不一定立即规约该词,而可能将其放入栈δ中,这就为将来找到该词的其它父节点提供了可能。而依存图结构的最主要特征就是存在有多个父节点的词,因此修改后的算法能够直接生成依存图结构。

3.2   基于Stack LSTM的分类器


解决了转移系统的问题,接下来就需要选择一个合适的分类器在每个转移状态下预测出下一步要执行的转移动作。我们选择了Dyer等人在2015年提出的Stack-LSTM[4]来学习转移系统中的栈σ、栈δ、缓存β和历史转移动作序列A中的信息。

传统LSTM对一个从左到右的序列进行建模,此前已经在此基础上发展出了双向LSTM和多维LSTM等模型。Stack LSTM向LSTM中加入一个栈指针。与传统LSTM类似,新的输入总是加入最右的位置,但计算新的记忆部分时,栈指针决定由LSTM的哪一层提供ct-1和ht-1。除了向序列尾添加新元素外,Stack LSTM还提供弹栈动作,将栈指针指向前一个元素。因此,该LSTM可以看作是一个栈,其中压栈操作把新元素放到列表最后,保存一个指向当前栈顶的指针,然后将栈指针指向新元素。弹栈操作只更新栈指针。栈指针指向的层的输出就是栈中所有内容在连续空间中的向量表示。

图5 Stack LSTM示意图

 

图5是Stack LSTM中弹栈和压栈的状态改变示意图,其中最下面的方块表示栈中内容,或者说是每个时间节点的输入,中间的方块表示记忆体和控制门,最上面的方块表示每个时间节点的输出,在实际应用中,只用TOP指针指示的输出表示栈中所有内容。图中显示了3个连续的Stack LSTM状态,其中左边的状态中栈中只有一个元素,经过一个弹栈动作,到达中间的状态,再经过一个压栈操作到达右边状态。研究证明,这种结构的LSTM能够学习栈中任意位置的信息。我们分别使用4个Stack LSTM学习栈 σ、栈δ、缓存β和历史转移动作序列的向量表示,通过一个隐层将它们组合起来作为当前转移状态的向量表示。该向量表示通过一个softmax层得到当前状态下转移动作的概率分布。为了更清楚地介绍用StackLSTM学习转移状态的表示的神经网络结构,在图6中我们给出该模型的结构示意图。

图6 基于Stack LSTM的依存图分析器模型结构图

图6中分别用σ、δ、β和A表示栈σ、栈δ、缓存β和历史转移动作序列A对应的Stack LSTM。它们输出的向量线性组合后通过一个ReLU激活函数产生表示转移状态的向量et。分类器用该转移状态向量和表示转移动作的向量计算出当前状态下每种可执行的转移动作的概率。

最终,我们的List-LSTM语义依存图分析器在SemEval-2016任务9上进行了测试,得到的所有评测指标都超过了其他参赛系统。在新闻测试集上LF为61.57%,UF为79.75%,在小学课本测试集上LF为71.73%,UF为84.87%。

4.语言技术平台中的语义依存分析

语言技术平台,简称LTP(LanguageTechnology Platform, LTP),是我实验室历时十余年研发的一整套自然语言处理基础平台。该平台集词法分析(分词、词性标注、命名实体识别)、句法分析(依存句法分析)和语义分析(语义角色标注)等多项自然语言处理子系统于一体,有效解决了自然语言处理技术入行门槛高,准确率、效率偏低,缺少共享数据和程序资源,重复开发现象严重,结果可视化差,错误分析困难,较难真正支持各类应用研究等众多问题。

我们已将最新的语义依存图分析功能加入到LTP中,见在线演示系统(http://www.ltp-cloud.com/demo/)。在图7的例子中,蓝色部分为句法依存分析结果,绿色部分为原语义依存树分析结果,紫色部分为新增的语义依存图分析结果。可以注意到,在原来的语义依存树中,受限于树结构,只能刻画出“有”与“儿子”之间的属事(Belg)关系。而在语义依存图中,除了该关系之外,还刻画出了“儿子”与“上”之间的施事(Agt)关系。语义依存图对语义关系更完整的覆盖,为获取句中实词之间的语义关系提供了更方便的工具。例如在“他有个儿子才上小学。”这句话中,如果要回答“谁在上小学”这个问题,语义依存图能够直接提供答案,而语义依存树则不能。

另外,新的语义依存图分析功能也能通过语言云服务的API直接调用,具体操作方法可以参照http://www.ltp-cloud.com/document/。

图7 LTP语义依存图分析示例

5.结语

本文介绍了中文语义依存图分析,这一新的语义表示方式。与句法依存分析相比,语义依存分析能表达更深刻的语义信息,对于中文这种意合的语言尤为适合;与语义依存树分析相比,语义依存图能更全面、灵活的表示句子中的语义关系。与此同时,直接分析成图结构,也给分析器带来了不小的挑战。我们提出一步到位的语义依存图分析框架,使用Stack LSTM作为其中的分类器,取得了目前最好的中文语义依存图分析性能。我们已将语义依存图分析功能加入语言技术平台(LTP),欢迎大家试用。

作者: 哈工大SCIR博士生 王宇轩

6.参考文献

[1] Che W, Zhang M, Shao Y, et al. Semeval-2012 task 5: Chinesesemantic dependency parsing[C] Proceedings of the 1st Joint Conference onLexical and Computational Semantics-Volume 1: Proceedings of the mainconference and the shared task, and Volume 2: Proceedings of the SixthInternational Workshop on Semantic Evaluation. Association for ComputationalLinguistics, 2012: 378-384.[2]Che W, Shao Y, Liu T, et al. SemEval-2016 task 9: ChineseSemantic Dependency Parsing[C] Proceedings of the 10th international workshopon semantic evaluation (SemEval 2016), San Diego, US (forthcoming). 2016.

[3] ChoiJ D, McCallum A. Transition-based Dependency Parsing with Selectional Branching[C]. Proceedings ofthe 51th Annual Meeting of the Association for Computational Linguistics. 2013:1052-1062.[4]Dyer C, Ballesteros M, Ling W, et al. Transition-based dependency parsing with stack longshort-term memory[C]. Proceedings of Annual Meeting on Association for ComputationalLinguistics. 2015: 334–343.       



本文来源于哈工大SCIR

原文链接点击即可跳转


哈工大SCIR
哈工大SCIR

哈尔滨工业大学社会计算与信息检索研究中心

产业理论NLP语义依存语义分析哈工大语料库LTP
1
暂无评论
暂无评论~