第十三篇:上下文无关语法 Context-Free Grammar

Posted flying_1314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十三篇:上下文无关语法 Context-Free Grammar相关的知识,希望对你有一定的参考价值。

目录

回顾

上下文无关语法基础

为什么是“上下文无关”

Context-Free上下文无关 vs. Regular 常规/正则

CFG 解析

这意味着什么?

但是

大纲

组成部分

句法成分

移动

替换

协调

成分和短语

CFG Trees

算术表达式的 CFG

解析

CYK 算法

转换为乔姆斯基范式CNF

CYK 解析算法

CYK:检索解析

CYK算法

用 CFG 代表英语

从玩具语法到真正的语法

Penn Treebank 的主要成分

示例 PTB/0001

 基本英语句子结构

英语名词短语

动词短语

其他成分

总结

解析歧义


回顾

• 中心嵌入

• 无法被正则表达式 (S^{n}V^{n}) 捕获
• 上下文无关语法! 

上下文无关语法基础

• 符号
    ‣ 终端:单词比如book书
    ‣ 非终结符:NP 或 VP 等句法标签
• 制作(规则)
    ‣ W → X Y Z
    ‣ 左侧 (LHS) 正好有一个非终端
    ‣ 右侧符号的有序列表 (RHS); 可以是终端或非终端
• 开始符号:S

为什么是“上下文无关”

W → X Y Z

• 产生式规则仅取决于 LHS也就是左侧(而不取决于祖先、邻居)
    ‣ 类似于马尔可夫链
    ‣ 每一步的行为仅取决于当前状态

Context-Free上下文无关 vs. Regular 常规/正则

• 上下文无关语言比常规语言更通用
    ‣ 允许递归嵌套

CFG 解析

• 给定的生产规则
    ‣ S → a S b
    ‣ S → a b
• 和一个字符串
    ‣ aaabbb
• 生成有效的解析树

这意味着什么?

• 如果英语可以用 CFG 表示:
    ‣ 先制定产生式规则
    ‣ 然后就可以构建一个“解析器”来自动判断一个句子是否符合语法!
• 但是自然语言是无上下文的吗?
• 不完全:跨串行依赖 (a^{m}b^{n}c^{m}d^{n})

但是

• CFG 取得了良好的平衡:
    ‣ CFG 涵盖大部分句法模式
    ‣ CFG 解析计算效率高
• 我们使用 CFG 来描述英语语法的核心片段

大纲

• 组成部分
• CYK 算法
• 用 CFG 代表英语

组成部分

句法成分

• 句子被分解成成分
    ‣ 词序列作为语言分析的连贯单元
    ‣ 帮助构建 CFG 生成规则
• 组成部分具有某些关键属性:
    ‣ 移动
    ‣ 替换
    ‣ 协调

移动

• 成分可以在句子周围移动

    ‣ Abigail gave [her brother] [a fish]
    ‣ Abigail gave [a fish] to [her brother]
• 对比: [gave her], [brother a]

替换

• 成分可以被相同类型的其他短语替换

    ‣ Max thanked [his older sister]
    ‣ Max thanked [her]
• 对比: [Max thanked], [thanked his]

协调

• 组成部分可以与协调器连接,例如and和or

    ‣ [Abigail] and [her young brother] brought a fish
    ‣ Abigail [bought a fish] and [gave it to Max]
    ‣ Abigail [bought] and [greedily ate] a fish

成分和短语

• 一旦我们确定了组成部分,我们就会使用短语来描述它们
• 短语由它们的主词决定:
    ‣ 名词短语:her younger brother
    ‣ 动词短语:greedily ate it
• 我们可以使用 CFG 来形式化这些直觉

一个简单的 CFG(英语)

终结符:rat、the、ate、cheese
非终结符:S、NP、VP、DT、VBD、NN

制作规则:

CFG Trees

• 生成对应一个句法树
• 非终端是内部节点
• 终端是叶子
• CFG 解析是逆过程(句子→树)

上图中VBG应该是VBD笔误

算术表达式的 CFG

• S = 起始符号
• | = 运算符或
• 递归,NUM 和 S 可以自己产生

解析

• “1+2-3”是有效字符串吗?

CYK 算法

• 自底向上解析
• 测试给定 CFG 的字符串是否有效,而不枚举所有可能的解析
• 核心理念:先形成小成分,再合并成大成分
• 要求:CFG 必须采用乔姆斯基范式

转换为乔姆斯基范式CNF

更改语法,以便所有形式规则:
    ‣ A → B C
    ‣ A → a
• 将形式 A → B c 的规则转换为:
    ‣ A → B X
    ‣ X → c

• 将规则 A → B C D 转换为:
    ‣ A → B Y
    ‣ Y → C D
    ‣ 例如 VP → VP NP NP
对于双及物情况,“sold [her] [the book]”
• X、Y 是我们引入的新符号

• CNF 不允许一元规则,A → B。
• 想象NP → S; 并且 S → NP … 导致无限多的树具有相同的产量。
• 用它的制造规则替换 RHS 非终端
• A → B,B → 猫,B → 狗
• A → 猫,A → 狗

CYK 解析算法

• 将语法转换为乔姆斯基范式 (CNF)
• 填写解析表(从左到右,从下到上)
• 使用表导出解析
• 表格右上角的 S = 成功!
• 将结果转换回原始语法

CYK:检索解析

• 解析表右上角的 S 表示成功
• 要获取解析,请按照每个匹配项的指针返回

CYK算法

上图的伪代码,就是我们上面所说的解析算法

用 CFG 代表英语

从玩具语法到真正的语法

• 带有少量制作规则的玩具语法,适合演示或非常有限的领域
• 对于真正的文本,我们需要真正的语法
• 数以千计的制作规则

Penn Treebank 的主要成分

• 句子(S)
• 名词短语 (NP)
• 动词短语 (VP)
• 介词短语 (PP)
• 形容词短语 (AdjP)
• 状语短语 (AdvP)
• 从属从句 (SBAR)

示例 PTB/0001

 基本英语句子结构

• 陈述句(S → NP VP)
    ‣ 老鼠吃了奶酪
•祈使句(S → VP)
     ‣ 吃奶酪!
• 是/否问题(S → VB NP VP)
    ‣ 老鼠吃奶酪了吗?
• Wh 主语问题(S → WH VP)
    ‣ 谁吃了奶酪?
• Wh-object-questions (S → WH VB NP VP)
    ‣ 老鼠吃了什么?

英语名词短语

• 预修饰符

• 后修饰符

这是一条正则:

NP → DT? CD? ADJP? (NN|NNP)+ PP* VP? SBAR?

动词短语

• 辅助者

VP → (MD|VB|TO) AdvP? VP

• 参数和附加词

VP → VB NP? NP? PP* AdvP* VP? SBAR?

其他成分

• 介词短语
‣ PP → IN NP
in the house
• 形容词短语
‣ AdjP → (AdvP) JJ
really nice
• 副词短语
‣ AdvP → (AdvP) RB
not too well
• 从属条款
‣ SBAR → (IN) S
since I came here
• 协调
‣ NP → NP CC NP; VP → VP CC VP;etc.
Jack and Jill
复杂句
‣ S → S SBAR; S → SBAR S; 等等。
if he goes, I’ll go

总结

• 上下文无关文法可以表示自然语言的大多数语言结构
• 有相对较快的动态编程算法 (CYK) 来检索此结构

解析歧义

• 但是歧义呢? 通常不止一棵树可以描述一个字符串,大家可以思考一下!

 

ok,今天的内容就到这里了,炎热的暑假即将来临,真的是有点热~辛苦大家观看了!有问题随时评论交流哦!

以上是关于第十三篇:上下文无关语法 Context-Free Grammar的主要内容,如果未能解决你的问题,请参考以下文章

第十四篇:有概率的上下文无关语法Probabilistic Context-Free Grammar

第十四篇:有概率的上下文无关语法Probabilistic Context-Free Grammar

第十三篇 Inception V2论文翻译

python学习[第十三篇] 条件和循环

第十三篇jQuery Mobile

OpenCV入门指南第十三篇 人脸检测