文章目录

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

CYK分析算法

  形式语言知识:形式语言

1 CYK算法的条件

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

  1. A→wA\rightarrow wA→w
  2. A→BCA\rightarrow BCA→BC

其中A,B,CA,B,CA,B,C为非终结符,www为终结符,因此需要先对文法进行范式化才能够进行CYK分析。CYK算法需要构造一个(n+1)∗(n+1)(n+1)*(n+1)(n+1)∗(n+1)识别矩阵,nnn为输入句子长度(句子:x=w1w2⋯wnx=w_1w_2\cdots w_nx=w1​w2​⋯wn​,wiw_iwi​为构成句子的单词)。识别矩阵的构成如下:

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

2 算法描述

  构造识别矩阵步骤如下:

  1. 首先构造主对角线,令t0,0=0t_{0,0}=0t0,0​=0,然后从t1,1t_{1,1}t1,1​到tn,nt_{n,n}tn,n​在主对角线的位置上依次放入输入句子xxx的单词wiw_iwi​;
  2. 构造主对角线以上紧靠主对角线的元素ti,i+1t_{i,i+1}ti,i+1​,其中i=0,1,2,⋯,n−1i=0,1,2,\cdots,n-1i=0,1,2,⋯,n−1。对于输入句子x=w1w2⋯wnx=w_1w_2\cdots w_nx=w1​w2​⋯wn​,从w1w_1w1​开始分析:
    如果在文法GGG的产生式集中有一条规则A→w1A\rightarrow w_1A→w1​,则填充t0,1=At_{0,1}=At0,1​=A,依此类推,如果有A→wi+1A\rightarrow w_{i+1}A→wi+1​,则ti,i+1=At_{i,i+1}=Ati,i+1​=A。即,对于主对角线上的每一个终结符wiw_iwi​,所有可能推导出它的非终结符写在它的右边主对角线上方的位置上。
  3. 按平行于主对角线的方向,一层一层地向上填写矩阵的各个元素ti,jt_{i,j}ti,j​,其中i=0,1,⋯,n−dj=d+id=2,3,⋯,ni=0,1,\cdots,n-d\\ j=d+i\\ d=2,3,\cdots,ni=0,1,⋯,n−dj=d+id=2,3,⋯,n
    如果存在一个正整数k(i+1≤k≤j−1)k(i+1\le k \le j-1)k(i+1≤k≤j−1),在文法GGG的规则集中有产生式A→BCA\rightarrow BCA→BC,并且B∈ti,k,C∈tk,jB\in t_{i,k},C\in t_{k,j}B∈ti,k​,C∈tk,j​,那么将AAA写到矩阵ti,jt_{i,j}ti,j​位置上。

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

3 示例

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

  得到的分析树如下:

4 算法评价

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

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

句法分析——CYK分析算法相关推荐

  1. Python --深入浅出Apriori关联分析算法(二) Apriori关联规则实战

    上一篇我们讲了关联分析的几个概念,支持度,置信度,提升度.以及如何利用Apriori算法高效地根据物品的支持度找出所有物品的频繁项集. Python --深入浅出Apriori关联分析算法(一) 这次 ...

  2. 对象是否要被回收(引用计数和可达性分析算法)

    java堆和方法区主要存放各种类型的对象(方法区中也存储一些静态变量和全局常量等信息),那么我们在使用GC对其进行回收的时候首先要考虑的就是如何判断一个对象是否应该被回收.也就是要判断一个对象是否还有 ...

  3. 【Java 虚拟机原理】垃圾回收算法 ( 可达性分析算法 | GC Root 示例 | GC 回收前的两次标记 | finalize 方法示例 )

    文章目录 一.可达性分析算法 二.GC Root 示例 三.GC 回收前的两次标记 四.finalize 方法示例 一.可达性分析算法 在 堆内存 中 , 存在一个 根对象 GC Root , GC ...

  4. 【计算理论】计算复杂性 ( 小 O 记号 | 严格渐进上界 | 分析算法的时间复杂度 )

    文章目录 一.小 O 记号 ( 严格渐进上界 ) 二.分析算法的时间复杂度 一.小 O 记号 ( 严格渐进上界 ) 如果 g(n)\rm g(n)g(n) 是 f(n)\rm f(n)f(n) 渐进上 ...

  5. Interview:算法岗位面试—11.17下午上海某网**软件公司(上市)技术面之比赛考察、目标检测算法、视频分析算法考点

    Interview:算法岗位面试-11.17下午上海某网**软件公司(上市)技术面之比赛考察.目标检测算法.视频分析算法考点 导读:邀约的下午14.30,到的时候前边有两个学生在等待,当轮到我的时候, ...

  6. JVM 垃圾回收算法 -可达性分析算法!!!高频面试!!!

    前言:学习JVM,那么不可避免的要去了解JVM相关的垃圾回收算法,本文只是讲了讲了可达性分析算法,至于标记-清除.标记-复制,标记-整理,分代收集等等算法,会在近两天的文章中陆续更新出来. 很喜欢一句 ...

  7. C/C++快速读写磁盘数据的方法-块读取/异步/优化分析算法/内存文件映射的原理和使用

    快速读写磁盘数据的方法: 1.块读取:一下子将数据读取到内存的(无论是文本还是二进制),而不是一行行的读取. 2.异步的IO,创建多线程,或者使用重叠IO,IO复用,异步的事件回调通知机制(可以用事件 ...

  8. 31. 如何计算对象已死(引用计数器算法、可达性分析算法)32.对象是否可 GC?33. Minor GC 和 Full GC

    31. 如何计算对象已死 31.1.引用计数器算法 引用计数器算法是给每个对象设置一个计数器,当有地方引用这个对象的时候,计数器+1,当引用失效的时候,计数器-1,当计数器为0的时候,JVM就认为对象 ...

  9. 3.内存分配、逃逸分析与栈上分配、直接内存和运行时常量池、基本类型的包装类和常量池、TLAB、可达性分析算法(学习笔记)

    3.JVM内存分配 3.1.内存分配概述 3.2.内存分配–Eden区域 3.3.内存分配–大对象直接进老年代 3.3.1.背景 3.3.2.解析 3.4.内存分配–长期存活的对象进去老年代 3.5. ...

  10. 对下图所示的连通网络G,用克鲁斯卡尔(Kruskal)算法求G的最小生成树T,请写出在算法执行过程中,依次加入T的边集TE中的边。说明该算法的基本思想及贪心策略,并简要分析算法的时间复杂度

    对下图所示的连通网络G,用克鲁斯卡尔(Kruskal)算法求G的最小生成树T,请写出在算法执行过程中,依次加入T的边集TE中的 边.说明该算法的基本思想及贪心策略,并简要分析算法的时间复杂度

最新文章

  1. Timer TimeTask Handler
  2. java防止表单重复提交
  3. linux 线程退出 signal,Linux signal 那些事儿 (3)
  4. java try catch陷阱_Java异常处理最佳实践及陷阱防范
  5. 计算机图书管理属于计算机应用中的,计算机在图书管理中应用探究.doc
  6. linux分支结构,实验四 Shell脚本中的分支结构
  7. wps比对两列数据重复_“两个wps表格,怎么比对重复的数据?“两个表格对照核对...
  8. 来看看2022年各地移动政务服务新变化
  9. 投资心理和关于延迟满足的三个实验
  10. 安卓系统中默认打开蓝牙 HCI snoop 文件的方法
  11. 相机的对焦是什么意思?为什么需要对焦?
  12. 计算机电源多低无法使用吗,怎么确定电脑电源供电不足?
  13. 请总结描述用户和组管理类命令的使用方法并完成以下练习
  14. 了解汽车贷款全过程,不要掉进车贷“坑”!
  15. ubuntu双系统引导梅花_Win10+ubuntu 双系统安装顺顺利利!
  16. 【数字IC前端笔试真题精刷(2022.8.14)】大疆——数字芯片开发工程师B卷
  17. MATLAB代码:基于多目标遗传算法的分布式电源选址定容研究
  18. 西红柿炒鸡蛋怎么做(大厨教程 教你炒出饭店的味道)
  19. 数据结构 day07 基础知识学习 (二叉树 的 前中后遍历 ,插入节点,删除叶子节点, 二叉树的节点个数 )
  20. 彩色图像的二值化,取经之旅第 6 天

热门文章

  1. CSFB和SRVCC
  2. HZOI20190903模拟36 字符,蛋糕,游戏
  3. win10电脑插上U盘不显示盘符如何办?
  4. IDEA - 如何安装Statistic代码统计插件?
  5. 完全免费最好的在线pdf转换成word免费版
  6. WinForm messagebox 确定取消按钮事件
  7. html的abbr标签,html标签里有个abbr 请问这个标签是肿么使用的
  8. Web项目【用户管理系统】完整版
  9. CSDN,一个可能即将被遗忘的角落
  10. 用户一键登陆,如何实现?了解一下!