自然语言处理中的上下文无关文法(CFG)
来源:互联网 发布:tester软件 编辑:程序博客网 时间:2024/05/22 15:57
一、引言
回忆一下HMM在自然语言处理中的应用,我们所采用的例子主要是词性标注(POS tagging, part-of-speech tagging)。例如我们现在有一个句子:
time flies like an arrow.
然后我们可以为每个标注词性,则有“time/Noun flies/Verb like/Prep an/Art arrow/Noun/”。显然,当我们单独来看单词 flies,它可能是一个Noun,也可能是一个Verb,但是如果它前面那个词是形容词,那么它显然是名词的概率更高,而如果它前面的那个词是名词,则它是动词的可能性更高。所以我们就可以建立一个HMM模型,来根据观测到的状态序列(及历史)来预测具体某个词到底是什么词性。其中,单词的词性就是HMM中的隐状态,而我们所看到的具体的每个词就是观测状态。
HMM在做POS tagging时,由于考虑了一些历史的因素(就是当前词的前几个词),所以它确实是相当有效的。但是HMM这种序列模型其实是把句子看成了一个平的结构,而忽略了自然语言中的层次结构。例如,下面这个句子:
[A man] [saw [a dog] [in [the park]]]
显然,句子是有层级结构的。一些单词组合在一起就会构成句法成分(syntactic constituents),例如主语、谓语、宾语等都是句法成分。句法成分可以作为一个单元,来被替换或者移动。例如上面句子中,A man 是主语,我们可以用另外一个同样可以用作主语的短语来替换它,例如 [John] [saw [a dog] [in [the park]]],这仍然是一个合法的句子。语法就是与句法成分相对应的规则,它可以让我们对上述句法成分的认识形式化、正式化。
二、上下文无关文法(CFG,Context-Free Grammars)
最常被用来对英语(或其他自然语言)之成分结构进行建模的数学系统就是上下文无关文法(CFG),又称为词组结构文法(PSG,Phrase-Structure Grammars)。一个CFG由一系列rules(或productions)组成,每个rule给出了 语言中的符号(symbols)可以被组织或排列在一起的规则,以及符号和单词构成的字典(lexicon)。
其中,符号(symbols)被分成两类:
- Terminals:就是指单词,例如 book
- Non-terminals:句法标签,例如 NP 或者 NN
Rules(或productions)则是由一个 “→” 连接的表达式:
- 左侧(LHS,left-hand side)只有一个 non-terminal;
- 右侧(RHS,right-hand side)是一个由 symbols 组成的有序的list。
例如,下面就给出了一个简单的CFG示例
Terminal symbols: rat, the, ate, cheese
Non-terminal symbols: S, NP, VP, DT, VBD, NN
Productions:
S → NP VP
NP → DT NN
VP → VBD NP
DT → the
NN → rat
NN → cheese
VBD → ate
下面我们试着利用上面这个CFGs来产生句子。我们总是以S做为开始,S表示句子(sentence),也有说表示开始符(start symbol)。
S
应用规则S → NP VP,则有
NP VP
应用规则NP → DT,则有
DT NN VP
应用规则DT → the, NN→ rat, 则有
the rat VP
应用规则VP → VBD NP,则有
the rat VBD NP
应用规则VBD → ate,则有
the rat ate NP
应用规则NP → DT NN,则有
the rat ate DT NN
应用规则DT → the, NN→ cheese, 则有
the rat ate the cheese
上述推演过程,用树来表示非常方便。其中,terminals都是位于叶子节点,而non-terminals则都是非叶子节点,如下图所示,这个树形的结果刚好也很好地体现出了本文最开始所说层次结构。
或者,也可以采用下面这样的一种更加紧凑的形式来表示上面这棵syntactic tree(或称parse tree)。
一个CFG的正式定义通常由四元组N, ∑, R, S 来表示:
三、语法解析
与CFG相关的一个操作就是语法解析(Parsing)。语法解析就是指在给定词串的情况下,例如the rat ate the cheese,来识别其可能的语法结构。
常用的语法解析算法有
- 自下向上(从单词开始,工作朝向S进行):CKY算法(另见http://blog.csdn.net/baimafujinji/article/details/6476776)
- 自上向下(从S开始,工作朝向单词进行):Earley算法
(全文完)
- 自然语言处理中的上下文无关文法(CFG)
- 上下文无关文法(CFG)
- 自然语言 和编译原理中的(1型文法)上下文有关文法和(2型文法)上下文无关文法CFG
- 自然语言处理学习(三):上下文无关文法和概率上下文无关文法
- 统计自然语言处理(概率上下文无关文法)
- 自然语言处理学习(二):概率化的上下文无关文法
- 上下文无关文法(Content-Free Grammar, CFG)
- 到底什么是上下文无关文法(CFG)?
- 从上下文无关文法(CFG)到语法分析树——LL(1)分析法
- 从上下文无关文法(CFG)到语法分析树——SLR(1)分析法
- 上下文无关文法
- 上下文无关文法
- 上下文无关文法解析
- 上下文无关文法
- 上下文无关文法1
- 上下文无关文法2
- 上下文无关文法
- 句法模式识别(二)-正规文法、上下文无关文法
- 2道算法题, 无限级分类数据库
- shell
- 关键字const用法详解
- ADO.NET 连接access 和 excel
- TCP/IP协议源码学习笔记之典型数据结构-链表
- 自然语言处理中的上下文无关文法(CFG)
- Generative vs Discriminative Models
- 此处第一博
- 真的有点晚
- 下定决心
- 闲言絮语01
- 太晚了
- 天啦
- 学习C的建议