文章目录
- 句法分析概述
- 句法分析分类
- 句法分析任务
- 句法结构分析
- 基本概念
- 语法形式化
- 基本方法
- 依存句法分析
- 浅层句法分析
句法分析概述
句法分析(syntacticparsing)是自然语言处理中的关键技术之一,其基本任务是确定句子的句法结构(syntactic structure)或句子中词汇之间的依存关系。一般来说,句法分析并不是一个自然语言处理任务的最终目标,但是,它往往是实现最终目标的重要环节,甚至是关键环节。因此,在自然语言处理研究中,句法分析始终是众多专家关注的核心问题之一,围绕这一问题人们不断提出各种新的理论和方法。
句法分析分类
句法分析分为句法结构分析和依存关系分析(dependency parsing)两种。
- 句法结构分析又可称为成分结构分析或短语结构分析。以获取整个句子的句法结构为目的的句法分析称为完全句法分析或者完全短语结构分析,而以获得局部成分(如基本名词短语(base NP))为目的的句法分析称为局部分析或称浅层分析。
- 依存关系分析又称依存句法分析或依存结构分析,简称依存分析。
句法分析任务
一般而言,句法分析的任务有三个:
①判断输出的字符串是否属于某种语言;
②消除输入句子中词法和结构等方面的歧义;
③分析输入句子的内部结构,如成分构成、上下文关系等。
第②、③个任务一般是句法分析的主要任务。
句法结构分析
基本概念
句法结构分析是指对输入的单词序列(一般为句子)判断其构成是否合乎给定的语法,分析出合乎语法的句子的句法结构。句法结构一般用树状数据结构表示,通常称为句法分析树(syntactic parsingtree) ,简称分析树(parsing tree)。完成这种分析过程的程序模块称为句法结构分析(syntacticparser),通常简称为分析器(parser)。一般而言,句法结构分析的任务有三个:
①判断输入的字符串是否属于某种语言;
②消除输入句子中词法和结构等方面的歧义;
③分析输入句子的内部结构,如成分构成、上下文关系等。
如果一个句子有多种结构表示,句法分析器应该分析出该句子最有可能的结构。有时人们也将句法结构分析称为语言或句子识别。由于在实际应用过程中,通常系统都已经知道或者默认了被分析的句子属于哪一种语言,因此,一般不考虑任务①,而着重考虑任务②和③的处理问题。词法歧义和结构歧义等各种类型的歧义在自然语言中普遍存在,而句法结构歧义的识别和消解是句法分析面临的主要困难。
语法形式化
语法形式化属于句法理论研究的范畴。目前在自然语言处理中广泛使用的是上下文无关文法(CFG)和基于约束的文法的简单形式,后者又称为合一语法。合一文法目前已经形成了在自然语言处理中被广泛采用的一种形式化表示类型。尤其是当有关研究宣称,与扩展的转移网络(augmented transition networks,ATNs)等早期框架相比,从语法工程和语法可重用性的前景来看,基于约束的形式化方法具有更多的优越性以后,这种形式化方法得到了更广泛的应用。
常用的基于约束的语法有:
- 功能合一语法;
- 树链接语法;
- 词汇功能语法;
- 广义的短语结构语法;
- 中心语驱动的短语结构语法。
基本方法
句法结构分析方法可以分为基于规则的分析方法和基于统计的分析方法两大类。基于规则的句法结构分析方法的基本思路是,由人工组织语法规则,建立语法知识库,通过条件约束和检查来实现句法结构歧义的消除。在过去的几十年里,人们先后提出了若干有影响力的句法分析算法,诸如:CYK分析算法(Cocke-Younger-Kasamiparsing)、欧雷分析算法、线图分析算法、移进-规约算法、GLR分析算法和左角分析算法,等等。人们对这些算法做了大量的改进工作,并将其应用于自然语言处理的相关研究和开发任务,例如:机器翻译、树库标注等很多方面。
目前的句法分析已经从句法结构分析转向依存句法分析,一是因为通用数据集Treebank的发展,虽然该数据集的标注较为复杂,但是其标注结果可以用作多种任务(命名体识别或词性标注)且作为不同任务的评估数据,因而得到越来越多的应用,二是句法结构分析的语法集是由固定的语法集组成,较为固定和呆板;三是依存句法分析树标注简单且parser准确率高。