句法分析
句法分析与上下文无关文法相对立,强调通过对于句子语法结构的分析,实现对于句子的理解。最常见的三种句法分析任务如下
- 句法结构分析 识别句子中的短语结构和层次关系
- 依存关系分析 识别句子中词与词之间的依存关系,确定词语的含义
- 深层文法句法分析 利用深层文法对句子进行分析
依存句法分析(Dependency Parsing)
依存结构展示了句子中依赖于其他词语的单词,这种依赖体现为被修饰或者被限定
同一个句子,在不同的依存关系下,理解的含义可能有所不同
- 介词修饰歧义(preposition attachment ambiguity)(刀杀死了男人,还是杀死了带刀的男人)
修饰范围歧义(Coordination scope ambiguity)
形容词修饰歧义
依存句法(Dependency Grammar)
依存句法假设句子中的词语存在语法结构上的关联,这种通常为非对称的二元关联关系成为依赖(Dependency)
- 依存语法树
直接在句子上标注
依赖关系的一般约束
- 依赖不循环
- 相依赖的词语一般距离较近
- 依赖项一般能够构成树形结构
依存句法分析的基本方法
- Dynamic programming
- Graph algorithms
- Constraint Satisfaction
- “Transition-based parsing” or “deterministic dependency parsing”
Greedy transition-based parsing 基于贪婪思想转换的依存分析
简单理解就是 从句子的开头逐个单词进行压栈,判断即将入栈元素和栈顶元素的依存关系,根据依存关系在边集合 添加对应方向的边,弹出栈顶元素(reduce)(如果不存在关系,不弹),并将当前元素压栈(shift)
Arc-Standard transition-based parser
MaltParser
引入机器学习分类器,通过分类器判断添加的依赖,以及依赖的方向。避免了搜索,提供了一种线性的解析方式
如何衡量依存分析的效果?
Dependency Accurracy