句法分析模型
对于每一个状态,模型采用三个LSTM来预测当前步动作,结构如下图所示:
一个LSTM用来对栈顶元素进行编码,一个LSTM用来对buffer中所有元素进行编码,一个LSTM用来对之前预测完毕的所有动作进行编码。
单词表示
对于每个单词,用预训练词向量、随机初始化词向量、POS向量拼接起来,然后经过一个前馈神经网络来作为最终的单词表示:
其中 表示POS为 的向量, 表示单词 的预训练词向量, 表示单词 的随机初始化词向量。 函数通常取ReLU。
栈里的短语表示
对于自顶向下和in-order的转移系统,由于不需要二叉化,所以采用如下图所示的LSTM来对栈里的短语进行编码:
具体的短语表示为:
其中 是父结点的向量表示,其他都是子结点的短语表示。
而作为对比实验,自底向上的转移系统因为是二叉树,所以LSTM略有不同,结构图如下所示:
唯一的区别就是不管你短语的单词顺序如何,都要把中心词也就是头结点放在前面。
贪心动作预测
上面的两个小节将buffer和栈里的元素都进行了编码,最后就要对当前状态进行动作预测了。
假设第 k 个状态为 ,那么当前状态每个动作的概率为:
其中 是栈里的LSTM编码结果:
是buffer里的LSTM编码结果:
是之前动作序列的LSTM编码结果:
最终的损失函数采用交叉熵:
实验
实验的超参数设置如下:
经过对比实验可以发现,结果比自底向上和自顶向下的转移系统都要略高一点,就算加上了重排序,还是略高一点。单模型的话,和2017年之前的结果相比的确是最高的,但是91.8的F1值现在看来不是特别高了,毕竟伯克利基于CKY算法的chart-parser都已经到了92多甚至93了。
详细结果如下表:
模型在依存句法分析和CTB上的表现也都很不错。
总结
本文提出了一种基于中序遍历转移系统的成分句法分析模型,主要的动机还是基于人类阅读时的直觉,该模型协调了自底向上和自顶向下转移系统的优缺点,在采用重排序之后,结果达到了非常高的水准。
当然我个人认为模型也存在一些改进的地方:
- 单词的表示可以加上Char-LSTM。
- 预测阶段可以采用之前文章提到的Dynamic Oracle技术,来减少预测错误的发生。详见之前的文章:地址。不过这里的Dynamic Oracle要重新设计了,设计好了说不定又可以发一篇论文了?(手动滑稽)