第7章 依存分析

第5章和第6章中介绍了spaCy的NLP流水线是如何执行各种复杂的计算语言学算法的,如词性标注和NER标注。不过,这并不是spaCy的全部功能,本章将探讨依存分析,以及如何在各种场景中使用它。在使用spaCy进行实际操作之前,我们还是先来了解依存分析的理论知识,并训练自定义的依存分析器。本章介绍的主题如下:

  • 依存分析;
  • 用Python实现依存分析;
  • 从头开始训练一个依存分析器;
  • 总结。

文本的语法解析仍然是文本处理步骤中最重要的过程之一。它不仅限于自然语言和计算机语言,语法解析的思想可以扩展到任何符合某种形式语法规则的数据结构。

这意味着为了能够进行任何类型的解析,我们需要两种工具:语法解析器和语法。那么语法解析器到底是什么?

我们可以把它理解成分析句子或分解句子来理解结构的一种方法。分解句子来理解其底层结构的方法是构成语法解析的关键,我们可以尝试许多不同的方法来解释句子的结构。

之所以在这里提到句子,是因为它与自然语言相关,但是语法解析是一种可以对任何具有形式语法的语句执行的活动。例如,我们来看下面这个简单的算术语句:((7+3)*(5−2))。

怎样得到图7.1中的树状结构?图中的4个数字是最基本的4个主要组成部分,其他符号表示这些数字之间的相互作用。遵循标准的BODMAS算法规则,我们首先完成括号内的操作。然后通过数学符号(+、−、*)来描述关联树的叶子是如何关联的,叶子指的是树的最底部的节点,如数字7、3、5和2。图7.1解释了我们如何解析这样的语句。

图7.1 解析数学表法式的例子

介绍完语法解析的概念,下面将重点放在它与本书的关系上。即使在自然语言处理的世界里,术语解析也可能意味着两件不同的事情。传统的语法解析是指理解一个词在一个句子中的意思。在计算语言学的背景下,它也可以指通过一种算法进行的形式化分析,这种算法产生一棵语法解析树(与图7.1的树含义相似)。 ...

Get 自然语言处理与计算语言学 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.