原文链接:

K-best Iterative Viterbi Parsinggodweiyang.com

本文链接:EACL17

介绍

CKY算法或维特比inside算法是成分句法分析的主要方法之一,但是当产生式数量特别大之后,时间复杂度也线性增大。可行的一种方法是剪枝,但是剪枝会造成准确率的下降。所以本文就提出了一种迭代的维特比句法分析算法,通过剪枝去除掉没用的边。实验表明,时间上加快了一个数量级,但是本文并没有说准确率怎么样。。。

本文用到的inside和outside算法之前已经介绍过了,详见PCFG中inside和outside算法详解。

算法框架

分层聚类

首先提出分层聚类的概念。

如上图所示,原来的类别标记有很多,将他们聚类成几个小类,再将这几个小类聚成更小的类,依次下去,最后类别标记会少很多很多。

以上图为例,  ,聚类之后的分析表为b图,原始的分析表为a图,聚类之后的表(下面叫粗表)b唯一对应了聚类之前的表(下面叫原始表)a,而反过来原始表a能对应多种不同的粗表b。

形式化定义

我们将类别分为  层,分别表示为  ,那么第  层的类别集合  就是原始的类别集合,而  到  层的类别就称之为收缩符号。

对于  ,我们定义  ,其中  就是  的一个子集。该式将  中的一个类别  映射为了  中所有聚类为  的类别集合。

举个例子吧,在第一张图中,  。如果  ,那么  。

那么对于  ,我们定义产生式  的概率为:

也就是说,粗表中的每一棵句法树都给出了它在原始表中的句法树的分数的上界,通俗说就是,如果把粗表中的收缩符号全部替换成原始表中的符号,那么新的句法树的分数一定会小于等于粗表中的句法树。

引理

如果粗表中的最优句法树  不包含任意收缩符号,那么它等价于原始表中的最优句法树。

证明:
令  等于原始表中的句法树集合,  等于没有出现在粗表中,但是出现在原始表中的句法树集合,  等于粗表中的句法树集合。

那么对于每一个句法树  ,都存在唯一的句法树  与之对应。所以可以推出:

这就意味着  也是原始表中的最优句法树。

伪代码

  •  初始化为句法树的最优得分或者负无穷,其中det()用来求解句法树的最优得分,但是没有必要真的求出最优句法树,只需要在每个结点处保留得分最高的边即可。尽管这样得出来的句法树基本不是最高的,但是能够缩小  范围即可。

  • init-chart()首先初始化分析表,全部初始化为收缩符号。

  • 然后开始迭代过程,首先执行维特比inside算法,也就是CKY算法Viterbi-inside(),得到最优句法树  。

  • 如果最优句法树不含有任意收缩符号,那么迭代结束,直接返回该句法树。

  • 否则的话,更新  为最优句法树的分数best()

  • expand-chart()将所有收缩符号替换为下一层的收缩符号。

  • Viterbi-outside()计算outside值。

  • prune-chart()进行剪枝,过滤掉无用的边。

剪枝过程

算法的重要部分就是prune-chart()剪枝过程,这里要详细讲一下。

对于一条边  ,定义  为含有边  的句法树的最大分数。那么如果
 ,这条边  就没有搜索的必要了,可以从分析表中去掉。

但是每次迭代都从原始表中计算  值太麻烦了,可以在每次迭代的时候计算粗表中的值:

所以当  时,从分析表中删除这条边。虽然搜索空间减少了,但是不影响算法的迭代轮数。

虽然在expand-chart()这一步要扩展收缩符号为下一层所有符号,但是实际运行起来时间比普通的CKY算法大大减少。

K-best扩展

基本框架和1-best是一样的,主要思路就是首先求出最优句法树,如果包含收缩符号,那么就下面步骤和1-best一样。否则的话求出后面k-1棵最优的句法树,如果都不包含收缩符号,直接返回k-best棵句法树。否则从中选出最好的一棵含有收缩符号的句法树,下面的步骤和1-best一样。

实验

数据集用的是PTB中长度小于35的句子。

上面这张表显示出,IVP算法的边的数量远远小于CKY算法,虽然迭代次数大大增加,但是总时间仍然远远小于CKY算法,而且边数减少了之后inside和outside算法的时间可以忽略不计了。最后一行是平均数据。

上图说明了,当k较小时,IVP算法时间快于普通的k-best算法,但是k大了之后就变慢了,原因如下图所示:

当k太大了之后,lb不能很好的得到最优得分的下界,所以无法有效地剪枝。而且k越小,算法收敛的也越快。

结论

提出了K-best IVP算法,基本框架还是inside-outside算法。

但是全文自始自终没有提及算法的准确率,感觉应该不是很高,不知道有没有又高又快的优化方法呢?

论文赏析[EACL17]K-best Iterative Viterbi Parsing(K-best迭代维特比句法分析)相关推荐

  1. Skeleton-Based Action Recognition with Spatial Reasoning and Temporal Stack Learning 论文赏析

    Skeleton-Based Action Recognition with Spatial Reasoning and Temporal Stack Learning 论文赏析 前言 Introdu ...

  2. DMC-Net: Generating Discriminative Motion Cues for Fast Compressed Video Action Recognition 论文赏析

    DMC-Net: Generating Discriminative Motion Cues for Fast Compressed Video Action Recognition 论文赏析 前言 ...

  3. k均值算法 二分k均值算法_使用K均值对加勒比珊瑚礁进行分类

    k均值算法 二分k均值算法 Have you ever seen a Caribbean reef? Well if you haven't, prepare yourself. 您见过加勒比礁吗? ...

  4. Kmeans++、Mini-Batch Kmeans、Bisecting Kmeans、K中心点(K-Medoids)算法、K众数聚类、核K均值聚类

    Kmeans++.Mini-Batch Kmeans.Bisecting Kmeans.K中心点(K-Medoids)算法.K众数聚类.核K均值聚类 目录 Kmeans++.Mini-Batch Km ...

  5. 牛客 - 第k小数(线性寻找第 k 小数)

    题目链接:点击查看 题目大意:给出长度为 n 的数列 a ,要求找到第 k 小的数 题目分析:因为数据给的足够大,所以约束就是必须线性完成操作,STL 中的 nth_element() 函数可以完美实 ...

  6. knn 邻居数量k的选取_选择K个最近的邻居

    knn 邻居数量k的选取 Classification is more-or-less just a matter of figuring out to what available group so ...

  7. axure中备注线_1分钟K线、日K线、月K线……不同周期的K线图到底有啥用?

    本文由小冉老师微信(xiaoran376418732)整理,个人观点,仅供参考,不构成操作建议.如自行操作,注意仓位控制和风险自负. 有人说炒股是一门玄学,有人说炒股是一门艺术. 有时炒股是一件门槛很 ...

  8. k阶原点距和k阶中心距各是说明什么数字特征

    二阶中心距,也叫作方差,它告诉我们一个随机变量在它均值附近波动的大小,方差越大,波动性越大.方差也相当于机械运动中以重心为转轴的转动惯量.(The moment of inertia.) 三阶中心距告 ...

  9. php k线15分钟 30分钟,成功率极高的“分时K线战法”:15分钟K线战法+30分钟K线战法...

    原标题:成功率极高的"分时K线战法":15分钟K线战法+30分钟K线战法 实战看盘最常用的就是日.周.月等K线图.这些图形对于我们分析个股走势的确帮助很大,然而遇到调整时,就显示了 ...

  10. 【持股】k线图基础知识k线基本形态分析

    转载于:http://jingyan.baidu.com/article/47a29f241f9f3ec015239972.html K线又称阴阳线.棒线.红黑线或蜡烛线,起原于日本德川幕府时代(16 ...

最新文章

  1. Flex与.NET互操作(十):基于FluorineFx.Net的及时通信应用(Real-time Messaging Applications)(一)...
  2. 详解RMQ LCA
  3. grub安装的 三种安装方式
  4. WebMagic之爬虫监控
  5. business man
  6. int linux 原子操作_linux c++编程之多线程:原子操作如何解决线程冲突
  7. VIP会员也得看广告!两大视频平台回应...
  8. Git 与 GitHub
  9. 基于SSM的闲猫二手商城
  10. iOS UISwitch控件
  11. ARM V8 SPEC B1 AArch64 Application level programer‘s Model
  12. PR/AE基础入门操作
  13. 生命细胞游戏的C++实现
  14. 翻译文章-让生活变得简单
  15. CSAPP Lab2:Bomb Lab
  16. 基于SpringBoot、Vue的开源情侣空间
  17. Yuga Labs 收购 CryptoPunks 的始末
  18. 如何把mac里的照片放移动硬盘
  19. Oracle技巧:如何诊断一些未预料的 Oracle 错误(ORA-NNNN)
  20. Java开发基础教学,如何让自己像打王者荣耀一样发了疯

热门文章

  1. Appium原理初步--Android自动化测试学习历程
  2. SVN客户端服务器搭建与使用(一)
  3. 南京趋势科技面试归来
  4. 【转】eclipse 查看原始类出现The jar file rt.jar has no source attachment解决方法
  5. 电脑没有音频设备怎么办
  6. 在线数据库链接字符串查询
  7. Idea 里svn的导入使用
  8. 《算法新解》读记(一)
  9. 使用SVG绘制湖南地图
  10. [学习笔记]在数据库层面应对并发访问产生的问题