【笔记3-1】CS224N课程笔记 - 深度自然语言处理
【笔记3-2】CS224N课程笔记 - 词向量表示 word2vec
【笔记3-3】CS224N课程笔记 - 高级词向量表示
【笔记3-4】CS224N课程笔记 - 分类与神经网络
【笔记3-6】CS224N课程笔记 - RNN和语言模型
【笔记3-7】CS224N课程笔记 - 神经机器翻译seq2seq注意力机制
【笔记3-8】CS224N课程笔记 - 卷积神经网络
CS224n:深度学习的自然语言处理(2017年冬季)1080p https://www.bilibili.com/video/av28030942/
涉及到的论文:
Globally Normalized Transition-Based Neural Networks (Daniel Andor, Chris Alberti, DavidWeiss, Aliaksei Severyn, Alessandro Presta, Kuzman Ganchev, Slav Petrov and Michael Collins,2016)
https://arxiv.org/pdf/1603.06042.pdf
A Fast and Accurate Dependency Parser using Neural Networks (Danqi Chen, Christopher D. Manning,2014)
https://cs.stanford.edu/people/danqi/papers/emnlp2014.pdf
Incrementality in Deterministic Dependency Parsing (Joakim Nivre,2004)
https://www.aclweb.org/anthology/W04-0308
依存语法和依存结构
与编译器中的解析树类似,NLP中的解析树用于分析句子的句法结构。使用的结构主要有两种类型——constituency和dependency。
Constituency Grammar:使用短语结构语法将单词放入嵌套的组件中。
Dependency Parsing:句子的从属结构显示哪些词依赖于(修饰或是)哪些词。这些单词之间的二元非对称关系称为依赖关系,并被描述为从head到dependent。通常这些依赖关系形成一个树结构。经常用语法关系的名称进行分类(主语,介词宾语,同位语等)。有时会将假根节点作为head添加到树中,所以每个单词都依赖于一个节点。
依存分析
依存分析:分析给定输入句的语法依赖结构。依存解析器的输出是依赖树,其中输入句的单词通过类型化依赖关系连接。在形式上,依存关系问题要求从输入语句(包含单词)到依存关系树创建一个映射。
依存分析有两个子问题:
- 学习:给定一组用依赖关系图标注的句子训练集D,导出一个解析模型M,该模型可用于解析新句子。
- 解析:给定一个解析模型M和一个句子S,根据M推导出S的最优依赖关系图D。
基于转换的依存分析
基于转换的依存解析依赖于状态机,状态机定义可能的转换,以创建从输入语句到依赖项树的映射。学习问题是根据状态机的过渡历史,建立预测状态机下一个过渡的模型。解析问题是根据前面推导的模型,构造输入句子的最优转换序列。大多数基于转换的系统不使用正式语法。
贪婪转换依存分析
这个转换系统是一个状态机,它由状态以及这些状态之间的转换组成。该模型推导一系列从某种初始状态到几种终端状态之一的转换。
- 状态 state:
对于任意一个句子,状态是以下三者的组合
是一个包含 中的 的堆栈(stack); 是包含的缓冲区(buffer);A是依存弧的集合,其中 来自于句子S,表示依存关系。
对于任意一个句子,初始状态 可以表示为 ,即只有ROOT在堆栈 中,其他单词都在buffer 中,暂未采取任何行动。终止状态为 - 转换 transition:
状态之间的转换有三种:
Shift:删除缓冲区中的第一个单词,并将其推到堆栈顶部。(要求缓冲区非空)
Left-arc:往集合A中添加一个依存弧 ,其中 是距离栈顶第二近的单词,而 是栈顶单词。将 从堆栈中移除(要求堆栈至少包含两个单词,且 不能为ROOT)
Right-arc:往集合A中添加一个依存弧 ,其中 是距离栈顶第二近的单词,而 是栈顶单词。将 从堆栈中移除(要求堆栈至少包含两个单词)
神经依存分析
依存分析有许多深入的模型,本节特别关注贪婪的基于转换的神经依存分析器。与传统的基于特征的依存分析器相比,这类模型具有相当的性能和显著的效率。与以前模型的主要区别是依赖于密集而非稀疏的特性表示。
这里介绍的模型运用前面介绍过的弧转换系统,目的是从一个初始的配置 ,预测出直到终止配置的转换序列,在这个过程中编码一棵分析树。每次训练,模型都会基于当前的配置 预测出一轮转化
- 特征选择
根据模型所需的复杂性,可以灵活地定义神经网络的输入。某句话的特征一般包括以下部分:
:在堆栈 和缓冲区 顶部的S(及其依赖项)中的一些单词的向量表示。
:词性(POS)标签是由一个小的离散集合构成的,它包括
:S中的一些单词的arc-label,由一个小的离散集组成,描述依赖关系
对于单词三个特征对应的独热码,会训练出三个embedding矩阵,将稀疏的独热向量转换成稠密向量。 - 特征选择示例
:堆栈和缓冲区上的前3个单词 。堆栈上顶部两个单词的第一个和第二个最左边/最右边的子单词:。堆栈上最前两个单词的最左边/最右边的子元素:。总共包含18个元素。
:对应的POS标签(n_{t}=18)
:中除了stack/buffer中的6个单词之外其他词的arc-label - 前向传播神经网络
包含输入层 隐藏层和输出层(交叉熵损失softmax层)