《Speech and Language Processing》读书笔记——语法规则及其解析
1.摘要
本章主要介绍了:
- 上下文无关语法(CFG)
- 语法解析算法(CKY、Earley)
2.上下文无关语法(CFG)
句法分析是NLP中的关键底层技术之一,其基本任务是确定句子的句法结构或者句子中词汇之间的依存关系。 那么就引出了两个问题:
- 在计算机中如何表示句子语法结构
- 如何编程实现对句子语法结构的解析
于是我们这里就引出了CFG的概念,用来解决第一个问题。为了生成句子的语法树,我们可以定义如下的一套上下文无关语法 G = ( N 、 Σ 、 R 、 S ) G=(N、Σ、R、S) G=(N、Σ、R、S)
- N表示一组非叶子节点的标注,例如{S、NP、VP、N…}
- Σ表示一组叶子结点的标注,例如{boeing、is…}
- R表示一组规则,每条规则可以表示为X->Y1Y2…Yn,X∈N,Yi∈(N∪Σ)
- S表示语法树开始的标注
其中NP表示名词短语(包括指代词)、VP表示动词短语、DT表示冠词、N表示名词等等,这里的句法规则符号可以参考词性标注库里的说明
例如句子:I prefer a morning flight,我们可以得到:
Σ=[I、prefer、 a 、morning 、flight]
N=[S、NP、VB、DT、N]
R=[
S -> NP VP
NP->Pro
Pro->I
VP->Verb NP
Verb->prefer
NP ->Det NOMINAL
Det->a
NOMINAL -> Noun Noun
Noun ->morning
Noun-> flight
]
其句法树如下图所示:
既然已经知道了如何表示句子的语法结构,那么对于一个句子 S = [ w 1 . . . w n ] S=[w_1...w_n] S=[w1...wn]它是如何生成语法树的呢?下面就详细介绍几种常用句法解析算法。
3.基于搜索的句法解析
3.1自顶向下(top-down)
其核心思想就是在于从S开始自上而下寻找最左边的非叶子节点(非终结符号 即 词性)按推导规则进行扩展,直到所有节点都可以直接到达终结符号(词)。
比如对于句子[book that flight](该句子已经生成了相应的词性标注序列)。从S开始推导。有如下推导规则R(太多未写全):
S → ( N P V P ) / ( A u x N P V P ) / ( V P ) S\to{(NP\quad VP)/(Aux\quad NP\quad VP)/(VP)} S→(NPVP)/(AuxNPVP)/(VP)
N P → ( D e t N o m ) / ( P r o p N ) NP \to{(Det\quad Nom)/(PropN)} NP→(DetNom)/(PropN)
V P → ( V N P ) / ( V ) VP\to{(V \quad NP)/(V)} VP→(VNP)/(V)
…
N o u n → B o o k Noun\to{Book} Noun