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

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

伪代码


image.png



  • image.png 初始化为句法树的最优得分或者负无穷,其中det()用来求解句法树的最优得分,但是没有必要真的求出最优句法树,只需要在每个结点处保留得分最高的边即可。尽管这样得出来的句法树基本不是最高的,但是能够缩小 image.png 范围即可。
  • init-chart()首先初始化分析表,全部初始化为收缩符号。
  • 然后开始迭代过程,首先执行维特比inside算法,也就是CKY算法Viterbi-inside(),得到最优句法树 image.png
  • 如果最优句法树不含有任意收缩符号,那么迭代结束,直接返回该句法树。
  • 否则的话,更新 image.png 为最优句法树的分数best()
  • expand-chart()将所有收缩符号替换为下一层的收缩符号。
  • Viterbi-outside()计算outside值。
  • prune-chart()进行剪枝,过滤掉无用的边。

剪枝过程


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

对于一条边 image.png ,定义 image.png 为含有边 e 的句法树的最大分数。那么如果

image.png ,这条边 e 就没有搜索的必要了,可以从分析表中去掉。

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

image.png

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

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

K-best扩展


image.png


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

实验


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

image.png


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

image.png

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

image.png

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

结论


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

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



相关文章
|
2月前
|
自然语言处理 算法 索引
【Python自然语言处理】隐马尔可夫模型中维特比(Viterbi)算法解决商务选择问题实战(附源码 超详细必看)
【Python自然语言处理】隐马尔可夫模型中维特比(Viterbi)算法解决商务选择问题实战(附源码 超详细必看)
48 0
|
机器学习/深度学习 存储 人工智能
7 Papers & Radios | Hinton前向-前向神经网络训练算法;科学家造出「虫洞」登Nature封面
7 Papers & Radios | Hinton前向-前向神经网络训练算法;科学家造出「虫洞」登Nature封面
|
机器学习/深度学习 算法 Python
李航统计学习方法 Chapter6 逻辑斯蒂回归
李航统计学习方法 Chapter6 逻辑斯蒂回归
李航统计学习方法 Chapter6 逻辑斯蒂回归
|
算法 数据挖掘
论文赏析[EACL17]K-best Iterative Viterbi Parsing(K-best迭代维特比句法分析一)
CKY算法或维特比inside算法是成分句法分析的主要方法之一,但是当产生式数量特别大之后,时间复杂度也线性增大。可行的一种方法是剪枝,但是剪枝会造成准确率的下降。所以本文就提出了一种迭代的维特比句法分析算法,通过剪枝去除掉没用的边。实验表明,时间上加快了一个数量级,但是本文并没有说准确率怎么样。。。 本文用到的inside和outside算法之前已经介绍过了,详见PCFG中inside和outside算法详解。
104 0
论文赏析[EACL17]K-best Iterative Viterbi Parsing(K-best迭代维特比句法分析一)
|
自然语言处理 算法
论文赏析[NAACL19]基于DIORA的无监督隐式句法树归纳(一)
今天要分享的这篇论文来自NAACL2019,主要利用inside-outside算法推理出给定句子的句法树,不需要任何的监督,也不需要下游任务作为目标函数,只需要masked语言模型就行了。
441 0
论文赏析[NAACL19]基于DIORA的无监督隐式句法树归纳(一)
|
机器学习/深度学习 自然语言处理 算法
论文赏析[NAACL19]基于DIORA的无监督隐式句法树归纳(二)
今天要分享的这篇论文来自NAACL2019,主要利用inside-outside算法推理出给定句子的句法树,不需要任何的监督,也不需要下游任务作为目标函数,只需要masked语言模型就行了。
442 0
论文赏析[NAACL19]基于DIORA的无监督隐式句法树归纳(二)
论文赏析[EMNLP18]用序列标注来进行成分句法分析(二)
本文定义了一种新的树的序列化方法,将树结构预测问题转化为了序列预测问题。该序列用相邻两个结点的公共祖先(CA)数量和最近公共祖先(LCA)的label来表示一棵树,并且证明了这个树到序列的映射是单射但不是满射的,但是提出了一系列方法来解决这个问题。
111 0
论文赏析[EMNLP18]用序列标注来进行成分句法分析(二)
|
机器学习/深度学习
论文赏析[EMNLP18]用序列标注来进行成分句法分析(一)
本文定义了一种新的树的序列化方法,将树结构预测问题转化为了序列预测问题。该序列用相邻两个结点的公共祖先(CA)数量和最近公共祖先(LCA)的label来表示一棵树,并且证明了这个树到序列的映射是单射但不是满射的,但是提出了一系列方法来解决这个问题。
148 0
论文赏析[EMNLP18]用序列标注来进行成分句法分析(一)
|
机器学习/深度学习 算法
论文赏析[NAACL19]无监督循环神经网络文法 (URNNG)(一)
这篇是新鲜出炉的NAACL19的关于无监督循环神经网络文法(URNNG)的论文,在语言模型和无监督成分句法分析上都取得了非常不错的结果,主要采用了变分推理和RNNG。
215 0
论文赏析[NAACL19]无监督循环神经网络文法 (URNNG)(一)
|
机器学习/深度学习 算法 大数据
论文赏析[NAACL19]无监督循环神经网络文法 (URNNG)(二)
这篇是新鲜出炉的NAACL19的关于无监督循环神经网络文法(URNNG)的论文,在语言模型和无监督成分句法分析上都取得了非常不错的结果,主要采用了变分推理和RNNG。
452 0
论文赏析[NAACL19]无监督循环神经网络文法 (URNNG)(二)