自然语言处理7——句法分析

自然语言处理7——句法分析

概念

句法分析是语言处理的瓶颈之一:大部分句子不符合语法结构,存在各种语法歧义;下游的任务离不开句法分析。

输入:句子 输出:合乎语法的句法结构

分类:

  • 短语结构分析

    • 完全句法分析:根据输入的句子,给出完整的句法分析树

    • 浅层句法分析(局部句法分析):给出很浅层的句法分析树

      输入的句子可能是比较随性的,构造的分析树就容易出错,规则不一定覆盖所有的语言现象,有些应用不需要一个完全句法分析树,只需要告诉哪些词可以作为一个组块

  • 依存句法分析

难点:一个句子对应多种句法分析树;汉语的词类和句法成分不存在一一对应的关系

资源:宾州树库;清华中文树库等

句法分析器

输入:词序列 输出:句法分析树

本质:线性序列->非线性序列

句法分析树的理解:

  • 给定 一个句子得到一个句法分析树,将词与词的关系、词的语法角色标识清楚
  • 不知道某个词的语法角色,但是知道它属于什么短语

方法

语言文法:四元组: G = ( V N , V T , R , S ) G = (V_N,V_T,R,S) G=(VN,VT,R,S),描述的是什么语言现象能被什么语言现象所表示,如:句子能由NP+VP进行表示。

  • V N V_N VN:非终结符的集合,表示句子结构分析的中间成分。
  • V T V_T VT:终结符集合,相当于词汇表。
  • R R R:规则集,形式: α − > β \alpha -> \beta α>β,其中 α \alpha α必须要有非终结符的出现。
  • S S S:初始符号,代表语言的句子。

基于PCFG(概率上下文无关文法)概率统计的分析方法

用标注好的语料库训练CFG文法,从而给出句法分析树

把规则上加上概率,对每条规则,记录它的概率,即它出现的频率

约束:规则左侧相同的概率加起来=1

求一棵树的概率:

基本假设:

  • 位置无关:子树的概率与构成子树所在的位置无关
  • 上下文无关:子树的概率与子树之外的词无关
  • 祖先无关:子树的概率与子树外的节点无关

句法分析树概率 = 该分析树上所有规则的概率之积 (选择概率最大的句法分析树)

句子概率 = 该句子的各种句法分析树的概率之和 (可用于评价构建的是否好)

规则概率估计

步骤:

  • 编写语言规则
  • 构建树库
  • 在树库上统计该规则及其非终结符的频率, P ( A − > α ) = c ( A − > α ) c ( A ) P(A->\alpha) = \frac{c(A->\alpha)}{c(A)} P(A>α)=c(A)c(A>α)
基本问题
给定文法G,计算由G生成句子S的概率

相当于给定HMM模型,计算生成观察序列的概率

用于评价文法好不好,若好,则文法生成句子的概率很高

方法:采用动态规划算法,将句法分析树的概率计算转化为句法分析树的子树的概率计算

向内算法:

w i . . . . w j w_i....w_j wi....wj子串的概率

在这里插入图片描述

向内变量: α i j ( A ) = P ( A − > w i . . . w j ) = P ( w i . . . w j ∣ A ) \alpha_{ij}(A) = P(A->w_i...w_j) = P(w_i...w_j|A) αij(A)=P(A>wi...wj)=P(wi...wjA)

递推公式:

α i i ( A ) = P ( A − > w i i ) \alpha_{ii}(A) = P(A->w_{ii}) αii(A)=P(A>wii)

α i j ( A ) = ∑ B , C ∈ V N ∑ i ≤ k ≤ j p ( A − > B C ) α i k ( B ) α ( k + 1 ) j ( C ) \alpha_{ij}(A) = \sum \limits_{B,C \in V_N} \sum \limits_{i\leq k \leq j}p(A->BC)\alpha_{ik}(B)\alpha_{(k+1)j}(C) αij(A)=B,CVNikjp(A>BC)αik(B)α(k+1)j(C)

其中B,C可能有很多组合,所以要进行累加

步骤:

  • 初始化: α i i ( A ) = P ( A − > w i i ) \alpha_{ii}(A) = P(A->w_{ii}) αii(A)=P(A>wii) 词性概率
  • 归纳计算,j从1到n,i从1到n-j,重复 α i , i + j ( A ) = ∑ B , C ∈ V N ∑ i ≤ k ≤ j p ( A − > B C ) α i k ( B ) α k + 1 , i + j ( C ) \alpha_{i,i+j}(A) = \sum \limits_{B,C \in V_N} \sum \limits_{i\leq k \leq j}p(A->BC)\alpha_{ik}(B)\alpha_{k+1,i+j}(C) αi,i+j(A)=B,CVNikjp(A>BC)αik(B)αk+1,i+j(C)计算句法子树概率
  • 结束:句子生成概率: P ( S ∣ G ) = α 1 , n ( S ) P(S|G) = \alpha_{1,n}(S) P(SG)=α1,n(S)
寻找句子S的最优句法分析树

方法:采用动态规划算法,将句法分析树的概率计算转化为句法分析树的子树的概率计算

Viterbi算法

建立一个向内变量,向内变量的递归运算取最大值,同时维护一个指向上一步的最大值

步骤:

  • 初始化: α i i ( A ) = P ( A − > w i i ) \alpha_{ii}(A) = P(A->w_{ii}) αii(A)=P(A>wii) 词性概率
  • 动态规划,j从1到n,i从1到n-j,重复 α i , i + j ( A ) = max ⁡ B , C , k p ( A − > B C ) α i k ( B ) α k + 1 , i + j ( C ) \alpha_{i,i+j}(A) = \max \limits_{B,C,k}p(A->BC)\alpha_{ik}(B)\alpha_{k+1,i+j}(C) αi,i+j(A)=B,C,kmaxp(A>BC)αik(B)αk+1,i+j(C),维护一个指向上一步最大值的指针
  • 结束: P ( t ∗ ) = α 1 , n ( S ) P(t^*) = \alpha_{1,n}(S) P(t)=α1,n(S) t ∗ t^* t的根节点为S,同时指针回溯得到S的最优树结构
模型参数训练问题

没有训练语料库如何得到文法G

向内向外算法(EM算法):

随机地给一个参数值得到一个语法,根据文法和训练语料,得到语法规则使用次数的期望值,以期望次数用最大似然估计得到语法参数新的估计值,得到新的语法,由得到的新语法得到使用次数期望值,重新估计语法参数。

向外算法:

自顶向下

向外变量:非终结符A的外部概率,即根据文法从A推出词串 w i . . . . w j w_i....w_j wi....wj的上下文的概率 β i j ( A ) = P ( w 1 . . . w i − 1 A w j . . . w n ∣ S ) \beta_{ij}(A) = P(w_1...w_i-1Aw_j...w_n|S) βij(A)=P(w1...wi1Awj...wnS)

在这里插入图片描述

步骤:

  • 初始化
    β 1 , n ( A ) = 1 , A = S = 0 , A ≠ S \begin{aligned} \beta_{1,n}(A) &= 1,A=S \\ &=0,A\neq S \end{aligned} β1,n(A)=1,A=S=0,A=S

  • 归纳计算:j从n-1到0,i从1到n-j,重复计算 β i j ( A ) = ∑ B , C , j < k β i j ( C ) P ( C − > A B ) α j + 1 , k ( B ) + ∑ B , C , h < i β i j ( C ) P ( C − > B A ) α h , j − 1 ( B ) \beta_{ij}(A) = \sum \limits_{B,C,j<k} \beta_{ij}(C)P(C->AB)\alpha_{j+1,k}(B) + \sum \limits_{B,C,h<i} \beta_{ij}(C)P(C->BA)\alpha_{h,j-1}(B) βij(A)=B,C,j<kβij(C)P(C>AB)αj+1,k(B)+B,C,h<iβij(C)P(C>BA)αh,j1(B)

向内向外算法:

步骤:

  • 初始化:随机给 P ( A − > μ ) P(A->\mu) P(A>μ)赋值
  • E步骤:计算期望值 C ( A − > B C ) C(A->BC) C(A>BC) C ( A − > a ) C(A->a) C(A>a)
  • M步骤:用E步骤所得的期望值利用 P ( A − > B C ) = C ( A − > B C ) ∑ μ C ( A − > μ ) P(A->BC) = \frac{C(A->BC)}{\sum_{\mu}C(A->\mu)} P(A>BC)=μC(A>μ)C(A>BC)求出每一条规则的值
  • 重新估计 P ( A − > μ ) P(A->\mu) P(A>μ)得到语法 G i + 1 G_{i+1} Gi+1,直到 P ( A − > μ ) P(A->\mu) P(A>μ)收敛
优点

可以利用概率减少分析的搜索空间,加快效率

对句法分析的歧义结果进行概率排序

对概率较低的子树可剪枝

定量地比较两个语法的性能,提高了文法的容错能力

缺点

需要高精度的、规模足够大的树库支持

没有考虑词对结构分析的影响

基于CFG(上下文无关文法)规则的分析方法

不需要训练,只需要有规则库,根据规则构建句法分析树

线图分析法

线图:一组节点和边的集合

节点:输入字符串中的字符间隔

边:<起点,终点,标记>,标记为非终结符或终结符

步骤:

  • 查看任意相邻几条边上的词性串是否与某条重写规则的右部相同
  • 如果相同,则增加一条新的边跨越原来相应的边,新增加边上的标记为这条重写规则的头**(左部)**。
  • 重复这个过程,直到没有新的边产生。

在这里插入图片描述

点规则:表示规则右部被归约的程度,点的左边表示已经匹配上了,右边表示未被匹配

在这里插入图片描述

基于HMM的浅层分析技术

组块分析:在线性序列中插入括号,来标示组块边界

可观察符号序列:词性标记对序列 < α , β > <\alpha,\beta> <α,β>

隐状态:5个可能的NP组块边界标记

  • [ :一个NP组块的开始
  • ]:结束
  • I:表示不是NP组块边界,且处于NP内部
  • O:表示不是NP组块边界,且处于NP外部

往期文章:
自然语言处理1——NLP概述
自然语言处理2——语言学基础
自然语言处理3——语言学资源
自然语言处理4——统计语言模型
自然语言处理5——词法分析
自然语言处理6——HMM模型和词性标注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值