图文并茂带你了解依存句法分析_java

前言:上一期我们讲了成分句法分析,它相当于考虑广义上的嵌套关系的命名实体识别。这一次我们来说一说依存句法分析,它相当于文本结构化任务中,与命名实体识别经常在一起的实体关系抽取任务。
图文并茂带你了解依存句法分析_java_02成分句法分析关心的是,某两个相邻词汇能不能接在一起构成成分(广义的mention)。而依存句法分析关系的是,两个词汇之间的关系(entity relation)。依存解析不关心两个词汇是否一定要相邻。比如 book 和 flight 没有直接相连,但是 flight 是 book 的宾语,book 是 flight 的主语。我们会用一个从 book 指向 flight 的箭头来表示这种依存关系。箭头的起始我们叫作 head。
图文并茂带你了解依存句法分析_java_03词汇和词汇之间的关系一览。图文并茂带你了解依存句法分析_java_04更具体地说,依存解析做的是把一个句子,变成一个有向图。图中每一个节点是一个词汇,每一条边,是一种关系。除了根节点,每一个节点词汇都只有一个入度的边。但每个词汇都可以指向多个其它词汇。它是一个树状的结构。每一个词汇都有唯一的一条路径回溯到根节点。
图文并茂带你了解依存句法分析_java_05我们要怎样得到这样一棵依存解析树呢?实际上丢给分类器两个词汇和其上下文,它会先通过一个二分类器,用来输出左边到右边的token之间有无依存关系,若有依存关系,则第二个分类器会输出其关系的类别。
图文并茂带你了解依存句法分析_java_06模型的输入是ROOT 加上 N 个词汇组成的句子。然后取出 (N+1)² 的单词对,一个个丢给分类器做关系分类。
图文并茂带你了解依存句法分析_java_07文献上的具体做法是这样的。它会先把序列丢给一个 BiLSTM,把每个 token 的嵌入抽出来,再两两丢给一个FC层做分类,判断这两个 token,要不要连在一起,如果要连在一起,它们的关系是什么?论文会把抽出token的嵌入乘上一个FC做线性映射,再把两个 token 做类似注意力的操作,会得到一个数值,这个数值表示这两个 token 有多大概率要连在一起。其关系的标签也是类似的做法。
图文并茂带你了解依存句法分析_java_08但如果我们把判断有无关系和判断关系是什么分开来处理,会容易出现矛盾的情况。比如 w1和w2之间有w1->w2的依存关系,而w2和w3又有w3->w2的依存关系。这样就会出现一个 token 入度是2的不可能情况。
图文并茂带你了解依存句法分析_java_09我们可以用类似最大生成树的算法来解。我们目标是从各种可能的候选树中,找出一棵路径置信度最大的树。
图文并茂带你了解依存句法分析_java_10类似的,我们也可以用基于转移的方式来做依存解析。这部分可以参照上一期的 成分句法分析。模型要根据 Buffer 和 Stack 的内容,来决定要采取哪一个 action。
图文并茂带你了解依存句法分析_java_11这种基于转移的方法,最早在14年的时候就有人做过。这种基于转移的方法,最知名的是 SyntaxNet。它知名的原因在,它有一个好的动画展示转移生成的过程。16年的时候,刚刚有 Alpha Go。所有人一听到有一点和 AI 有关的论文就风吹草动,觉得它很厉害。
图文并茂带你了解依存句法分析_java_12往后基于转移的也有Stack-Pointer Networks。首先,它的输入是字嵌入,用 CNN + pooling 处理后,与词的嵌入拼接起来喂给 BiLSTM。一开始 "$" 作为根节点,放入栈中。栈中只有一个元素,位于栈顶,模型要判断 "$" 指向句子中的哪个词,即 head。"$" 没有兄弟节点和父节点,其嵌入会用单方向的 LSTM得到隐层,再用 pointer network 计算该隐层与其余单词的得分。图文并茂带你了解依存句法分析_java_13
视频见(需要***):https://www.youtube.com/watch?v=9erBrs-VIqc&feature=youtu.be
图片来自《李宏毅人类语言处理2020课程》
Reference• Danqi Chen, Christopher D. Manning, A Fast and Accurate Dependency Parserusing Neural Networks, EMNLP, 2014• Chris Dyer, Miguel Ballesteros, Wang Ling, Austin Matthews, Noah A. Smith, Transition-Based Dependency Parsing with Stack Long Short-Term Memory, ACL, 2015• Daniel Andor, Chris Alberti, David Weiss, Aliaksei Severyn, Alessandro Presta, Kuzman Ganchev, Slav Petrov and Michael Collins, Globally Normalized Transition-Based Neural Networks, ACL, 2016• Timothy Dozat, Christopher D. Manning, Deep Biaffine Attention for Neural Dependency Parsing, ICLR, 2017• Timothy Dozat, Christopher D. Manning, Simpler but More Accurate Semantic Dependency Parsing, ACL, 2018• Xuezhe Ma, Zecong Hu, Jingzhou Liu, Nanyun Peng, Graham Neubig, Eduard Hovy, Stack-Pointer Networks for Dependency Parsing, ACL, 2018

记得备注呦


图文并茂带你了解依存句法分析_java_14