文章目录

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

CYK分析算法


1 CYK算法的条件

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

  1. cyk 算法 python cyk分析算法_cyk 算法 python
  2. cyk 算法 python cyk分析算法_算法分析_02

其中cyk 算法 python cyk分析算法_形式语言_03为非终结符,cyk 算法 python cyk分析算法_形式语言_04为终结符,因此需要先对文法进行范式化才能够进行CYK分析。CYK算法需要构造一个cyk 算法 python cyk分析算法_算法分析_05识别矩阵,cyk 算法 python cyk分析算法_自底向上_06为输入句子长度(句子:cyk 算法 python cyk分析算法_形式语言_07cyk 算法 python cyk分析算法_形式语言_08为构成句子的单词)。识别矩阵的构成如下:

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

2 算法描述

  构造识别矩阵步骤如下:

  1. 首先构造主对角线,令cyk 算法 python cyk分析算法_算法分析_10,然后从cyk 算法 python cyk分析算法_形式语言_11cyk 算法 python cyk分析算法_形式语言_12在主对角线的位置上依次放入输入句子cyk 算法 python cyk分析算法_形式语言_13的单词cyk 算法 python cyk分析算法_算法分析_14
  2. 构造主对角线以上紧靠主对角线的元素cyk 算法 python cyk分析算法_自然语言处理_15,其中cyk 算法 python cyk分析算法_形式语言_16。对于输入句子cyk 算法 python cyk分析算法_自底向上_17,从cyk 算法 python cyk分析算法_自底向上_18开始分析:
    如果在文法cyk 算法 python cyk分析算法_算法分析_09的产生式集中有一条规则cyk 算法 python cyk分析算法_形式语言_20,则填充cyk 算法 python cyk分析算法_cyk 算法 python_21,依此类推,如果有cyk 算法 python cyk分析算法_自然语言处理_22,则cyk 算法 python cyk分析算法_自底向上_23。即,对于主对角线上的每一个终结符cyk 算法 python cyk分析算法_算法分析_14,所有可能推导出它的非终结符写在它的右边主对角线上方的位置上。
  3. 按平行于主对角线的方向,一层一层地向上填写矩阵的各个元素cyk 算法 python cyk分析算法_自底向上_25,其中cyk 算法 python cyk分析算法_自然语言处理_26
    如果存在一个正整数cyk 算法 python cyk分析算法_自然语言处理_27,在文法cyk 算法 python cyk分析算法_算法分析_09的规则集中有产生式cyk 算法 python cyk分析算法_算法分析_02,并且cyk 算法 python cyk分析算法_自然语言处理_30,那么将cyk 算法 python cyk分析算法_形式语言_31写到矩阵cyk 算法 python cyk分析算法_自底向上_25位置上。

判断句子cyk 算法 python cyk分析算法_形式语言_33由文法cyk 算法 python cyk分析算法_形式语言_34所产生的充要条件是:cyk 算法 python cyk分析算法_形式语言_35。下面两张图来解释构造识别矩阵的步骤:




cyk 算法 python cyk分析算法_形式语言_36



cyk 算法 python cyk分析算法_cyk 算法 python_37


3 示例

cyk 算法 python cyk分析算法_算法分析_38如下:
cyk 算法 python cyk分析算法_自底向上_39
使用CYK算法分析句子:他喜欢读书
  分析如下:
(1)汉语分词并词性标注得到:cyk 算法 python cyk分析算法_自底向上_40
(2)构造识别矩阵并根据文法规则执行分析过程:



cyk 算法 python cyk分析算法_自底向上_41



cyk 算法 python cyk分析算法_形式语言_42



cyk 算法 python cyk分析算法_形式语言_43



cyk 算法 python cyk分析算法_形式语言_44



cyk 算法 python cyk分析算法_形式语言_45



cyk 算法 python cyk分析算法_自然语言处理_46


  得到的分析树如下:



cyk 算法 python cyk分析算法_形式语言_47


4 算法评价

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

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