论文赏析[COLING18]两种成分句法分析的局部特征模型(一)

简介: 论文地址:Two Local Models for Neural Constituent Parsing代码地址:github今天要介绍的论文来自COLING 2018,本文主要探讨了局部特征对成分句法分析到底有多大的影响,并同时提出了两种局部特征模型,在PTB上面取得了92.4的F1值。

介绍


对于传统句法分析模型,需要使用大量的全局特征来指导每一步的决策。同时全局的损失函数也是必不可少的,可以用来避免预测偏差的问题,也就是loss mismatch问题。但是随着神经网络的加入,越来越多的模型使用了局部的特征来进行句法分析,主要原因是可以采用双向LSTM预先对句子进行编码,从而捕获全部特征。

因此本文主要探讨局部特征对句法分析的影响,顺带提出了两个句法分析模型。模型是chart-based的,但是将结构预测和标签预测分成了两个模型,首先通过双仿射模型来产生一棵无标签的句法树,然后再上面跑一遍Tree-LSTM来产生每一个结点的label。

模型


模型分为两部分,第一部分是无标签模型,用来预测不带label的句法树,第二部分是标签模型,用来在无标签模型预测出来的句法树上预测出每一个结点的label。

对于无标签模型,有两种方法来生成句法树,第一种叫做span模型,预测任意span是否属于标准树,也就是二分类。第二种叫做rule模型,也就是普通的chart-based方法,类似于CKY算法,预测每个span的得分最高的split。

对于标签模型,在生成的句法树上跑一遍Tree-LSTM,计算出每个结点的向量表示,这是Encoder部分。然后对于每个结点,运行一遍Decoder,也就是一个LSTM,解码出该结点处的label,如果label只有一个,那么就解码出“X - <\L>”,其中<\L>是结束符,而如果label不止一个,也就是一元产生式,那么就会解码出一系列非终结符。

下面我们一个个介绍编码和解码模型,我尽量不使用太多的公式来解释模型,一是因为本质上模型也都是很老的了,二是因为公式太多了我也懒得打嘻嘻。

Span模型

主要思想就是对于句子的每一个可能的span,预测它是否属于标准树,属于标签就是1,不属于就是0。因为一共有 image.png 个span,所以时间复杂度为 image.png 。在代码实现中,因为长度为1和长度为n的span一定属于标准树,所以不考虑这两种span。

模型通过一个双向LSTM来对短语进行编码,这个之前的文章已经说过很多次了,可以用来捕获全局信息。span image.png 的向量表示和之前略有不同,这里不是用两端的差值,而是改用直接拼接得到:

image.png

然后将每个span的表示输入到一个两层的前馈神经网络中,最后通过一个softmax进行二分类:

image.png

其中 image.png 可以取值1或者0,最终要使得正确span标签为1的概率与错误span标签为0的概率之和最高。

训练完毕之后,在预测阶段,使用CKY算法求解最优的句法树。注意这里不能直接采用 image.png 概率比较大的那些span组成句法树,因为可能根本就是一棵不合法的句法树。对于span image.png ,它的split为k的概率为:

image.png

模型还有个扩展版本,就是在softmax层改二分类为预测每个label的概率。然后损失函数也稍做修改,对于每个标准树中的span,对所有label求和(求和主要针对的是一元产生式的多个label),使概率之和最大。在预测阶段解码时,依然使用CKY算法,只不过span的概率要修改为: image.png 的概率为label不为终结符的概率之和, image.png 的概率为label是终结符的概率。

Rule模型

span模型是训练出每个span属于标准树的概率,然后预测时计算出产生式的概率。而rule模型就直接训练每个产生式的概率,对于span image.png ,假设它的split为k的分数为 image.png ,那么产生式的概率就为:

image.png

最终的损失函数就是标准树中所有产生式概率的负对数之和。解码依然使用CKY算法,只是这里产生式概率直接得到了,所以直接计算即可。

这种方法本质上其实就是用神经网络来拟合PCFG,得到和它类似的效果,最后再用CKY算法解码出句法树。

而上面的 image.png 是怎么得到的呢?这里首先还是用双向LSTM的边界差值作为span的表示(我也不知道这里为什么又突然用这个表示了):

image.png

然后将span之前和span和span之后三部分的表示拼接起来:

image.png

然后将它输入到一个单层前馈神经网络:

image.png

注意到这里的W和b是分为三种:父结点、左儿子、右儿子。

然后就是最后一步了,终于可以得到最终的span表示了。。。这里又有两种方法,一种是线性模型,直接对左右儿子的r向量加权求和。另一种是双仿射模型,这个方法也可以解决span长度不一导致的类别数可变的多分类问题,双仿射模型得分首先在父结点和左儿子向量上进行操作:

image.png

然后在父结点和右儿子向量上进行类似操作得到 image.png ,最后相加得到最终的split得分:

image.png

标签生成模型

首先用Tree-LSTM得到每个span的向量表示,然后再通过一个LSTM依次得到span的一个或者若干个label,这个就不详细解释了。

联合训练

整个模型总的损失函数是无标签模型损失加上标签生成模型的损失,其中无标签模型分为三种:二分类、多分类、rule模型。

整个模型的流程如下图所示:

image.png

span模型和rule模型的span得分计算如下图所示:

image.png

相关文章
|
2月前
|
算法 Python
ABCDE题|2025年华为杯|研究生数学建模|思路、代码、论文|持续更新中....
ABCDE题|2025年华为杯|研究生数学建模|思路、代码、论文|持续更新中....
294 1
|
4月前
|
人工智能 开发者
【三桥君】Prompt:在AI时代,提问比答案更有价值
在AI技术迅猛发展的时代,产品专家三桥君认为答案已不再稀缺,提出正确的问题才是关键。本文探讨了问题在推动思考、激发创新、发现需求中的核心价值,分享如何通过明确目标、结构化方法和实践技巧提升提问能力,助力在AI时代把握机遇,共创未来。
146 0
|
10月前
|
分布式计算 DataWorks 搜索推荐
DataWorks 产品评测与最佳实践探索!
DataWorks 是阿里巴巴推出的一站式智能大数据开发治理平台,内置15年实践经验,集成多种大数据与AI服务。本文通过实际使用角度,探讨其优势、潜力及改进建议。评测涵盖用户画像分析、数据治理、功能表现等方面,适合数字化转型企业参考。
235 1
|
12月前
|
消息中间件 数据库
Seata框架的工作原理
你还可以进一步深入研究 Seata 框架的技术细节和具体实现,以更好地理解其工作原理和优势。同时,结合实际应用场景进行实践和优化,也是提高分布式事务处理能力的重要途径。
516 15
|
运维 网络协议 调度
docker swarm 集群服务编排部署指南(docker stack)
docker swarm 集群服务编排部署指南(docker stack)
1678 0
|
分布式计算 算法 大数据
大数据数据一致性
【10月更文挑战第24天】
273 4
|
安全 C++
基于MATLAB的电力线路参数计算仿真
*1. 课题概述** - 电力线路分为输电与配电,计算关键参数至关重要 - 本项目开发基于MATLAB的软件,用于计算电力线路的重要参数 *2. 系统仿真结果** - 实现了工频电场、电力系统潮流等参数的计算。 - 包括MATLAB界面设计与计算功能实现。 *3. 系统原理简介** - **额定电压**: 设备最佳工作电压,保障性能稳定及延长使用寿命。 - **输变电设施**: 运行时产生工频电场和磁场,需符合国家标准限值。 - **线径计算**: 依据电流密度和趋肤效应确定导线截面积。 - **电力系统潮流计算**: 基于牛顿-拉夫逊法求解电力系统稳态运行状态,用于检查系统过负荷及电压质量。
|
SQL 测试技术 Python
SqlAlchemy 2.0 中文文档(四)(4)
SqlAlchemy 2.0 中文文档(四)
224 3
小功能⭐️Unity解决物体移动速度过快不能检测到碰撞
小功能⭐️Unity解决物体移动速度过快不能检测到碰撞