【实战技能】自然语言处理(NLP)的案例一:依赖解析

和大家聊聊我自己做的作业案例。作业来自Coursera上的Introduction to Natural Language Processing这门课,讲师是Dragomir R. Radev, Ph.D.,University of Michigan的教授。关于课程内容,虽然现在没有了,但是2016年的链接是https://www.coursera.org/learn/natural-language-processing/home/welcome
课程介绍

语法和解析 Dependency Parsing 依赖解析

依赖解析等效于在有向图中搜索最大生成树。英语依赖树大多是正交的,也就是可以绘制不交叉依赖,而其他语言的依赖树则不是正交的。依赖解析的算法可参考论文
A Dynamic Oracle for Arc-Eager Dependency Parsing

The Arc-Eager Parser解析器具有O(N)复杂性,其中N是句子中的单词数量。解析器是贪婪的,因为它做出了它可以想到的最好的决定,并从那里移动。这种解析器是高效的,因为它不会备份或者从决定回溯。

通常,我们必须训练SVM(或类似的分类器)来为解析器作出决定(shift,reduce,left-arc,right-arc)。如果模型太复杂,训练时间会很长。The Arc-Eager Parser解析器还增加了SVM的特征选择的复杂性。

为了实现依赖解析,我们选择来自于CoNLL-X shared task on Multilingual Dependency Parsing的数据,请参见CoNLL-X shared task on Multilingual Dependency Parsing
用Python语言来实现具体的算法。

从机器学习的角度来看,依赖解析是一种监督式学习问题。下图描述了Arc-Eager依赖解析的转换逻辑。
Arc-Eager依赖解析的转换逻辑

评估依赖解析器的性能

通过以下两个指标来评估依赖解析器的性能

1.依存标注准确率(Labeled Attachment Score, LAS)

2.依存准确率(Unlabeled Attachment Score, UAS)

具体定义如下

令整个测试语料包含的词数为𝑁,任意词语的依存用三元组进行表示,其中 word 为词本身, word 以关系 relation 依存于 headword。在被测试系统的输出中,令所有 headword 正确的词语的数目为Na,所有 relation 正确的词语的数目为Nl 所有 headword 和 relation 都正确的词为Nal,测试指标的计算方法如下:

LAS=Nal/N

UAS=Na/N两个指标的优先级分别为LAS>UAS。

一般地,我们希望LAS和UAS能到0.7

我们用SVM(Support Vector Machine支持向量机)来实现解析器的分类操作,如何提高解析器的性能呢,可以在特征提取器中试验不同的特征。采用

SVM特征优化器,使用单个方法为给定的主题/特征的任何组合生成测试。

主题是堆栈中的单词或缓冲区中的单词。例如:STK_0,STK_1(堆栈上的最后一项和倒数第二项)

测试中的数字提供了被使用的主题的位置。

第一部分提供数据源使用的算法(堆栈或缓冲区),最后一部分描述要使用的数据字段的算法。策略是为堆栈和缓冲区中的单词簇,特别是标签和单词生成类似的字段。有时在缓冲区中比在堆栈走得更深。因为解析器在堆栈和缓冲区前面进行“向前看”,以做出决定。 最重要的特征是stack_0和buffer_0的单词和标签。

当添加LDEP(the leftmost dependent最左依赖)和RDEP(the rightmost dependent最右依赖)时,实现了很大的改进。 对于某些语言,当缓冲区不太深时,性能更好,性能将搜索范围限制为BUF_2。FEATS(无序的一组附加句法特征,用|分隔)标签似乎降低了标签者的准确性,并且太多的SVM数据将降低效率。

增加这些特征的复杂度是O(V * N),其中V是要添加的特征的数量,N是句子的数量。

下一次和大家聊聊语言建模和部分语音标记 Language Modelling and Part of speech tagging以及字义消歧 Word Sense Disambiguation。

欢迎大家留言,和我一起交流自然语言处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值