CS224n笔记6 句法分析-码农场 - Hankcs

文章推薦指數: 80 %
投票人數:10人

估计是在某个图上逐步删除不符合要求的边,直到成为一棵树。

“Transition-based parsing” or “deterministic dependency parsing”. 主流方法,基于贪心 ... 目录语言学的两种观点 歧义 依附歧义 标注数据集的崛起:UniversalDependenciestreebanks 依存文法与依存结构 起源 一些细节 句法分析可用的特征 依存句法分析 Arc-standardtransition MaltParser 传统特征表示 效果评估 投射性 为什么需要神经网络句法分析器 神经网络依存句法分析器 为何需要非线性 未来工作 句法分析还算熟悉,就跟着复习了神经网络句法分析的动机与手法,了解一下比较前沿的动向。

语言学的两种观点 如何描述语法,有两种主流观点,其中一种是短语结构文法,英文术语是:Constituency=phrasestructuregrammar=context-freegrammars(CFGs)。

这种短语语法用固定数量的rule分解句子为短语和单词、分解短语为更短的短语或单词……一个取自WSJ语料库的短语结构树示例: 另一种是依存结构,用单词之间的依存关系来表达语法。

如果一个单词修饰另一个单词,则称该单词依赖于另一个单词。

一个由HanLP输出的依存句法树如下: 歧义 通过句法树可以表达歧义,一个确定的句法树对应句子的一个确定解读,比如对介词短语依附(attachmentofprepositionalphrases(PPs)): fromspace这个介词短语到底依附谁?不同的答案导致对句子不同的理解。

依附歧义 很难确定如何把一个短语(介词短语、状语短语、分词短语、不定式)依附到其他成分上去,比如下列句子: 每个括号中都是一个短语,它们依附的对象各不相同。

对于$n$个短语来讲,组成的树形结构有$C_n=\frac{(2n)!}{(n+1)!n!}$。

这是Catalan数,指数级增长,常用于树形结构的计数问题。

标注数据集的崛起:UniversalDependenciestreebanks 虽然上下文无关文法中的语法集很容易写,无非是有限数量的规则而已,但人工费时费力标注的树库却茁壮成长了起来。

在1993年首次面世的UniversalDependenciestreebanks如今在Google的赞助下发布了2.0,其授权大多是署名-相同方式共享,覆盖了全世界绝大多数语言(不包括简体中文)。

其官网是:http://universaldependencies.org/ GitHub主页是:https://github.com/UniversalDependencies 树库示例: 人们偏好树库多于规则的原因是显而易见的,树库虽然标注难度高,但每一份劳动都可被复用(可以用于词性标注命名实体识别等等任务);而每个人编写的规则都不同,并且死板又丑陋。

树库的多用性还是得其作为评测的标杆数据,得到了越来越多的引用。

依存文法与依存结构 这节课以及练习用的都是依存句法树,而不是短语结构树。

这并不是随机选择,而是由于前者的优势。

90年代的句法分析论文99%都是短语结构树,但后来人们发现依存句法树标注简单,parser准确率高,所以后来(特别是最近十年)基本上就是依存句法树的天下了(至少80%)。

不标注依存弧label的依存句法树就是短语结构树的一种: 一旦标上了,两者就彻底不同了: 这里箭头的尾部是head(被修饰的主题),箭头指向的是dependent(修饰语)。

起源 语法依存的概念可以追溯到公元前4世纪印度语言学家Panini对语义、句法和形态依存的分类研究,但一般认为现代依存语法理论的创立者是法国语言学家LucienTesnière(1893—1954)。

L.Tesnière的思想主要反映在他1959年出版的《结构句法基础》(Elémentsdesyntaxestructurale)一书中[Tesnière,1959]。

——《统计自然语言处理》 课件中还有更详细的历史,不太感兴趣,跳过;只记录一点,第一个computational句法分析器也是依存句法分析器。

一些细节 人们画依存句法树的弧的方式不同,这门课是head指向dependent(即箭头指向的词语是依赖者,箭头尾部的词语是被依赖者),我的偏好是反过来。

每个句子都有一个虚根,代表句子之外的开始,这样句子中的每个单词都有自己的依存对象了。

句法分析可用的特征 双词汇亲和(Bilexicalaffinities),比如discussion与issues。

词语间距,因为一般相邻的词语才具有依存关系 中间词语,如果中间词语是动词或标点,则两边的词语不太可能有依存 词语配价,一个词语最多有几个依赖者。

依存句法分析 有几个约束条件: ROOT只能被一个词依赖。

无环。

英语中大部分句子是projective的,少数是non-projective的: 有个学生问是否可以将一个依存句法树还原成句子,答案是否定的。

文献中的依存句法分析方法有: Dynamicprogramming 估计是找出以某head结尾的字串对应的最可能的句法树。

Graphalgorithms 最小生成树。

ConstraintSatisfaction 估计是在某个图上逐步删除不符合要求的边,直到成为一棵树。

“Transition-basedparsing”or“deterministicdependencyparsing” 主流方法,基于贪心决策动作拼装句法树。

Arc-standardtransition 动作体系的formal描述如下: 图解还是我自己整理的更清晰:http://www.hankcs.com/nlp/parsing/neural-network-based-dependency-parser.html/2#h2-6 课件上画得没有这么详细。

MaltParser 无搜索,贪婪地下转移决策,线性复杂度,只损失了一点效果。

加个beamsearch会上升一点。

传统特征表示 无非是栈和队列中单词、词性、依存标签的组合的特征函数,一个超长的稀疏01向量。

效果评估 评测指标是UAS(不考虑标签只考虑弧)或LAS(同时考虑标签和弧): 课件上有一页讲依存弧可以用来判断蛋白质的相互作用: 投射性 Manning也跳过了这一张PPT,大意就是CFG转换得到的依存树一定是投射性的,但依存理论允许非投射性的依存句法树(一些语义需要通过非投射性表达)。

arc-standard算法只能拼装投射性的句法树,但换个体系、加上后处理、采用graph-based方法就能得到非投射的句法树。

为什么需要神经网络句法分析器 传统特征表示稀疏、不完全、计算代价大(SVM之类的线性分类器本身是很快的,而传统parser的95%时间都花在拼装查询特征上了)。

神经网络依存句法分析器 从理论到代码的分析参考:http://www.hankcs.com/nlp/parsing/neural-network-based-dependency-parser.html ,在线演示:http://hanlp.hankcs.com/ 。

无非是传统方法拼接单词、词性、依存标签,新方法拼接它们的向量表示: 然后模型是一个司空见惯的三层神经网络: 事实上,在“深度学习”“神经网络”的喧嚣中冷静下来回顾一下,相较于传统的graph-based方法,花了这么多功夫得到的只是0.1%的LAS提升: 他们说速度上升很大啊,我的实际体验是取决于矩阵运算模块的加速比。

如果用一些类似于Eigen之类高度优化的C++并行矩阵运算库就很快,如果是手写的串行线性代数库就很慢。

为何需要非线性 以前的课上讲过,又讲了一遍,不啰嗦了。

有很多S形函数可选: tanh是sigmod的缩放偏移版: $$\tanh(z)=2logistic(2z)−1$$ 还有其他各种备选: 其中ReLU成为新贵,Manning说他简直不敢相信这种疯狂的函数竟然效果最好(也许神经网络本来就是疯狂的)。

ReLU在反向传播时要么不反馈残差,要么原样反馈残差。

未来工作 Chen&Manning的工作被许多人继续往前推进,走在最前沿的是Google。

趋势是: 更大更深调参调得更好(更昂贵)的神经网络 BeamSearch 在决策序列全局进行类似CRF推断的方法(CRF宝刀未老,老当益壮啊) Google的SyntaxNet中的ParseyMcParseFace的效果:  财大气粗就是好。

 知识共享署名-非商业性使用-相同方式共享:码农场»CS224n笔记6句法分析 继续浏览有关句法分析CS224n深度学习的文章 上一篇CS224n研究热点4词嵌入对传统方法的启发 CS224nAssignment1下一篇 评论6 取消 有人回复时邮件通知我 提交评论 昵称昵称(必填) 邮箱邮箱(必填) 网址网址 #5“如果一个单词修饰另一个单词,则称该单词依赖于另一个单词。

”怎么感觉这句话有问题啊,不是修饰词是被修饰词的依赖吗?那么不是被修饰词依赖于修饰词吗 yaqing3年前(2019-08-19)回复 #4太有用了.兄弟.简直救了我一命 凯爷3年前(2019-06-11)回复 #3后面的课程都没有字幕了吗? 守望者4年前(2018-01-30)回复 #2我也没看懂。





neiltang5年前(2018-01-05)回复 #1完全看不懂这节课了…. FatherSucker5年前(2017-11-16)回复 栏目分类栏目分类 选择分类目录 ACG  (7)    游戏  (5) Web开发  (79)    BAE  (13)    Linux相关  (9)    MacOS  (1)    WordPress  (8)    Yii  (17)    主机域名  (26)    数据库  (3) 信息安全  (3) 其他类别  (184)    心情  (1)    旧的博文  (170) 操作系统  (3)    Windows  (2) 数学基礎  (3) 日语教程  (121)    口译  (1)    新编日语商务贸易会话  (14)    新编日语阅读文选  (34)       第一册  (20)       第三册  (2)       第二册  (10)    日语入门  (2)    日语听力  (2)    日语综合教程  (64)       第七册  (14)       第三册  (7)       第五册  (12)       第六册  (18)       第四册  (12)    月の珊瑚  (3) 机器学习  (60) 经济人文  (19)    国际贸易理论与政策  (9)    当代世界经济与政治  (3) 编程开发  (557)    Android  (30)    C++  (237)    Drupal  (23)    Java  (69)    Javascript  (1)    PHP  (57)    Python  (8)    汇编逆向  (12)    算法  (236)    网络  (6) 自然语言处理  (106)    中文分词  (13)    句法分析  (8)    命名实体识别  (7)    语义分析  (2)    语料库  (7) 软件发布  (9) 文章归档 文章归档 选择月份 2022年1月 (1) 2021年12月 (1) 2021年11月 (4) 2021年7月 (1) 2020年1月 (1) 2019年11月 (2) 2019年10月 (2) 2019年1月 (1) 2018年12月 (1) 2018年2月 (2) 2017年12月 (2) 2017年11月 (2) 2017年8月 (1) 2017年7月 (14) 2017年6月 (28) 2017年5月 (8) 2017年3月 (12) 2017年2月 (13) 2017年1月 (22) 2016年12月 (2) 2016年11月 (15) 2016年10月 (3) 2016年9月 (3) 2016年8月 (7) 2016年7月 (1) 2016年6月 (1) 2016年5月 (3) 2016年4月 (2) 2016年3月 (3) 2016年2月 (3) 2015年12月 (3) 2015年11月 (6) 2015年10月 (4) 2015年9月 (4) 2015年8月 (2) 2015年7月 (6) 2015年5月 (3) 2015年4月 (5) 2015年3月 (3) 2015年2月 (22) 2015年1月 (14) 2014年12月 (10) 2014年11月 (21) 2014年10月 (14) 2014年9月 (16) 2014年8月 (11) 2014年7月 (6) 2014年6月 (13) 2014年5月 (28) 2014年4月 (41) 2014年3月 (26) 2014年2月 (52) 2014年1月 (28) 2013年12月 (29) 2013年11月 (21) 2013年10月 (11) 2013年9月 (19) 2013年8月 (21) 2013年7月 (36) 2013年6月 (24) 2013年5月 (36) 2013年4月 (29) 2013年3月 (46) 2013年2月 (5) 2012年5月 (2) 2012年4月 (6) 2010年12月 (5) 2010年11月 (10) 2010年10月 (13) 2010年9月 (6) 2010年8月 (5) 2010年7月 (3) 2010年6月 (12) 2010年5月 (14) 2010年4月 (8) 2010年3月 (16) 2010年1月 (16) 2009年12月 (33) 2009年11月 (26) 2009年9月 (2) 热门文章 基于神经网络的高性能依存句法分析器2015-11-12评论(26) 依存句法分析器的简单实现2014-11-21评论(21) 基于CRF序列标注的中文依存句法分析器的Java实现2014-12-12评论(8) 宾州树库和CTB的Python预处理脚本2017-11-04评论(8) 最大熵依存句法分析器的实现2014-11-26评论(7) CS224n笔记6句法分析2017-06-16评论(6) 最新文章 DeepBiaffineAttentionforNeuralDependencyParsing2017-11-25评论(2) 宾州树库和CTB的Python预处理脚本2017-11-04评论(8) CS224n笔记6句法分析2017-06-16评论(6) MichaelCollinsNLP公开课任务2PCFG2017-01-05评论(0) 基于神经网络的高性能依存句法分析器2015-11-12评论(26) 基于CRF序列标注的中文依存句法分析器的Java实现2014-12-12评论(8) 热门标签《挑战程序设计竞赛(第2版)》(184)《日语综合教程》(57)CS224n(36)《新编日语阅读文选》(34)《智能Web算法》(20)中文分词(19)NeuralNetworksforMachineLearning(19)WordPress(17)深度学习(16)Lucene(15)维特比算法(15)新编日语商务贸易会话(14)IntelliJIDEA(13)《统计学习方法》(12)UVa(11)Drupal7专业开发指南第三版(10)《挑战编程-程序设计竞赛训练手册》(10)HMM(10)matlab(9)TensorFlow(9)CS229(8)word2vec(8)Googlecodejam(7)《C++标准程序库—自修教程与参考手册》(7)CRF(7)Yii(6)CNN(6)WebRTC(5)Cocos2d-x(5)RNN(5) 我的作品 HanLP自然语言处理包《自然语言处理入门》



請為這篇文章評分?