NLP第16课:实用汉语句法依存分析

句法分析是自然语言处理的关键技术之一,其基本任务是确定句子的句法结构或句子中词与词之间的依存关系。主要包括两个方面:一是确定语言的语法体系,即形式化地定义语言中合法句子的语法结构;另一方面是句法分析技术,即根据给定的语法体系,自动推导出句子的句法结构,分析句子中包含的句法单元以及这些句法单元之间的关系。

句法分析的应用场景很多,比如搜索引擎的用户日志分析、关键词识别,比如信息抽取、自动问答、机器翻译等与自然语言处理相关的任务。

句法分析需要遵循一定的语法体系,语法树的表达形式是根据这个体系的语法来确定的。我们来看下面这个句子:

使用可视化工具Stanford Parser查看句法分析的全过程:

短语结构树由终结节点、非终结节点和短语标签组成。分句的语法规则形成一个短语为几个端点,作为非端点参与下一个规范,直到结束。如下图所示:

依存句法分析通过分析语言单位中成分之间的依存关系来揭示其句法结构。

直观地说,依存句法的目的是分析和识别句子中的“主谓宾”、“定补”等语法成分,分析成分之间的关系。

依存句法的结构中没有非终结点,词与词之间有直接的依存关系,形成依存对,其中一个是核心词,也叫支配词,另一个叫修饰语,也叫从属词。

依赖关系用有向弧来表示,称为依赖弧。依存弧的方向是从从属词到主导词,但反过来也是可以的,可以根据个人习惯统一表示。

比如下面这句话:

依存句法分析结果如下(使用哈工大LTP):

从分析结果可以看出,该句的核心谓语是"提议",主语是"李克强",宾语是"支持上海……","调查……"是"提议"的状语,"李克强"的修饰语是"国务院总理","支持"的宾语是"探索新机制"。

有了上面依存句法分析的结果,我们不难看出,提出者是李克强,而不是上海或外高桥,尽管它们都是名词,离提出者更近。

依存句法通过分析一个语言单位中成分之前的依存关系来解释其句法结构,主张句子中的核心动词是支配其他成分的中心成分。但是,它不受任何其他组件的支配,所有被支配的组件都以某种方式从属于支配者。

20世纪70年代,Robinson在依存句法中提出了关于依存的四个公理。在中文信息处理的研究中,中国学者提出了关于依存性的第五个公理,如下:

汉语词汇(合成语)、短语、简单句、段落、篇章中普遍存在句子成分之间互为支配和支配、依存和依赖的现象,可以独立使用和表达。这一特点反映了依赖性的普遍性。依存句法分析可以反映句子成分之间的语义修饰关系,它可以获得长距离的搭配信息,而不考虑句子成分的物理位置。

依赖分析注释关系(***14)及其含义如下表所示:

语义依存句法分析(SDP)是分析一个句子的语言单位之间的语义关联,并将语义关联呈现在依存结构中。用语义依赖来描述句子语义的好处是,不需要抽象词汇本身,而是通过它所承载的语义框架来描述词汇,论元的数量总是比词汇少得多。

语义依存分析的目标是跨越句子表层句法结构的约束,直接获得深层语义信息。比如下面三句话,用不同的方式表达了同一个语义信息,就是张三进行了一个吃的动作,吃的动作是在苹果上进行的。

语义依存分析不受句法结构的影响,语义直接相关的语言单位直接用依存弧连接,并标注相应的语义关系。这也是语义依存分析和依存句法分析的一个重要区别。

语义依存分为三类,主要是语义角色,每个语义角色都有嵌套关系和反关系;事件关系,描述两个事件之间的关系;语义附着标记,标记说话人的语气等依存信息。

最后,我们通过Pyhanlp库实现了依存句法的实际练习。在这个过程中,我们选择依赖查看器工具进行可视化显示。可视化时,txt文档需要用UTF-8编码。

先介绍包,然后可以直接分析:

获得的结果:

然后,我们将结果保存在一个txt文件中:

最后,通过依赖查看器工具将其可视化。如果有乱码,记得将txt文档保存为UTF-8,得到的可视化结果如下图所示:

本文首先介绍语法体系以及如何根据语法体系确定一个句子的语法树,为后面的句法分析奠定基础。

然后介绍依存句法,其目的是通过分析一个语言单位中成分之间的依存关系来揭示其句法结构,然后解释依存句法中的五种依存关系。

最后,进一步介绍了不同于依存句法的语义依存。它的目的是分析句子语言单位之间的语义关联,并以依存结构的形式呈现语义关联。

文末,我们将通过Pyhanlp实战和可视化,进一步加深对汉语依存句法的理解。

参考资料和推荐读物: