赞
踩
此篇博客是cs224n的第六讲的课程笔记,主要对依存分析进行了讲解,用于备忘。
描述句子结构有两种主要工具,一种是上下文无关文法(context-free grammars,CFGs)的方法,这种方法也被引申为短语结构文法(phrase structure grammar)和句子成分(constituency)的概念。所谓的上下文无关文法,个人理解就是根据一定的规则构成的句子结构,规定一定文法,在该文法下进行部分结构替换。如下图所示,
N
P
s
g
NP_{sg}
NPsg可以被替换成DT NN PP,该条规则就是
N
P
s
g
→
D
T
N
N
P
P
NP_{sg} \rightarrow DT NN PP
NPsg→DTNNPP。
另外一种就是依存句法结构,如果一个词A修饰另外一个词B,那么A就是B的依赖。比如barking dog 中的barking就是dog的依赖。通常,用箭头来表示这种依赖,箭头的方向根据自身习惯决定。如下图所示
依存句法分析可以解决句子的歧义性
from space 用来修饰whales还是study,对句子就会有不同的解读。
在上世纪90年代,人们开始耗费大量人力物力对句子进行标注。标注好的数据如下图所示
在当时上下文无关文法流行的时代背景下,这种效率低且速度慢的方法很无厘头,而书写语法规则才具有普适性。但是,对于现在的机器学习,构建一个标注好的树库十分的有用。
树库的优点:
通常,我们进行依存句法分析的时候会对依存关系的类型进行标注
图中,Bills是submitted的辅修饰项,submitted称为head,Bills称为dependent。介词没有任何dependent,比如这里的by
约束条件:
Dynamic programming
Graph algorithms
Constraint Satisfaction
“Transition-based parsing” or “deterministic dependency parsing”
第四种方法是我们需要关注的,主要思想是基于贪心决策动作拼装句法树。
这种基于弧标准转换的依存分析方法的核心思想如下图所示,
σ
\sigma
σ代表堆,初始值是ROOT,
β
\beta
β代表缓冲,初始值为句子集合。下面Shift、Left-Arc和Right-Arc是三中可选操作。
Shift:将缓冲区内的单词
w
i
w_i
wi移动到堆中
Left-Arc:从堆中移动左边的单词
Right-Arc:从对中移动右边的单词
终止条件是堆中只剩ROOT一个词,缓冲为空
课程中提到的例子是“I ate fish”,左边代表堆,右边代表缓冲。
Shift操作:
Left-Arc和Right-Arc
以上是介绍了各种操作代表什么,还没有提到什么时候该进行什么操作。
事实上,我们已经有了树库对句子的已有分析,可以利用该信息训练分类器来决定每一步应该进行哪种操作。
训练神经网络作为分类器来判断需要进行哪种操作,这种神经网络的训练的第一个问题就是这么构建特征。课程中提到的方法是根据堆和缓冲中的词、词性、依存标签进行组合得到成千上万的特征。如下图所示,
s
2.
w
s2.w
s2.w的意思是堆中的第二个词是has,而且被标为现在时,顶端词是good,这就是一个特征。通过这种方法可以得到一个稀疏的特征向量。
评价指标主要是两种:UAS和LAS,前者不考虑标签的只考虑弧的准确性,后者同时考虑标签和弧
以上提到的构建特征向量的方法存在很多问题:
解决方法
将输入替换为单词、词性和依存的向量表示,将这些向量表示进行拼接,如下图所示
然后构建一个常见的三层神经网络
这是课程中提到的效果对比
老生常谈,简单记录一下课程提到的常见的激活函数形式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。