论文赏析[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算法。

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



相关文章
|
6月前
|
机器学习/深度学习 计算机视觉
【论文速递】CVPR2022 - 学习 什么不能分割:小样本分割的新视角
【论文速递】CVPR2022 - 学习 什么不能分割:小样本分割的新视角
|
6月前
|
自然语言处理 算法 索引
【Python自然语言处理】隐马尔可夫模型中维特比(Viterbi)算法解决商务选择问题实战(附源码 超详细必看)
【Python自然语言处理】隐马尔可夫模型中维特比(Viterbi)算法解决商务选择问题实战(附源码 超详细必看)
72 0
|
机器学习/深度学习 存储 自然语言处理
机器学习面试笔试知识点-贝叶斯网络(Bayesian Network) 、马尔科夫(Markov) 和主题模型(T M)1
机器学习面试笔试知识点-贝叶斯网络(Bayesian Network) 、马尔科夫(Markov) 和主题模型(T M)
176 0
机器学习面试笔试知识点-贝叶斯网络(Bayesian Network) 、马尔科夫(Markov) 和主题模型(T M)1
|
机器学习/深度学习 人工智能 运维
NeurIPS 2022 Oral | 基于最优子集的神经集合函数学习方法EquiVSet
NeurIPS 2022 Oral | 基于最优子集的神经集合函数学习方法EquiVSet
|
机器学习/深度学习 存储 人工智能
7 Papers & Radios | Hinton前向-前向神经网络训练算法;科学家造出「虫洞」登Nature封面
7 Papers & Radios | Hinton前向-前向神经网络训练算法;科学家造出「虫洞」登Nature封面
126 0
|
机器学习/深度学习 计算机视觉
CycleGAN 论文泛读
CycleGAN 论文泛读
125 0
CycleGAN 论文泛读
|
算法 数据挖掘
论文赏析[EACL17]K-best Iterative Viterbi Parsing(K-best迭代维特比句法分析一)
CKY算法或维特比inside算法是成分句法分析的主要方法之一,但是当产生式数量特别大之后,时间复杂度也线性增大。可行的一种方法是剪枝,但是剪枝会造成准确率的下降。所以本文就提出了一种迭代的维特比句法分析算法,通过剪枝去除掉没用的边。实验表明,时间上加快了一个数量级,但是本文并没有说准确率怎么样。。。 本文用到的inside和outside算法之前已经介绍过了,详见PCFG中inside和outside算法详解。
123 0
论文赏析[EACL17]K-best Iterative Viterbi Parsing(K-best迭代维特比句法分析一)
|
机器学习/深度学习 自然语言处理
论文赏析[EMNLP19]如何在Transformer中融入句法树信息?这里给出了一种解决方案(一)
之前其实有很多工作将句法信息融入到了RNN中,例如ON-LSTM和PRPN,用来隐式建模句法结构信息,同时提升语言模型的准确率。本文尝试将句法信息融入到Transformer中,用来赋予attention更好的解释性。同时可以无监督的预测出句子的句法树,并且相比于一般的Transformer,语言模型的性能有所提高。
182 0
论文赏析[EMNLP19]如何在Transformer中融入句法树信息?这里给出了一种解决方案(一)
|
机器学习/深度学习 自然语言处理 算法
论文赏析[EMNLP19]如何在Transformer中融入句法树信息?这里给出了一种解决方案(二)
之前其实有很多工作将句法信息融入到了RNN中,例如ON-LSTM和PRPN,用来隐式建模句法结构信息,同时提升语言模型的准确率。本文尝试将句法信息融入到Transformer中,用来赋予attention更好的解释性。同时可以无监督的预测出句子的句法树,并且相比于一般的Transformer,语言模型的性能有所提高。
268 0
论文赏析[EMNLP19]如何在Transformer中融入句法树信息?这里给出了一种解决方案(二)
|
机器学习/深度学习
论文赏析[EMNLP18]用序列标注来进行成分句法分析(一)
本文定义了一种新的树的序列化方法,将树结构预测问题转化为了序列预测问题。该序列用相邻两个结点的公共祖先(CA)数量和最近公共祖先(LCA)的label来表示一棵树,并且证明了这个树到序列的映射是单射但不是满射的,但是提出了一系列方法来解决这个问题。
169 0
论文赏析[EMNLP18]用序列标注来进行成分句法分析(一)
下一篇
无影云桌面