第十三篇:上下文无关语法 Context-Free Grammar
目录
回顾
上下文无关语法基础
为什么是“上下文无关”
Context-Free上下文无关 vs. Regular 常规/正则
CFG 解析
这意味着什么?
但是
大纲
组成部分
句法成分
移动
替换
协调
成分和短语
CFG Trees
算术表达式的 CFG
解析
CYK 算法
转换为乔姆斯基范式CNF
CYK 解析算法
CYK:检索解析
CYK算法
用 CFG 代表英语
从玩具语法到真正的语法
Penn Treebank 的主要成分
示例 PTB/0001
基本英语句子结构
英语名词短语
动词短语
其他成分
总结
解析歧义
回顾
• 中心嵌入
• 无法被正则表达式 () 捕获
• 上下文无关语法!
上下文无关语法基础
• 符号
‣ 终端:单词比如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 表示:
‣ 先制定产生式规则
‣ 然后就可以构建一个“解析器”来自动判断一个句子是否符合语法!
• 但是自然语言是无上下文的吗?
• 不完全:跨串行依赖 ()
但是
• 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
目录 解析中的歧义 大纲 概率CFGs的基本Basics of Probabilistic CFGs (PCFGs) 使用 PCFG 随机生成 一棵树的可能性有多大? PCFG parsing CYK ...
- 【计算理论】下推自动机 PDA ( 设计下推自动机 | 上下文无关语法 CFG 等价于 下推自动机 PDA )
文章目录 I . 下推自动机 设计 II . 上下文无关语法 ( CFG ) 等价于 下推自动机 ( PDA ) I . 下推自动机 设计 设计下推自动机 , 可以识别 {wwR:w∈{0,1}∗}\ ...
- 【计算理论】上下文无关语法 ( 代数表达式 | 代数表达式示例 | 确定性有限自动机 DFA 转为 上下文无关语法 )
文章目录 I . 代数表达式 语法 II . 代数表达式 语法 示例 III . 设计 上下文无关语法 IV . 确定性有限自动机 DFA 转为 上下文无关语法 I . 代数表达式 语法 1 . 代数 ...
- 【计算理论】上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 | 语法分析树 )
文章目录 I . 语法组成 II . 规则 III . 语法 IV . 语法示例 V . 语法简写形式 VI . 语法分析树 VII . 代数表达式 语法 I . 语法组成 上下文无关语法 组成 : ...
- 【计算理论】上下文无关语法 CFG ( CFG 设计示例 | CFG 歧义性 | Chomsky 范式 | 上下文无关语法 转为 Chomsky 范式 )
文章目录 一.上下文无关语法 设计 示例 二.上下文无关语法 的歧义性 三.Chomsky 范式 四.上下文无关语法 转为 Chomsky 范式 五.上下文无关语法 转为 Chomsky 范式 示例 ...
- 【计算理论】上下文无关语法 ( CFG ) 转为 下推自动机 ( PDA )
文章目录 I . 上下文无关语法 ( CFG ) 转为 下推自动机 ( PDA ) II . 下推自动机 ( PDA ) 三个状态 III . 下推自动机 ( PDA ) qstartq_{start ...
- 短语结构文法(PSG)、上下文有关文法(CSG)、上下文无关文法(CFG)、右线性文法(RLG)的区别
Part 1 短语结构文法(PSG).上下文有关文法(CSG).上下文无关文法(CFG).右线性文法(RLG)的区别 Part 2 概念 文法G=(V,T,P,S) G叫做0型文法(type 0 gr ...
- 上下文无关文法和正则文法_什么是上下文无关文法?
上下文无关文法和正则文法 Have you ever noticed that, when you are writing code in a text editor like VS code, it ...
- 【计算理论】计算理论总结 ( 上下文无关文法 CFG 转为下推自动机 PDA 示例 2 ) ★★
文章目录 一.上下文无关文法 CFG 转为下推自动机 PDA 流程 二.上下文无关文法 CFG 转为下推自动机 PDA 示例 2 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | ...
最新文章
- 2020十大热门机器学习项目
- Install pysnmp for django
- sqlserver 性能问题
- 【算法】设计算法求所有强连通分量的完整代码(kosaraju算法)
- ElasticSearch(二)索引管理
- SQL Server执行计划那些事儿(3)——书签查找
- Java中对字符串的操作
- 思科收购网络安全管理厂商Pari Networks
- python随机颜色代码_python绘制随机颜色太阳花
- Ubuntu16.04下修复宿主机时区错位8小时、修复容器相较于宿主机错位8小时问题
- C++ 引用 支持多级嵌套吗
- 极大似然估计法的理解
- c语言pic延时1ms程序,几个延时子程序
- OpenCV(C++)图像处理基础03:读写像素、像素值修改、像素反差
- MATLAB/Simulink仿真 并网型风光混储直流微电网 实现:功率分配、削峰填谷、平抑功率波
- android 直播推流sdk,Android——直播推流SDK
- 【转载】Vue -- 获取点击元素的兄弟元素
- 梦幻柔焦(奥顿效果)
- 联想电脑如何修复计算机系统,预装Windows 10的一键恢复过程
- 研究生平均年薪26.5万!本科生20万!南京大学软件学院19年就这么高!
热门文章
- 面试必备|带你彻底搞懂Python生成器
- Windows 7时代即将终结!
- TensorFlow 2.0新特性解读,Keras API成核心
- 百度大脑发挥AI“头雁效应” 王海峰:在AI时代共同推动社会智能化升级
- Spring Boot 面试杀手锏:自动配置原理
- Spring发布新成员:Spring GraphQL!高调出场的GraphQL能火起来了吗?
- 让人头痛的大事务问题到底要如何解决?
- 作者解读ICML接收论文:如何使用不止一个数据集训练神经网络模型?
- 开源教程 「nlp-tutorial」!用百行代码搞定各类NLP模型
- 【廖雪峰python进阶笔记】面向对象编程