当前位置:   article > 正文

李宏毅自然语言处理——依存句法分析_依存句法分析例子

依存句法分析例子

引言

我们前面介绍了成分句法分析,本文介绍另外一种方法——依存句法分析。

依存句法分析

image-20210816220347234

依存句法分析关注的是两个词汇之间的关系,这两个词汇不一定要相邻。上面这个例子里面, book和flight有紧密的关系,我们会用一个箭头来表示这种关系。箭头的起始词汇,我们叫head,指向的词汇叫dependent,那词汇之间有什么样的关系呢

image-20210816220523065

具体有这么多关系,我们希望通过机器学习模型能帮我们找出来。

image-20210816220801481

依存句法分析具体来说,找到句子中词汇之间的关系,就是要把一个句子变成一个有向图结构。其中每个节点都是一个词汇,词汇之间的关系就代表节点之间的连线。

比如,“I want to study a PhD”,这个句子的句法分析结果是上面的样子。

“want”的主语是“I”,想要干啥呢,想要“study”,“study”什么,”PhD”。

这些词汇之间有关系的,就用箭头连起来。而箭头是有不同的形态的,代表词汇之间有什么样的关系。

你会发现,上面其实好像一个树结构,每个词汇都有一个父节点,而对于没有父节点的词汇,一般会加上ROOT。

在这个树中,每个词汇只会有一个箭头指向它,除了ROOT没有箭头指向它。而一个词汇可以指向很多不同的词汇,并且在这个树里面,每个词汇都有唯一一条路径,可以回溯到根节点。

那如何找出一个依存句法树呢

image-20210816221724672

其实方法很简单,回忆下我们之前学习的成分分析,输入一个span,判断是否为一个成分,如果是,则判断属于哪个标签。

而依存分析也是类似的,也是一个分类器,用于判断两个词汇之间有没有关系,如果有,是什么关系。

假设你真的训出来这样一个分类器,那要如何得到依存句法分析树呢

image-20210816222024522

要做的事情是,首先插入一个代表根节点的词汇“ROOT”,接下来把这些词汇两两丢到分类器里面去判断是否有关系。

比如输入“ROOT”和“want”,那么就要输出YES;

如果输入“to”和“a”,那么就要输出NO;

总共最多要跑 ( N + 1 ) 2 (N+1)^2 (N+1)2次,就可以计算出所有的可能。

那在文献里面真的是这么做的吗

image-20210816222340905

真的是这么做的。上面贴出了两篇文献的做法,我们看其中18年的做法,用了双向LSTM对词汇进行编码,然后进行线性变换,变成一个新的词汇编码,然后右边的词汇编码,再进行线性变换,得到一个编码向量,左边得到的向量进行点乘,得到一个数值,根据这个数值来决定是否有关系。

image-20210816222806542

但是和成分分析一样,也可能会碰到矛盾的关系。比如,可能分类器告诉你 w 1 w_1 w1可以指向 w 2 w_2 w2;然后又告诉你 w 3 w_3 w3也可以指向 w 2 w_2 w2,这不是违背了每个节点只有一个父节点的约束吗

image-20210816231954439

所以可以用类似Maximum Spanning Tree(最大生成树)的方法来解,根据我们的分类器,我们可以知道所有节点,两两指向的分数,

然后此时,有两种可能,一个是ROOT指向 w 2 w_2 w2,然后 w 2 w_2 w2指向 w 1 w_1 w1

另一种是ROOT指向 w 1 w_1 w1,然后 w 1 w_1 w1指向 w 2 w_2 w2

image-20210816232217637

然后选择边上分数最高的情况。

image-20210816232255280

如果句子很长,和成分分析一样,我们也可以用Transition-based的方法来做依存句法分析。

image-20210816232350090

在文献上也有很多这样的做法,上面列出了两篇文献。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/653927
推荐阅读
相关标签
  

闽ICP备14008679号