文章目录
- CYK分析算法
- 1 CYK算法的条件
- 2 算法描述
- 3 示例
- 4 算法评价
CYK分析算法
1 CYK算法的条件
CYK算法(Coke-Younger-Kasami)算法,也是基于CFG规则的分析算法,是一种自底向上的分析算法,CYK算法分析需要的是乔姆斯基文法的范式化,即只有这两种规则:
其中为非终结符,为终结符,因此需要先对文法进行范式化才能够进行CYK分析。CYK算法需要构造一个识别矩阵,为输入句子长度(句子:,为构成句子的单词)。识别矩阵的构成如下:
- 方阵对角线以下全部为0
- 主对角线以上的元素由文法的非终结符构成
- 主对角线上的元素由输入句子的终结符号(单词)构成
2 算法描述
构造识别矩阵步骤如下:
- 首先构造主对角线,令,然后从到在主对角线的位置上依次放入输入句子的单词;
- 构造主对角线以上紧靠主对角线的元素,其中。对于输入句子,从开始分析:
如果在文法的产生式集中有一条规则,则填充,依此类推,如果有,则。即,对于主对角线上的每一个终结符,所有可能推导出它的非终结符写在它的右边主对角线上方的位置上。 - 按平行于主对角线的方向,一层一层地向上填写矩阵的各个元素,其中
如果存在一个正整数,在文法的规则集中有产生式,并且,那么将写到矩阵位置上。
判断句子由文法所产生的充要条件是:。下面两张图来解释构造识别矩阵的步骤:
3 示例
如下:
使用CYK算法分析句子:他喜欢读书
分析如下:
(1)汉语分词并词性标注得到:。
(2)构造识别矩阵并根据文法规则执行分析过程:
得到的分析树如下:
4 算法评价
优点:简单易行,执行效率高。
弱点:必须对文法进行范式化处理;无法区分歧义。
参考资料:《统计自然语言处理》宗成庆