Dependency Parser研究进展及主流方法

Featured image
引言:这两句话,放到现在的语义自动匹配模型里,几乎相同,但为什么到人类理解这里,这两句话就是完全不同的意思呢?Snipaste_2020-04-13_01-23-42

从语义角度来说,一句话的含义是有层次和主要元素的 主要元素用学术性的话语说就是语义框架,也就是我们所说的“主谓宾”。(虽然不是所有的句子都会有主谓宾覆盖,但我们这里,先拿一个主谓宾的句子举个例子。)

所以问题就来了,有没有一种结构化的表达方式,可以有效地解决语义表达这个问题? 这个问题其实有几大难点。首先,如果说存在这样一种结构,那么这个结构一定要具有普适性,其次,更难的问题是,如何让计算机实现把一个序列化的句子转化成这种结构。

接下来的部分,我们就来谈谈目前解决这两个问题的方法以及思考。自然语言理解主要有以下三种主流理论。

补充 :语义表达&知识表达(有点啰嗦的补充知识)

  1. Phrase structure(句法结构):
  1. Dependency structure(一层句法/依赖结构):

它通过用词与词之间的有效边来表示语法关系,因此在形式上会更简单、直观。

  1. Frame semantics(框架语义):

Snipaste_2020-04-13_01-43-22 它相比于之前的两个理论,更偏重于语义及知识表达,这套理论认为一个完整的表达是要结合背景知识的。 比如“吃”这个词,不能独立于知识来讨论这个词应该怎么用,而要把它放在完整的语义结构中。“转”这个词也是如此。

Dependency parser

Dependency parser的意义 其实要讨论dependency parser的意义,这可能是个比较难的话题,因为它是自然语言处理领域里面一项比较基础的研究,但它真正在实际应用中的效果,主要有以下几方面: Snipaste_2020-04-13_01-49-33

Tree-LSTM较Bi-LSTM并没有很明显的优势,所以“结构化是不是有必要”,仍然是一个争议点,在胡翔老师看来,他认为这个话题对dependency parser的研究相当于是对语言本质的一些揭露,它的研究成果对理解自然语言很有帮助,虽然它不一定在实际应用中起到效果。

Dependency Parsing

句子的依赖结构表现在哪些单词依赖哪些单词。单词之间的这种关系及可以表示为优先级之间的关系等。 通常情况下,对于一个输入句子: \(S=w0w1…wn\) 我们用 w0 来表示 ROOT,我们将这个句子转换成一个图 G。

依赖性解析通常分为训练与预测两步:

  1. 基于转换的依赖性解析

该方法就是通过训练数据训练一个状态机,通过状态机转换对源语句进行解析。

基于贪心确定性过渡的解析#

这个转换的系统本质也是一个状态机,但是不同的是,对于一个初始状态,会有多个终止状态。

对于每一个源语句 \(S=w0w1…wn\) 每个状态可以表示成三部分 \(c=(σ,β,A)\) 第一部分 σ用来存储来自 S 的 wi,使用栈存储 β表示一个来自 S 的缓冲 A 表示 (wi,r,wj)的集合,其中 wi,wj 来自 S,然后 r 表示 wi,wj之间的关系。