首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CS224n笔记——依存分析

这次的内容是讲基本的语法和怎么做语法方面的机器学习任务的。

对于如何描述语句的语法结构,目前有两种主流观点:一是短语结构语法(Constituency),用某种规则分解句子为短语和单词、分解短语为更短的短语或单词,如下图:

另一种就是此次的主要内容,依存结构,用单词之间的依存关系来表示语法,这也是高中时语文和英语中学的语法。如果一个单词修饰另一个单词,则称该单词依赖于另一个单词。如下图:

目前常用树形结构和箭头表现依存关系:

依存分析是一种句法依存结构分析任务,输入为给定的语句,输出为上图所示的依存树,其中w0为树的根节点词。近年来出现了很多基于依存关系的语法处理方法,包括此次要介绍的神经网络法。

依存分析包括两个子命题:

1.学习。给定训练集D,包括若干语句和对应的依存树,通过某种机器学习算法得到能够分析新语句的分析模型M。

2.分析。给定分析模型M和语句S,生成最佳的依存树。

基于转换的依存分析:

也就是有限状态机法,其学习任务是生成一个可以根据之前的状态转换历史预测状态机下次转换的模型,分析任务是根据生成的模型构造输入语句的最佳状态转换序列。大多数基于转换的系统不会用到正式的语法。

贪心决策转换分析:

2003年提出的方法,用的比较多。虽然也是基于有限状态机的方法,但是与其他方法有根本上的不同。

状态:

对于语句,一个状态可以被描述为,其中代表语句中已经过判断的单词的栈,代表未经判断缓冲,A代表依存弧(箭头)的集合,其中r描述了某种依存关系。初始状态为,最终状态为

转换:

1.替换:

2.左弧:

3.右弧:

接下来介绍神经网络依存分析,使用了贪心决策转换分析法,比之传统方法有着相当的性能和高得多的效率,主要的区别在于将稀疏的特征表示转变成相对密集的。

此模型的最终目的是预测一个从初始状态到最终状态的转换序列,在这个序列中就生成了依存树。因为此模型是贪婪决策,所以它试图从当前状态中提取特征预测现一个转换动作。

特征选择:

根据想要的模型复杂度,可以灵活选择神经网络的输入。输入有三个部分:

1.句中单词的词向量。

2.:Part-of-speech(POS)标记,语句中某些单词会有,构成了一个小的离散集合:

3.:依存弧的性质标记,

这些输入本来都是one-hot向量,维度可能不同且过于稀疏,所以要经过降维处理转化为统一的d维向量(例如Word2vec就是一种针对词向量的降维方法),串联成一个输入矩阵。

不过这里我有一个疑问,一般来说数据集中的词库的大小是要远大于POS标记和依存关系标记的大小的,那么这样直接降到统一维度进行处理真的是个好的方法吗?

下面看一个具体的特征选择实例。

1.进行词向量表示的包括选择栈上最上面的三个单词和buffer中最前面的三个单词,栈上最上面两个单词的下面两层依存树上的单词,一共18个元素。

2.:每个词有一个,也是18个元素。

3.栈上最上面两个单词下面两层依存树共12个树枝,所以有12个依存标记。

需要注意的是我们用一个Null标记来表示不存在的元素,例如初始状态下栈上只有一个元素,那其他两个词向量均为Null。将所有one-hot向量降维、串联后得到输入矩阵.

接下来考虑神经网络的结构。

Hidden layer使用了一个非线性函数,损失函数可以选择cross entropy。

官方笔记到这里就结束了,不过,出于对这个三次函数的好奇,我去查阅了这个模型的原始论文,发现这个函数其实是这样的:

对于为什么这样选择,论文没有非常详细地说明,只是从直觉上说,这更好地捕捉了三个元素的相互作用,这是依赖性解析的一个非常理想的属性,并且在实践中证明了这个函数有一定优越性。还有贪心决策是体现在那六个输入词向量的选择上的,此模型选择栈的最上面三个元素和缓冲区前三个元素,正是离决策中心词最近的窗口。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180126G1A4GE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券