语义角色标注相关论文解析

语义角色标注(Semantic Role Labeling,SRL)的使用范围很广泛,可以作为信息抽取(Information Extraction)、自动答复(Question Answering)、机器翻译(Machine Translation)的中间步骤。本篇博文将介绍 Zhou and Xu, 2015 的一篇论文,希望能对读者有所启发。

SRL的目标是找到给定句子里的谓词(predicate)相关的成分与此谓词的角色关系,被认为是一种监督学习问题(supervised machine learning)。传统方法中,比如逻辑回归(Logistics Regression,LR)、支持向量机(Supported Vector Machine,SVM)等线性分类器基于特征来完成此任务:

  1. 确定成分是否与谓词相关;
  2. 如果相关是何种关系类型?

在特征中,句法信息(syntactic information)被认为是必不可少的(Punyakanok etal., 2008a),因为成分在句法树(semantic tree)中的位置提供了中间的标签类型,有助于提高性能。然而要得到一颗句法树就必须对句子进行解析(semantic parse),而解析不能保证完全正确,因此基于句法树的方法错误会传导至最终SRL的结果。此外,如何选取特征严重依赖专家经验,费时费力,而且当换了语料或者使用其他语言的预料时又得重新设计特征模板,费时费力!

本篇论文作者提出了end-to-end的BD-LSTM模型(bi-directional long short-term memory)来解决上述问题,只输入原始的文本信息即可,不需要任何句法信息,输入的特征被8(是实验最好的结果不是幸运数字)层双向的LSTM层处理,最上层是条件随机场(Conditional Random Field,CRF)用来分类,并且句法信息也可以一定程度得到。序列信息输入给正向的LSTM层,这个层的输出作为紧接着的反向的LSTM层的输入,这两层构成一对LSTM层,一共有4对堆叠到一起,如下图:
图一
文中使用4种特征:predicate(pred),argument(argu),predicate context(ctx-p),region mark(mr)。因为仅仅靠单一的谓词很难表达出谓词的信息,尤其是当一句话中同一单词出现多次的情况下,这就是为什么会设计predicate context这个特征,主要用来消除歧义。当argument落在predicate context范围内时,mr = 1,否则为0。如下表:
表一上述四种特征拼接起来作为输入喂给LSTM层。文中还是用了预训练的词向量,对于给定的序列,查找每个词对应的词向量然后用LSTM来处理词向量。使用随机梯度下降(Stochastic Gradient Descent,SGD)算法作为训练技术。在LSTM层处理完整个序列的时间步之后,将所有的输出作为CRF层的输入执行序列tagging任务,最后用Viterbi算法解码。

作者还简单分析了卷积神经网络(Convolutional Neural Network,CNN)在SRL任务的表现,以求获得这个问题的deep insight。在CNN模型中,加入了argument context这个特征,所以一共就是5个特征。对于除了region mark以外的4个特征,每个都增加一个隐藏层,加上region mark一起投影给下一个隐藏层。最后也是接一个CRF层,网络结构见下图:

在这里插入图片描述
作者做了一组基于CNN模型的实验,结果如下表,其中h1c是连接到argument context(ctx-a)或者predicate context(ctx-p)的隐藏层的维度:
在这里插入图片描述
可以得出以下结论:

  1. 更长的argument context或者predicate context可以得到更好的结果,因为更长的文本会带来更多信息;
  2. 在其他的NLP实验中,例如NER,POS tagging也有同第一点的趋势。不同的是,不必使用11位context长度,因为NER或者POS tagging有用的信息一般都反映在tag位置附近,不像SRL具有长距离依赖,因此在传统的SRL任务中一般引入semantic tree;
  3. 并不是模型越复杂表现就越好,对比CNN-2、CNN-3、CNN-6;
  4. region mark特征至关重要,对比CNN-3、CNN-5,这是因为通常认为predicate附近的词与predicate更相关。
  5. SRL是一个典型的长距离依赖问题,这就是为什么会引入context长达11。但是仅仅增加context长度不能完全表达出文本信息,所以作者才选用LSTM。

紧接着作者又做了一组基于LSTM的实验,从LSTM层数d = 1,隐藏层维度h = 32,词向量随机初始化,ctx-p = 1,不使用region mark开始,慢慢增加d、h、ctx-p并使用英语维基百科的词向量Ewk,实验结果如下表:
在这里插入图片描述从实验中可以得出以下几点结论:

  1. 在不使用region mark的情况下,最简单的模型的F1 = 49.44,高于CNN-1或者CNN-5,说明LSTM结构能更有效地提取序列信息;
  2. predicate context很有必要,对比ctx-p =5与ctx-p = 1可知F1从49.44增长到56.85;
  3. region mark也很有用,可以把F1得分提升到58.71,原因同CNN;
  4. 使用预训练的的词向量Ewk可以提高模型的表现;
  5. 提升模型的关键在于增加模型的深度:a、增加了反向的LSTM层之后F1从65.11提升至72.56;b、增加堆叠的LSTM对也可以提升模型的表现,8层的LSTM的F1可达78.28;c、模型不是越深越好,从d = 6到d = 8并没有带来显著提升;
  6. 增加维度也可以缓慢提升模型的表现。

由于此模型输入特征远比需要sparse特征魔板的传统模型小,所以非常高效,平均每秒可以处理6.7K个token。最后放一张state-of-the-art的表(2015年)以表敬意:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章