自然语言处理-句法分析

1.乔姆斯基文法

(1)基础数学定义

(2)乔姆斯基文法四元组

对于VN,语言学家会预定义一套符号,比如:

S代表句子

NP代表名词短语(Noun Phrase)

VP代表动词短语(Verb Phrase)

对于P,也是专家定义的一系列规则,是根据语法定义的 如:S->NP VP

(3)乔姆斯基层次结构

2.上下文无关文法(CFG)

如果对于左侧是NP的规则,后续的选择有很多,这里可以循环来尝试

课件中的另一个例子:

3.乔姆斯基范式(CNF)

Chomsky Normal Form

注意,CNF是CFG的子集

严格规则定义:

比如

特性 普通 CFG (2 型文法) CNF (乔姆斯基范式)
灵活性 极高,右边可以随心所欲组合 极低,只能是 BC 或 a
语法树形状 任意形状的多叉树 标准二叉树
算法支持 较难直接进行高效自动化解析 完美适配 CYK 等动态规划算法
地位 语言学的描述工具 计算机 NLP 的运算工具

CYK算法是判断句子是否符合文法的经典算法,它要求文法必须是CNF格式

对于长度为n的句子,在CNF文法下,推导过程正好需要2n-1步

CYK算法

CYK核心是一个自底向上的动态规划过程

目标是:给定一个句子和一个 CNF 文法,填满一个三角形的表格,最终看顶格是否包含开始符号 S

用一个例子来看:

填写第一行的时候,注意也要使用规则,每个格可能有好几种表示

填写第二行时候,如果是12拼成的,第二行要写在1的位置

在下图中,VP->V NP是根据2、3格的出来的,也就是要写在2的位置

在填写第3行的时候,可以自由的组合,比如可以1+23,12+3,23+4等等都可以,把符合的写出来即可,如下图

比如其中第三行的1位置,是由1+23得到的(S -> NP VP)

4.概率上下文无关法

在传统的 CFG 中,一个句子往往能推导出多棵语法树(这就是所谓的歧义性

在概率上下文无关法中,对于同一个非终结符(左手边相同),其所有可能的推导规则概率之和必须等于 1,比如

引入概率后,之前的 CYK 算法 就进化成了 概率 CYK 算法

  1. 填表内容变了:以前格子里只写 {NP, VP},现在要写 {(NP, 0.5), (VP, 0.2)}。

  2. 组合逻辑变了:当你合并两个格子时,不再是简单的拼接,而是要进行乘法运算:

  3. 目标变了 :不再是"填满就行",而是在填表过程中,如果同一个格子里出现了多个相同的非终结符(比如两个不同的推导都得到了 NP),只保留概率最大的那一个(类似于 Viterbi 算法的思想)

三个问题:(类似HMM中的三个问题)

相关推荐
冬奇Lab3 分钟前
每日一个开源项目(第132篇):SkillSpector - 安装 AI Agent Skill 之前先扫一遍
人工智能·开源·agent
冬奇Lab5 分钟前
如何让 AI Skill 质量有据可查?Benchmark 驱动的评测体系设计
人工智能·agent
腾科IT教育1 小时前
Spring AI Alibaba 向量(VectorStore)
人工智能·spring·microsoft
IT_陈寒1 小时前
React中useEffect依赖项这个坑我居然踩了三天
前端·人工智能·后端
江畔柳前堤1 小时前
github实战指南02-仓库管理与 Issue
人工智能·深度学习·github·信号处理·caffe·wps·issue
邵宇然2 小时前
内存分配优化:基于 Unsafe 指针与内存对齐的 Rust 区域分配器
人工智能
海兰2 小时前
【游戏】迷雾镇(Mist Town)AI 沙箱游戏详细设计与部署指南(附源代码)
人工智能·游戏
小赖同学啊2 小时前
智能连接器集群化高可用生产方案
linux·运维·人工智能
ZStack开发者社区2 小时前
基于AI Agent的ZCF API文档全链路自动化
运维·人工智能·自动化
沈麽鬼2 小时前
别瞎用AI写代码!90%开发者都搞错了AI编程的底层逻辑
人工智能·ai编程·trae