NLP-句法分析概述

句法分析概述

一. 句法分析概述:

  1. 定义:判断单词串是否属于某个语言(recognition),如果是,则给出其(树)结构(parsing)

  2. 句法分析常见任务:

    1). 判断输入的字符串是否属于某种语言

    2). 消除输入句子中词法和结构等方面的歧义

    3). 分析输入句子的内部结构,如成分构成、上下文关系等。

    通常默认知道当前处理的文本的语言种类,着重的是任务2)、3)。

  3. 语言的描述:

    1). 穷举法:把语言中的所有句子都枚举出来。

    2). 文法描述:构造规则,定义语言,生成句子。

    3). 自动机:构造自动机,用于识别针对某一语言的句子。

  4. 文法种类:

    正则文法(RG),上下文无关文法(CFG),上下文相关文法(CSG),无约束文法(PSG)

二. 移进规约算法:

  1. CFG描述语言举例:

    句子:老师被迟到的学生逗乐了

    CFG规则:

    1). S ➔ np vp 2). np ➔ n 3). np ➔ cs de 4). vp ➔ vp u

    5). pp ➔ p np 6). np ➔ n 7). vp ➔ v 8). n ➔ 老师 | 学生 …

    9). v ➔ 迟到 | 逗乐 … 10). p ➔ 被 … 11). u ➔ 的| 了 …

    语法分析树:

    QQ图片20200919154821
  2. 主要处理策略:

    1). 自底向上:从待分析字符串开头,逐步匹配CFG规则剪头的又不字符,直到S(相当于从底部向上构造语法分析树)。

    2). 自顶向下:从规则S开始,需按照相应的规则,用左部替换又不,知道完全匹配为待分析字符串(相当于自上而下构造语法分析树)。

  3. 移进规约算法:

    1). 数据结构:栈

    2). 操作:

    • 移进(Shift - sh):从句子左端讲一个终结符移到栈顶
    • 规约(Reduce - r):根据规则,将栈顶的若干符号替换成一个符号
    • 接受:句子中所有词语已移到栈中,栈中只剩下一个符号S,分析成功,算法结束
    • 拒绝:句子中所有词语已移到栈中,栈中非只有一个符号S,无法继续规约,分析失败,算法结束

    3). 冲突处理方式:回溯法

    ​ 在算法的处理过程中,可能会出现既可以移进,也可以规约的情况:移进-规约冲突,这时有限进行规约,如果最终分析失败则返回尝试移进。

    ​ 另外一种冲突是规约-规约冲突:可以用不同规则进行规约。这时有限制性排在前面的规则,分析失败则回溯顺次尝试。

    4). 实例:

    规则:1) S ➔ NP VP 2) NP ➔ N 3) NP ➔ CS de

    ​ 4) CS ➔ NP V' 5) VP ➔ V NP 6) V' ➔ V V

    句子:我 是 上帝 派 来 的

    ​ N V N V V de

    分析过程:

    实例2 00_00_00-00_00_30

    5). 语法树:

    语法树2