论文赏析[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月前
|
JavaScript Java 关系型数据库
基于springboot的电影购票管理系统
本系统基于Spring Boot框架,结合Vue、Java与MySQL技术,实现电影信息管理、在线选座、购票支付等核心功能,提升观众购票体验与影院管理效率,推动电影产业数字化发展。
|
10月前
|
人工智能 调度 芯片
PAI训练服务:云上大模型训练新篇章
本文介绍了通用AI时代下的新训练方法及PAI平台的优化。随着大模型时代的到来,算力需求激增,硬件和网络通信成为瓶颈。PAI平台通过自动容错、3D健康检测等技术确保训练稳定性;通过资源配额、智能调度等提高性价比;并推出PAI-TorchAcc和PAI-ChatLearn两大引擎,分别实现高效训练加速和灵活的对齐训练,显著提升训练性能与效果。这些改进解决了大规模AI训练中的关键问题,提升了效率和稳定性。
|
12月前
|
人工智能 自然语言处理 物联网
魔搭社区每周速递(11.17-11.23)
魔搭ModelScope本期社区进展:923个模型,85个数据集,35个创新应用,7 篇内容
魔搭社区每周速递(11.17-11.23)
|
存储 数据可视化 前端开发
基于python的当当二手书数据分析与可视化系统设计与实现
本文设计并实现了一个基于Python的当当二手书数据分析与可视化系统,通过数据收集、清洗、聚类分析和可视化展示,为二手书市场提供全面的数据分析和决策支持,以促进资源循环利用和市场效率优化。
476 0
基于python的当当二手书数据分析与可视化系统设计与实现
|
SQL 关系型数据库 数据库
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
326 2
|
数据可视化 数据挖掘 知识图谱
精选:15款顶尖Python知识图谱(关系网络)绘制工具,数据分析的强力助手
这里有15款免费工具推荐:NetworkX(Python基础),Graph-tool(C++速度),Graphviz(可视化库),ipycytoscape(Jupyter集成),ipydagred3,ipySigma(NetworkX + Web),Netwulf(交互式),nxviz(Matplotlib绑定),Py3plex(复杂网络分析),Py4cytoscape(Python+Cytoscape),pydot(Graphviz接口),PyGraphistry(GPU加速),python-igraph,pyvis(交互式图形),SNAP(大规模网络分析)。绘制和理解网络图从未如此简单!
1092 0
|
存储 消息中间件 NoSQL
高可用延迟队列设计与实现
高可用延迟队列设计与实现
|
并行计算 PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(十七)(4)
PyTorch 2.2 中文官方教程(十七)
551 2
PyTorch 2.2 中文官方教程(十七)(4)
|
API PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(九)(3)
PyTorch 2.2 中文官方教程(九)
522 0
PyTorch 2.2 中文官方教程(九)(3)
|
机器学习/深度学习 自然语言处理 算法
图解CNN十大算法架构
图解CNN十大算法架构
565 0