论文赏析[EMNLP18]用序列标注来进行成分句法分析(二)

简介: 本文定义了一种新的树的序列化方法,将树结构预测问题转化为了序列预测问题。该序列用相邻两个结点的公共祖先(CA)数量和最近公共祖先(LCA)的label来表示一棵树,并且证明了这个树到序列的映射是单射但不是满射的,但是提出了一系列方法来解决这个问题。

理论证明

主要证明两个性质,一个就是充分性(即每个句法树都能映射为一个序列),另一个就是单射性(即每个序列只能唯一对应一个句法树)。

充分性:这个显而易见,对于每个句法树,相邻两个单词一定存在唯一的LCA,且它的label也是唯一的,所以充分性肯定能保证的。

单射性:为了简便,首先证明不包含非终结符的树结构映射的单射性,再证明加上非终结符也是单射的。

如果用 image.png 表示第 i 个叶子结点,那么句法树可以表示成如下的括号表达式:

image.png

更进一步,每个 image.png 形式肯定是 image.png ,因为如果存在一个闭合的括号对,那么中间肯定还存在着一个叶子结点,这显然不可能。所以我们可以用 image.png 来替代 image.png ,用 image.png 来替代 image.png ,将 image.png 改写为 image.png ,括号表达式可以重写为:

image.png

注意到首尾两个元素一定是空的,接下来用 image.png 替换 image.png ,得到序列:

image.png

更进一步,可以证明 image.png 一定只含有 image.png 中的一个。因为如果两个都含有的话,说明存在 image.png 这种一元产生式,但是因为一元产生式都提前处理过了,所以不可能存在。

接下来可以给每个 image.png 分配一个值 image.png ,如果 image.png 左右两边都没有括号,那这个值就是0,如果左边有 k 个括号,那值就是 image.png ,如果右边有 k 个括号,那值就是 -k 。如果将这些值写成序列:

image.png

这个序列正好对应了之前的第二种编码,也就是编码成LCA的个数之差。这是为什么呢?可以看出,一直到  结束,没有闭合的括号数量正好就是 image.pngimage.png 的LCA数量。所以  image.png就是 image.pngimage.png 的LCA数量与 image.pngimage.png  的LCA数量的差值。

最后这就验证了括号序列和之前的编码是一一对应的,单射性得证。解码的时候只需要将数字直接转化成对应的括号序列就行了。

而加上了非终结符之后,单射性不会受到影响。因为虽然两棵相同结构但是拥有不同非终结符的句法树,转化成括号序列后是相同的。但是因为之前的定义中,还有一个变量 image.png 来表示这个非终结符了,所以还是能够唯一对应过去的。

限制

上面定义的序列化函数有两个缺点:一是非满射,二是不能处理一元产生式,下面介绍一下解决方法。

对于一元产生式: 有两种一元产生式,一种是中间结点,还有一种是叶子结点的label。

对于中间结点,直接将一条链上的label合并成一个新的label就行了,方法和之前文章介绍的一样。

而对于叶子结点的label,一个方法是在解码之前先用一个函数预测一下每个叶子结点的label,如果为空,说明没有label,否则就加上这个label,然后再进行正常的解码。另一个方法是将之前的序列化的二元组扩展为三元组 image.png ,其中第三个元素就是每个叶子结点的label。

非满射: 非满射会导致的问题就是产生出来的序列可能无法映射到某一棵句法树。根据文中所说,一共有两种无法映射的情况。

一种情况是对于多叉树,相邻两对叶子结点的LCA的label预测不同。比如在最上面一张图中,“the red toy”如果预测为两个不同的label,那么就会产生矛盾。这种情况很好解决,只要在解码的时候只取第一个label,忽略后一个就行了。

另一种情况是序列可能会产生一元产生式,如下图所示:

image.png

根据图中序列,会产生下面那棵句法树,一元结点X并没有预测到。但其实因为一元结点已经提前合并了,所以如果预测到了一元结点,直接删掉不要就行了。

序列标注


这里就不细讲了,用的就是基本的BiLSTM + CRF序列标注模型,具体可以看这篇论文:

End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRFarxiv.org


实验


这篇论文最大的卖点不是效果,而是速度快,下面是和其他模型的速度对比,可以看出,速度的确快了不少,达到了大几百句每秒。但是还是存在序列标注模型的老毛病,效果并不好,虽然比之前的高了,但是还是只有90%的F1。

image.png

结论与展望


这篇论文定义了一种新的句法树序列化方法,将句法树序列化为长度减1的序列,其中每个值就是相邻两个单词的CA个数和LCA的label。

看完这篇,我仔细想了想,其实之前的chart-based方法也都可以转化成序列,只不过都得特别处理一下一元产生式和多叉树,比较麻烦。以后可以考虑在这方面有所突破,速度快还是很nice的。

相关文章
|
机器学习/深度学习 并行计算 Linux
PyCharm+Docker:打造最舒适的深度学习炼丹炉
PyCharm+Docker:打造最舒适的深度学习炼丹炉
533 0
|
NoSQL Java 关系型数据库
蚂蚁金服+拼多多+抖音+天猫(技术三面)面经合集助你拿大厂offer
很多Java开发者面试之前,可能没有较长的工作时间或者较为丰富的工作经验,所以不知道互联网公司或者一线互联网公司技术面试都会问哪些问题? 再加上可能自己准备也不充分,去面试没几个回合就被面试官几个问题打蒙了,最后以惨败收场。针对这些的读者朋友,小编整理了一些知名大厂的面经,在这分享给读者朋友们参考,让即将面试或是有想法跳槽的读者朋友们了解一下一线大厂面试时都喜欢问那些问题。
|
8月前
|
人工智能 自然语言处理 JavaScript
通义灵码上线 @workspace 新能力,结合当前代码仓库理解工程、代码查询与问答等
通义灵码上线 @workspace 新能力,结合当前代码仓库理解工程、代码查询与问答等
809 1
|
安全 数据库 数据安全/隐私保护
什么是特权账号,如何定义
对特权账号进行简单定义,区别普通账号
325 0
什么是特权账号,如何定义
|
JavaScript 前端开发 数据可视化
6 个用于 3D 网页图形渲染的最佳 WebGL 库
现代前端、游戏和Web开发正是WebGL可以转化为数字杰作的东西。使用GPU绘制在浏览器屏幕上生成的矢量元素,WebGL创建交互式Web图形,从而获得用户体验。视觉元素的质量和复杂性使该工具在HTML或CSS等其他方法中脱颖而出。
882 0
10分钟6元,没有结果的DSW
DSW计费说明 更新时间:2023年12月19日 18:08:00 DSW包括个人版和探索者版本,本文介绍DSW的计费规则。 计费项 DSW的计费项组成如下图:计费项 计费方式 不同版本的计费方式如下。
284 1
|
监控 前端开发 Serverless
微前端解决方案
微前端解决方案
304 1
|
机器学习/深度学习 搜索推荐 算法
天池 DeepRec CTR 模型性能优化大赛 - 夺冠技术分享
这篇文章复盘一下我们本次的参赛经验, 希望对大家有所启发。今天我们会从5大角度来浅谈我们夺冠的优势。
|
算法
[Halcon&定位] 形状匹配和灰度匹配对比
[Halcon&定位] 形状匹配和灰度匹配对比
451 0
|
Android开发
Android 音乐APP(五)音乐通知栏、后台播放音乐
Android 音乐APP(五)音乐通知栏、后台播放音乐
1574 0
Android 音乐APP(五)音乐通知栏、后台播放音乐