共指消解


共指消解
1.什么是共指消解?
2.两步解决共指解析的方式
3.转化后的二分类配对模型
4.关联词排名
一个非神经指代模型,通过文本特征来进行指代解析
端到端模型

1.什么是共指消解?

多个实体其实是指向一个相同的实体,这也被叫做共指解析。
现在绝大多数的自然语言处理系统在设计到共指解析的内容的时候都会选择丢失。
绝大多数要做全文理解的文本任务都要解决共指解析的问题,否则文本获取到的信息是存在缺失的,在机器翻译当中共指解析是一项相当有效的技术因为pronounce代词是普遍存在的,只有理解这种指代关系才能够正确理解翻译的内容,这些指代关系其实是隐藏了明确的实体

2.两步解决共指解析的方式
  • 检测指代实体
  • 聚合指代实体,也就是消歧,这个任务是比较艰难的
  • 其实共指解析任务就是上面讲的将指向相同实体的代词聚集作为一个集合,或者处理为一个类别

指代检测主要是三类:代词,命名实体,名词短语
指代检测不仅仅是对对这些词的检索,检测的应该是有具体指向实体,而不是对应量词,不表意的代词,指代的注意也应该是文本中的某一实体内容。其余的信息文本成分,可以训练一个分类器来过滤这些无用的候选词,但是大多数时候可以将这个指代词保留做候选,因为如果是没有实体指向的指代词后面做聚集的时候也不会有共同实体来指代。
类似的语言学上的相关概念叫做照应,当一个术语涉及到另一个术语的时候这就叫做照应。
术语可能没有明确的实体指代所以说就是通过照应的方式可以使得一个指代有明确的解释,当一个词缺少明确表意的时候如果能从关联关系中获得语义链接,但是可能指向的并不是实体。
演唱会 和门票明显不是指向同一实体对象的存在。
对于死语言或者罕见词来说,nlp对于指代 解析的处理仍然是 一个经典的挑战啊。

  • 一般来说如下四种方式构建共指模型
  • 基于规则
  • 基于相关对的(mention pair)
  • 基于相关排名
  • 基于聚集或者说是聚类算法的,这个往往是最恰当的做法。

传统的代词回指消解算法:霍普斯朴素算法

  • 本算法是利用语法规则和树图来构建回指解析器
  • 从句子里面分出名词短语NP和带动词的名词短语VP
  • 名词短语可以划分为代词(不是指代词,而是类似于the that) 名词 介词短语 以及连词
  • 简单思想就是根据词性和人类手写文本的规律来从右向左来解决回指解析的问题。

但是存在一个问题,这种语言规则是基于观察得出的,但是定然是不全面的,后来人认为没有一种普遍适用的回指解析模式,依靠模式识别的方式是难以解决回指解析的,必须通过多种局部性原理来根据文本分布形式,也就是通过多个模块来提供回指解析的先决条件判断。
后续研究工作有Mars系统,使用pos系统来抽取名词短语,使用词间信息依赖来过滤词性不匹配的名词,词格的单复数形式来。然后对剩下来的词根据上下文的语法条件进行score调整,最后进行输出得分最高的。

3.转化后的二分类配对模型

使用二分类配对模型能够在一定程度上对后缀归属的前缀指代词进行回指解析。配对之间通过闭包进行关系传递,这个机制可能会导致错误传播,同时对于出现的单独例子,配对失败的例子要归类于单例,而不是进行聚集。
缺点是:对于长序列文档来说配对是特别多的,很多关联词仅仅只有一个前向指代,但是我们的模型得对每一个关联词做判断

4.关联词排名
  • 根据模型来指定最高分数的候选指代词
  • 设置一个NA关联词允许模型在任何关联词和它之间建立关系

一个非神经指代模型,通过文本特征来进行指代解析

大部分基于文本特征的模型都是采用霍普斯算法作为文本内部特征,因为距离更近的实体对象更可能存在指代关系,从语法上说,主语位置的实体更可能作为指代先行词,另一点在存在排比句的情况下,对应位置实体更可能作为先行词。

端到端模型

首先对词和字符级进行向量化,加入一个双向的lstm,然后对三元跨度进行多头注意力表示,同时会关注当前词的上下文表示。
共指消解 - 图1

对word i,j 的指代程度的,对其取负就最常见的loss 损失。
基于聚类的解析模型,是从下向上的对关联词进行cluster,但是只是使用词性或者词相似性来判断指代关系,是很难处理一些上下文相关的指代情况。
cluster模型是对关联词对的表示进行挑选作为指代词聚集对表示,这中间的映射关系就是评估在上下文中关联对是否是达成聚类的条件。
很多不同的自动评估指标可以用来评估共指解析工作的MUC,CEAF,LEA,B-CUBED,BLANC
B-cubed,计算准确率和召回率,