句法分析详解

首先在了解句法分析,我们先来思考一个问题:人是怎样理解一个句子的?

1、从语法的角度(主谓宾)

2、从感觉的角度(语言模型)

所以句法分析理解起来很简单,就是从语法的角度分析每个词之间的关系,在一句话中那个词是主语,那个词是谓语,等等而且用树的形式来表示。
假设现在有一句话:

北京是属于中国的

那么用句法分析后就是下图的样子:
在这里插入图片描述
我们先不管怎么构成这样的一个句法树,我们先看一下这棵树的特点:

叶子节点是单词,其他节点就是对应的词性,那么构建这样的语法树有什么用呢?

用在特征工程上,我们利用这样的一个句法树对于在对每个数据时我们可以考虑:
1、最短路径

2、两词之间的符号

句法树的构成

那么一个句法树是怎样构成的呢?首先我们得有语法Grammers如下图:
在这里插入图片描述
如上图我们可以看到右边的是语法,比如:一个句子(s)可以分为:名词短语(NP)和动词短语(VP),然后我们根据语法和对应的句子就可以构建这样的一颗语法树了。

那么语法是怎么形成的呢?其实语法是由语言学的专家根据多年的经验写出来的。咱们知道怎么用就可以啦

其实我们可以利用语法树进行翻译

在这里插入图片描述
如上图我们将中文翻译成英文时现将中文转换成一颗句法树,然后根据中文的句法树转换成英文的句法树,最后根据英文文的句法树转换成英文。

在这些环节中我们需要知道:

中文语法,英文语法和中文转英文的语法。

这是比较消耗人力成本的,所以现在一般都是用seq2seq模型来做的。

在这里插入图片描述

我们一般成这种语法为CFG,但是在使用的时候我们一般都是用PCFG,也就是在每个语法后面标注使用这个语法的概率:
在这里插入图片描述
为什么要使用PCFG呢?是因为我们根据语法一个句子可以构成很多个树,我们需要找到那个最优的数因此使用PCFG计算每棵树的score,用来选择最好的那棵树。
在这里插入图片描述
那么我们计算每个语法的概率是用了一批训练数据:
在这里插入图片描述
N P → V , N P N P ( V , N P ) N P 总 NP\rightarrow V,NP\quad\dfrac{NP(V,NP)}{NP_总} NPV,NPNPNP(V,NP)

那么我们怎么才能找到最优的句法树呢?

1、枚举所有的句法树。一一计算找到score最大的那棵树

缺点:计算量太大,指数级增长

2、使用CKY算法

CKY算法指的是将一个大的问题转换成子问题来进行操作(DP)算法的思想

也就是将计算 ( w 1 , w 2 , w 3 . . . w n ) (w_1,w_2,w_3...w_n) (w1,w2,w3...wn)转换成计算 ( ( w 1 ) , ( w 2 , w 3 . . . w n ) ) ((w_1),(w_2,w_3...w_n)) ((w1),(w2,w3...wn))每次比较当前语法与剩余语法的语法大小。动态规划的思想

现在我们知道cky算法的核心是大的问题转换成子问题进行两两比较,这个时候我们也要对我们的语法进行一些转换,保证它能够符合CKY算法

在这里插入图片描述
我们的CKY算法主要是两两之间进行比较,也就是一个语法最多有两个分支,像 V P → N P , V , P P VP\rightarrow NP,V,PP VPNP,V,PP这样的我们尝试把它转换成两个分支的形式,说到这里我提一点CNF的形式,

CNF

CNF是指的只允许右面有两个,其他条件是不允许的,如果出现两个以外的形式我们必须将其转换,如上图语法,还出现了 N P → e NP\rightarrow e NPe V P → N VP\rightarrow N VPN的形式。下面我们来转换一下:

第一步去掉 N P → e N P\rightarrow e NPe
在这里插入图片描述
如上图我们去掉 N P → e NP\rightarrow e NPe相当于把 NP 为 空 代 入 规 则 中 , 这 样 会 多 出 几 条 规 则 ( 去 掉 N P 时 的 规 则 ) 如 上 图 同 时 又 可 以 将 N P → e 为空代入规则中,这样会多出几条规则(去掉NP时的规则)如上图同时又可以将NP\rightarrow e NPNPe去掉

下一步我们去掉 V P → N VP\rightarrow N VPN这种右边为1个的形式:
在这里插入图片描述
如上图我们去掉 S → V P S\rightarrow VP SVP设置几个新的规则就是把VP指向的规则换成S,然后就可以去掉 S → V P S\rightarrow VP SVP

还有一种比较特殊的情况: V P → V VP\rightarrow V VPV也就是指向某个词的时候
在这里插入图片描述
同样的道理,如上图我们去掉 V P → V VP\rightarrow V VPV设置几个新的规则就是把VP指向的规则换成V,然后就可以去掉 V P → V VP\rightarrow V VPV
就这样循序删掉所有的右边只有一个的规则

最后删除 V P → N P , V , P P VP\rightarrow NP,V,PP VPNP,V,PP这种形式:
在这里插入图片描述
遇到这种情况我们就合并一个规则比如 V P → N P , V , P P VP\rightarrow NP,V,PP\quad VPNP,V,PP转化为: V P → N P , @ V P p VP\rightarrow NP,@VP_p\quad VPNP,@VPp @ V P p → V , P P \quad @VP_p\rightarrow V,PP @VPpV,PP
当然CKY算法没有这么严格,它只要保证最多只有两个分支

CKY算法

在这里插入图片描述每次计算都是两两之间进行计算选择最好的那个,并根据语法树的规则连续乘积

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值