自然语言处理-句法分析


句法分析或解析或句法分析是 NLP 的第三阶段。此阶段的目的是得出准确的含义,或者您可以从文本中说出字典含义。与正式语法规则相比,语法分析检查文本的意义。例如,像“热冰淇淋”这样的句子会被语义分析器拒绝。

从这个意义上来说,句法分析或句法分析可以定义为对自然语言中符合形式语法规则的符号串进行分析的过程。“解析”一词源自拉丁语“pars”,意思是“部分”

解析器的概念

它用于实现解析任务。它可以被定义为设计用于获取输入数据(文本)并在按照正式语法检查正确语法后给出输入的结构表示的软件组件。它还通常以解析树或抽象语法树或其他层次结构的形式构建数据结构。

符号表

解析的主要作用包括 -

  • 报告任何语法错误。

  • 从常见错误中恢复,以便可以继续处理程序的其余部分。

  • 创建解析树。

  • 创建符号表。

  • 产生中间表示(IR)。

解析类型

推导将解析分为以下两种类型 -

  • 自上而下的解析

  • 自底向上解析

自上而下的解析

在这种解析中,解析器从起始符号开始构造解析树,然后尝试将起始符号转换为输入。自顶向下解析的最常见形式使用递归过程来处理输入。递归下降解析的主要缺点是回溯。

自底向上解析

在这种解析中,解析器从输入符号开始,并尝试构建解析器树直到起始符号。

推导的概念

为了获取输入字符串,我们需要一系列产生式规则。推导是一组产生式规则。在解析过程中,我们需要确定要替换的非终结符,并确定产生式规则,并借助生成规则来替换非终结符。

推导类型

在本节中,我们将了解两种类型的推导,它们可用于决定用产生式规则替换哪个非终结符 -

最左推导

在最左边的推导中,从左到右扫描和替换输入的句子形式。这种情况下的句子形式称为左句形式。

最右推导

在最左边的推导中,从右到左扫描和替换输入的句子形式。这种情况下的句子形式称为右句形式。

解析树的概念

它可以被定义为推导的图形描述。推导的起始符号作为解析树的根。在每个解析树中,叶节点是终端节点,内部节点是非终端节点。解析树的一个特性是中序遍历将产生原始输入字符串。

语法概念

语法对于描述格式良好的程序的句法结构非常重要。从文学意义上来说,它们表示自然语言对话的句法规则。自从英语、印地语等自然语言诞生以来,语言学就一直试图定义语法。

形式语言理论也适用于计算机科学领域,主要是编程语言和数据结构。例如,在“C”语言中,精确的语法规则规定了如何从列表和语句组成函数。

诺姆·乔姆斯基 (Noam Chomsky)于 1956 年给出了语法的数学模型,该模型对于编写计算机语言非常有效。

在数学上,语法 G 可以正式写为 4 元组 (N, T, S, P),其中 -

  • NV N = 非终结符号集,即变量。

  • TΣ = 终端符号集。

  • S = 起始符号,其中 S ∈ N

  • P表示终结符和非终结符的产生式规则。它的形式为 α → β,其中 α 和 β 是 V N ∪ Σ上的串,并且 α 的至少一个符号属于 V N

短语结构或成分语法

诺姆·乔姆斯基提出的短语结构语法是基于选区关系的。这就是为什么它也被称为选区语法。它与依存语法相反。

例子

在举例说明选区语法之前,我们需要了解选区语法和选区关系的基本要点。

  • 所有相关框架都是从选区关系的角度来看待句子结构的。

  • 选区关系源自拉丁语和希腊语语法的主谓划分。

  • 基本从句结构可以通过名词短语 NP动词短语 VP来理解。

我们可以将句子“这棵树正在说明选区关系”写如下 -

选区关系

依存语法

它与选区语法相反,基于依赖关系。它是由 Lucien Tesniere 介绍的。依存语法(DG)与选区语法相反,因为它缺少短语节点。

例子

在给出依存语法的例子之前,我们需要了解依存语法和依存关系的基本要点。

  • 在 DG 中,语言单元(即单词)通过有向链接相互连接。

  • 动词成为从句结构的中心。

  • 所有其他句法单元都通过有向链接与动词连接。这些语法单元称为依赖关系

我们可以将句子“这棵树正在说明依赖关系”写成如下;

说明依赖性

使用选区语法的解析树称为基于选区的解析树;使用依存语法的解析树称为基于依存语法分析树。

上下文无关语法

上下文无关语法,也称为 CFG,是一种描述语言的符号,是正则语法的超集。如下图所示 -

上下文无关语法

CFG的定义

CFG 由有限的语法规则集组成,具有以下四个组成部分 -

非终结符集

它用 V 表示。非终结符是表示字符串集合的语法变量,这进一步帮助定义由语法生成的语言。

端子组

它也称为代币,由 Σ 定义。字符串由终结符的基本符号组成。

作品集

它用 P 表示。该集合定义了终结符和非终结符如何组合。每个产生式(P)都由非终结符、箭头和终结符(终结符的序列)组成。非终结符称为产生式的左侧,终结符称为产生式的右侧。

开始符号

生产从起始符号开始。它由符号S表示。非终结符号总是被指定为起始符号。