句法分析——CYK分析算法

文章目录

  • CYK分析算法
    • 1 CYK算法的条件
    • 2 算法描述
    • 3 示例
    • 4 算法评价

CYK分析算法

  形式语言知识:形式语言

1 CYK算法的条件

  CYK算法(Coke-Younger-Kasami)算法,也是基于CFG规则的分析算法,是一种自底向上的分析算法,CYK算法分析需要的是乔姆斯基文法的范式化,即只有这两种规则:

  1. A → w A\rightarrow w Aw
  2. A → B C A\rightarrow BC ABC

其中 A , B , C A,B,C A,B,C为非终结符, w w w为终结符,因此需要先对文法进行范式化才能够进行CYK分析。CYK算法需要构造一个 ( n + 1 ) ∗ ( n + 1 ) (n+1)*(n+1) (n+1)(n+1)识别矩阵, n n n为输入句子长度(句子: x = w 1 w 2 ⋯ w n x=w_1w_2\cdots w_n x=w1w2wn w i w_i wi为构成句子的单词)。识别矩阵的构成如下:

  • 方阵对角线以下全部为0
  • 主对角线以上的元素由文法 G G G的非终结符构成
  • 主对角线上的元素由输入句子的终结符号(单词)构成

2 算法描述

  构造识别矩阵步骤如下:

  1. 首先构造主对角线,令 t 0 , 0 = 0 t_{0,0}=0 t0,0=0,然后从 t 1 , 1 t_{1,1} t1,1 t n , n t_{n,n} tn,n在主对角线的位置上依次放入输入句子 x x x的单词 w i w_i wi
  2. 构造主对角线以上紧靠主对角线的元素 t i , i + 1 t_{i,i+1} ti,i+1,其中 i = 0 , 1 , 2 , ⋯   , n − 1 i=0,1,2,\cdots,n-1 i=0,1,2,,n1。对于输入句子 x = w 1 w 2 ⋯ w n x=w_1w_2\cdots w_n x=w1w2wn,从 w 1 w_1 w1开始分析:
    如果在文法 G G G的产生式集中有一条规则 A → w 1 A\rightarrow w_1 Aw1,则填充 t 0 , 1 = A t_{0,1}=A t0,1=A,依此类推,如果有 A → w i + 1 A\rightarrow w_{i+1} Awi+1,则 t i , i + 1 = A t_{i,i+1}=A ti,i+1=A。即,对于主对角线上的每一个终结符 w i w_i wi,所有可能推导出它的非终结符写在它的右边主对角线上方的位置上。
  3. 按平行于主对角线的方向,一层一层地向上填写矩阵的各个元素 t i , j t_{i,j} ti,j,其中 i = 0 , 1 , ⋯   , n − d j = d + i d = 2 , 3 , ⋯   , n i=0,1,\cdots,n-d\\ j=d+i\\ d=2,3,\cdots,n i=0,1,,ndj=d+id=2,3,,n
    如果存在一个正整数 k ( i + 1 ≤ k ≤ j − 1 ) k(i+1\le k \le j-1) k(i+1kj1),在文法 G G G的规则集中有产生式 A → B C A\rightarrow BC ABC,并且 B ∈ t i , k , C ∈ t k , j B\in t_{i,k},C\in t_{k,j} Bti,k,Ctk,j,那么将 A A A写到矩阵 t i , j t_{i,j} ti,j位置上。

  判断句子 x x x由文法 G G G所产生的充要条件是: t 0 , n = S t_{0,n}=S t0,n=S。下面两张图来解释构造识别矩阵的步骤:

句法分析——CYK分析算法_第1张图片
句法分析——CYK分析算法_第2张图片

3 示例

  给定文法 G ( S ) G(S) G(S)如下:
S → P     V P V P → V     V V P → V P     N P → 他 V → 喜 欢 V → 读 N → 书 S\rightarrow P\ \ \ VP\\ VP\rightarrow V\ \ \ V\\ VP\rightarrow VP\ \ \ N\\ P\rightarrow 他\\ V\rightarrow 喜欢\\ V\rightarrow 读\\ N\rightarrow 书\\ SP   VPVPV   VVPVP   NPVVN
使用CYK算法分析句子:他喜欢读书
  分析如下:
(1)汉语分词并词性标注得到: 他 / P    喜 欢 / V    读 / V    书 / N 他/P\ \ 喜欢/V\ \ 读/V\ \ 书/N /P  /V  /V  /N
(2)构造识别矩阵并根据文法规则执行分析过程:

  得到的分析树如下:

句法分析——CYK分析算法_第3张图片

4 算法评价

  优点:简单易行,执行效率高。
  弱点:必须对文法进行范式化处理;无法区分歧义。

参考资料:《统计自然语言处理》宗成庆

你可能感兴趣的:(算法和数据结构,自然语言处理,自然语言处理)