论文赏析[TACL18]隐式句法树模型真的能学到句子中有意义的结构吗?(二)

简介: 本文是一篇分析类论文,主要对近年来几种无监督句法分析模型(RL-SPINN和ST-Gumbel)进行了分析,得出了如下三个结论:在句子分类任务上,只有一种模型效果好于传统的树结构模型。这些模型随机性很大,初始化不同,结果也都差距很大。这些模型产生的句法树的平均深度比PTB数据集的平均深度浅。

隐式句法树对句子理解有帮助吗?


image.png

表1是各种模型在SNLI数据集和MultiNLI数据集上的对比结果,其中SNLI是只在SNLI上训练,而MultiNLI是在两个数据集上共同训练。

从表1中可以得出几个结论:

  • 首先看Prior Work: Baselines,LSTM和BiLSTM是不学习句法树的,Tree-LSTM和SPINN是监督学习句法树的,SPINN-PI-NT是不学习句法树的,直接根据正确句法树转移。可以看出,SPINN-PI-NT的效果略好于LSTM,不如BiLSTM,所以正确句法树对下游任务的提升是微乎其微的,至少用Tree-LSTM作为composition函数和在NLI数据集上是这样
  • 再看This Work,SPINN-NC是等价于Tree-LSTM的,但是效果比ST-Gumbel差,并且SPINN-NC需要句法监督。这说明了隐式句法树的学习对句子的理解的确有帮助,不管它学到的句法树有没有实际上的意义
  • 观察This Work: Baselines,可以看出来SPINN-PI-NT的几个结果都是和其他模型差不多的,也就是不管你用正确句法树还是用随机或者平衡句法树给模型转移,效果都不行。这说明了影响模型性能的瓶颈并不在parsing策略这一块,parsing的好坏对下游句子理解的影响不大。而RL-SPINN和ST-Gumbel效果略好,但是他们学到的句法树可能是错的。这和第一点结论是一致的,所以今后可以在composition函数上做改进,正确句法树有了,怎么得到它的好的表示是个问题。
  • 尽管上面所有模型都没有达到SOTA,但是也很接近了,说明隐式句法树学习的确有效果,还是值得我们去分析的。

结论:隐式句法树对句子理解的确有帮助。

这些模型得出的句法树结果一致吗?


image.png

表2是两个句法监督模型,两个无监督模型和两种固定的句法树的对比结果。

从这个结果可以得出两个结论:

  • 除了不带Leaf GRU的ST-Gumbel准确率方差有异常,其他的方差都差不多。这说明了超参数和随机初始化对模型性能影响不是很大。
  • Self F1方面,两个句法监督模型都在70%左右,而ST-Gumbel模型虽然准确率很高,但是一致性只有50%不到。RL-SPINN的一致性就非常高了,有98%左右,这说明了它可能真的学到了某种语法(事实上并不是的,后面章节会讲)。

结论:除了ST-Gumbel模型,其他模型运行多次结果还是基本一致的。

这些模型学到了PTB语法吗?


image.png

表3显示了在SNLI和MultiNLI上训练后的模型,在PTB上测试的结果。

首先可以看出,两个句法监督模型在PTB上的F1也很低,只有四五十左右,但是两个无监督模型更差,甚至不如随机生成的句法树好。这说明了这些模型根本没有学到PTB语法信息。而不同类别的准确率也印证了这一点。

image.png

而从表4中可以看出,两个句法监督模型在MultiNLI数据集上的表现也不错,能有六七十左右的F1值,并且模型偏向于预测出右二叉树。而无监督模型效果就很差了,甚至还不如随机生成的句法树和平衡树,并且RL-SPINN模型输出基本都是左二叉树。而根据语言学知识,右二叉树是更符合语法的。

最后一列是不同模型产生出的句法树的深度。可以看出RL-SPINN的深度最大,ST-Gumbel深度最小,和随机生成的差不多。而ST-Gumbel对下游任务提升是最大的,所以可以猜测,深度比较浅,单词的信息可以更好地保留到根节点,句子的编码可能更好。另一篇论文做过实验验证过这件事,他们用句子的平衡树跑Tree-LSTM得到表示来做SNLI,效果很好。

结论:这些无监督模型基本没有学到PTB语法,但是学到的深度较浅的句法树反而对句子理解任务有帮助。

句法树分析


前面几个章节分析出了无监督模型产生的句法树不符合语法规则,但是对下游任务的确有帮助。那这个章节就拿出一些特例,来看看它们到底学出了什么语法规则。

从前面实验可以看出,ST-Gumbel模型学到的语法随机性更大,更值得分析,所以下面只分析这个模型。这个章节分析的篇幅较多,我就直接说结论了:

  • 更容易结合头两个单词和最后两个单词。常识上来说,合并最后两个单词没有意义,因为最后一个单词一般是标点符号。但是合并头两个单词还是有意义的,因为一般句子的前两个单词是限定词和名词。
  • 更容易结合否定词和紧跟后面的一个词。这个其实有时候符合语法,比如“not”后面紧跟一个形容词,但是比如“not at all”这种就不对了。
  • 对于功能词和修饰词,模型结果随机性很大。这一点其实会导致很多短语都分析错了,比如“the”和介词都没有和后面的名词动词合并起来,但神奇的还是对下游任务效果很好。

结论


这篇文章得出的结论是:对下游任务有提升的模型,产生出的句法树不一定是最合乎语法的

那么为什么它们还能提升效果呢?这篇文章并没有给出解释,未来的工作还是要设计出新的编码结构,来利用本文提出的几种句法树特征。

另一种猜想是,PTB语法规则对于NLI任务不一定是最好的,那么问题是NLI任务需要什么样的语法规则呢?这些模型也没有得出好的结论,因为随机性也很大,提升也不是很大。

最后就是一个工程问题了,如果的确还是PTB语法规则对于提升下游任务性能有帮助,那么怎么提取这种结构呢?现在的几种模型都不能很好的提取出名词短语和介词短语这种结构。

无监督句法分析的前景还是很开阔的,有很多东西值得去探索,ACL 2019的一篇tutorial就是关于自然语言处理中的隐式结构模型的,叫Latent Structure Models for NLP,如果大家有什么好的想法也欢迎和我交流。

相关文章
|
6天前
|
机器学习/深度学习 监控 算法
傻傻分不清目标检测、语义分割和实例分割,看这篇就够了
傻傻分不清目标检测、语义分割和实例分割,看这篇就够了
8 0
|
1月前
|
编解码 算法 测试技术
【论文精读】ICLR2022 - 语言驱动的语义分割
【论文精读】ICLR2022 - 语言驱动的语义分割
|
1月前
|
机器学习/深度学习 自然语言处理 算法
【Python自然语言处理】概率上下文无关文法(PCFG)及神经网络句法分析讲解(图文解释 超详细)
【Python自然语言处理】概率上下文无关文法(PCFG)及神经网络句法分析讲解(图文解释 超详细)
126 0
|
机器学习/深度学习 编解码 自然语言处理
DAFormer | 使用Transformer进行语义分割无监督域自适应的开篇之作(一)
DAFormer | 使用Transformer进行语义分割无监督域自适应的开篇之作(一)
358 0
|
机器学习/深度学习 自然语言处理 搜索推荐
基于GCN和句法依存分析的情感分析
(1)构建/利用图结构 核心问题:针对某个特定任务构建一个图来使用潜在的信息。 因为有些任务中,图数据是给定的(如引用网络、社交网络、推荐系统的图数据等),但是有些图结构并不明显,所以需要转为一个图上可以解决的问题(如节点分类、链路预测等)。
529 0
基于GCN和句法依存分析的情感分析
|
机器学习/深度学习 数据采集 Oracle
DAFormer | 使用Transformer进行语义分割无监督域自适应的开篇之作(二)
DAFormer | 使用Transformer进行语义分割无监督域自适应的开篇之作(二)
337 0
|
机器学习/深度学习 自然语言处理
论文赏析[TACL18]隐式句法树模型真的能学到句子中有意义的结构吗?(一)
本文是一篇分析类论文,主要对近年来几种无监督句法分析模型(RL-SPINN和ST-Gumbel)进行了分析,得出了如下三个结论: 在句子分类任务上,只有一种模型效果好于传统的树结构模型。 这些模型随机性很大,初始化不同,结果也都差距很大。 这些模型产生的句法树的平均深度比PTB数据集的平均深度浅。
127 0
论文赏析[TACL18]隐式句法树模型真的能学到句子中有意义的结构吗?(一)
|
自然语言处理 算法
论文赏析[NAACL19]基于DIORA的无监督隐式句法树归纳(一)
今天要分享的这篇论文来自NAACL2019,主要利用inside-outside算法推理出给定句子的句法树,不需要任何的监督,也不需要下游任务作为目标函数,只需要masked语言模型就行了。
440 0
论文赏析[NAACL19]基于DIORA的无监督隐式句法树归纳(一)
|
机器学习/深度学习 自然语言处理 算法
论文赏析[NAACL19]基于DIORA的无监督隐式句法树归纳(二)
今天要分享的这篇论文来自NAACL2019,主要利用inside-outside算法推理出给定句子的句法树,不需要任何的监督,也不需要下游任务作为目标函数,只需要masked语言模型就行了。
441 0
论文赏析[NAACL19]基于DIORA的无监督隐式句法树归纳(二)
|
机器学习/深度学习 自然语言处理
论文赏析[ACL18]一个句子向量表示究竟可以塞进多少语言性质?
本文主要探究了不同encoder在不同任务上训练得到的句子向量表示,是否蕴含了各种语言性质。
133 0
论文赏析[ACL18]一个句子向量表示究竟可以塞进多少语言性质?