一、Transition-based的依存解析方法
解析过程:首先设计一系列action, 其就是有方向带类型的边,接着从左向右依次解析句子中的每一个词,解析词的同时通过选择某一个action开始增量构建依存树, 直到句子中的词解析完.
优点:解析过程是线性的, operations步骤随句子长度线性增长
挑战:在解析的每一步都只是利用局部信息,会导致错误传播,性能比graph-based效果略差
它的主要思路是先把一个句子变成句法树,再变成dependency parser,这个方法有点舍近求远,但它的效果不错。它同样会定义一些操作,即在一个序列上不断做这些操作,直到结束,就能形成一棵树。主要有以下三种操作:
![](https://i-blog.csdnimg.cn/blog_migrate/eb706408bb4c72ca98bd433399d83b1b.jpeg)
这个模型就是在序列中,插左括号或右括号的非典型性序列打标问题,deep learning在里面起的作用是,每一个左括号和右括号封闭的token,把它们表达成一个更高级的含义。
![](https://i-blog.csdnimg.cn/blog_migrate/e93ef9523c618b645c6373be335d7b44.jpeg)
二、Graph-based的依存解析方法
解析过程:学习一个打分函数,针对一句话在所有可能的解析结果(解析的依存树)中执行全局的穷举搜索,得到一个打分最高的解析树.
优点:目前效果相比transition-based较好
挑战:搜索的过程速度很慢
这个模型是把之前构建数的问题变成距离计算的问题。它本质做的事情是建立一个矩阵,行和列都是这个句子里的token,每两个行列中的一个点表示a修饰b的概率或b修饰a的概率的一个得分,最后要形成树,我们就是在这个距离向量中找一棵最小生成树,生成出来的就是dependency parser。
![](https://i-blog.csdnimg.cn/blog_migrate/1b1d756ee5ce285d03f0451a89992bfb.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/321101657d5abf6529524220d9d5304e.jpeg)