【转载】指代消解笔记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/tcx1992/article/details/83377233

基础原理:

共指消解技术主要用于解决多个指称对应同一实体对象的问题。在一次会话中,多个指称可能指向的是同一实体对象。利用共指消解技术,可以将这些指称项关联(合并)到正确的实体对象,由于该问题在信息检索和自然语言处理等领域具有特殊的重要性,吸引了大量的研究努力。共指消解还有一些其他的名字,比如对象对齐、实体匹配和实体同义。

共指消解问题的早期研究成果主要来自自然语言处理领域,近年来统计机器学习领域的学者越来越多的参与到这项工作中。

基于自然语言处理的共指消解是以句法分析为基础的,代表方法是Hobbs算法和向心理论(centering theory)。Hobbs算法是最早的代词消解算法之一,主要思路是基于句法分析树进行搜索,因此适用于实体与代词出现在同一句子中的场景,有一定的局限性。

向心理论的基本思想是:将表达模式(utterance)视为语篇(discourse)的基本组成单元,通过识别表达式中的实体,可以获得当前和后续语篇中的关注中心(实体),根据语义的局部连贯性和显著性,就可以在语篇中跟踪受关注的实体。

随着统计机器学习方法被引入该领域,共指消解技术进入了快速发展阶段,McCarthy等人首次将C4.5决策树算法也被应用于解决共指消解问题。

除了将共指消解问题视为分类问题之外,还可以将其作为聚类问题来求解。聚类法的基本思想是以实体指称项为中心,通过实体聚类实现指称项与实体对象的匹配。其关键问题是如何定义实体间的相似性测度。Turney基于点互信息来求解实体所在文档的相似度,能够有效的实现共指消解。

基于统计机器学习的共指消解方法通常受限于2个问题:训练数据的(特征)稀疏性和难以在不同的概念上下文中建立实体关联。为解决该问题,Pantel等人基于Harris提出的分布相似性模型,提出了一个新的实体相似性测度模型,称为术语相似度(term similarity),借助该模型可以从全局语料中得到所有术语间的统计意义上的相似性,据此可以完成实体合并,达到共指消解的目的。

以上转自
作者:我偏笑_NSNirvana
链接: https://www.jianshu.com/p/4f09043e22ea
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

基于二元分类的方法

一般而言,共指消解系统的输入是预处理中获得的各种实体表述(Mention)。相关的预处理主要包括文本断句、词性标注、命名实体识别、嵌套名词短语识别等。针对中文等没有空格分隔的语言还需要在文本断句之后进行分词处理。这些前处理一般采用一些相关的模块来获得。共指消解的国际评测中,为了更加精准的评测共指消解算法的性能,组办方一般都会提供标注好 Mention 的语料。

共指消解需要考虑的特征主要分为以下几类:词汇、距离、一致性、语法、语义等。词汇特征主要考虑两个 Mention 的字符串的匹配程度,一般而言字符串相同程度越高的 Mention共指概率越大。距离特征主要考察两个 Mention 的句子距离,这个主要依据是共指事实上也是一种局部性的替代关系, 越是临近的 Mention 之间共指概率越大。 一般而言,两个 Mention 相隔超过三个句子,共指的可能性就会很小了。一致性特征详细可以分为性别、单复数、语义类别等是否一致。这组特征主要起到筛选的作用。语法关系用来判断两个 Mention 的语法角色之间的关系,由于对句子深层的语法分析还很难办到,这里主要采用的是一些基于特定模板的方法,例如判断两个 Mention 之间是否被逗号格开或者相邻等来决定是否具有同位关系。语义特征主要是考察两个 Mention 在语义类别不一致时是否满足上下位或者同义、近义关系。这种判断主要依赖于具体的语言学词典,例如英文上的 WordNet(Fellbaum, 1998)、中文上的 HowNet(董振东,董强, 2001)等。

端到端的神经共指消解

这里主要介绍一篇大牛论文的相关思路
参考文献

Lee K, He L, Lewis M, et al. End-to-end Neural Coreference Resolution[J]. 2017:188-197.

Task

将任务制定为对文档中每个可能的span的一组决策。输入是一篇包含了 T T 个单词的document D D ,同时利用了一些metadata,如speaker (说话者信息) 和genre (文档类型信息)。

D D 中可能的span的数量 N = T ( T + 1 ) 2 N=\frac{T(T+1)}{2} 。分别用START(i) 和END(i)来表示 D D 中span i i ( 1 i N 1\leqslant i \leqslant N )开始和结束时的索引。文中以START(i) 来对span进行排序编号,对于START(i) 相同的span,考虑END(i)。

该任务是为每一个span i i (词跨度,如:“我 爱 北京 天安门”中,“我 爱”、“我 爱 北京”、“北京”、“北京 天安门”等都是span) 指定一个先行语 (antecedent, 指向的语言单位) y j y_j y j y_j 可能的取值集合为 Y ( i ) = { ϵ , 1 , . . . , i 1 } \mathcal Y(i)=\{\epsilon,1,...,i-1\} ,一个虚拟先行语 ϵ \epsilon 和所有前文的span。span i i 真正的先行语为span j j ( 1 j i 1 1\leqslant j \leqslant i-1 ),即表示 i i j j 之间有共指链。虚拟先行语 ϵ \epsilon 代表两种可能的情形: (1) span不是实体mention; (2)span是实体mention但它与前文的任何span都不存在共指。这些决策隐式地定义了最终的聚类,其可以通过对一个先行语预测结果集合中的所有span进行分组来实现。

模型部分:

模型的目标是学习到一个最可能产生正确等价类的条件概率分布 P ( y 1 , . . . , y N D ) P(y_1,...,y_N|D)
f ( y 1 , , y N D ) = i = 1 N P ( y i D ) = i = 1 N e x p ( s ( i , y i ) ) y Y ( i ) e x p ( s ( i , y ) ) f(y_1,{\ldots},y_N|D)= \prod_{i=1}^N P(y_i|D) =\prod_{i=1}^N \frac{exp(s(i,y_i))}{\sum_{y' \in \mathcal Y(i)}exp(s(i,y'))}
其中, s ( i , j ) s(i,j) D D 中span i i 和span j j 之间共指链的pairwise score。这里的配对的共指得分(coreference score)由三个因素决定: (1) span i i 是否是一个mention,(2) span j j 是否是一个mention, (3) j j 是否为 i i 的一个先行语:
s ( i , j ) = { 0 j = ϵ s m ( i ) + s m ( j ) + s a ( i , j ) j ϵ s(i,j)=\begin{cases}0 & j=\epsilon\\s_m(i)+s_m(j)+s_a(i,j) & j\neq \epsilon\end{cases}
这里 s m ( i ) s_m(i) 为span i i 成为一个mention的得分, s a ( i , j ) s_a(i, j) 代表span j j 成为span i i 的一个先行语的pairwise score。
在这里插入图片描述
Step1:计算每个span的向量表示,并以此对各潜在mention(文本中代表同一实体的不同表述)打分。具体的做法是:将编码信息切分成一组sentence(句子)组,对每一个sentence独立地构建深度学习模型,将特征矩阵输入到深度学习模型(如长短时记忆网络LSTM、卷积神经网络CNN等)中,得到由sentence构成的篇章文本中每一个词的向量表示。对于每个span,将其中的每个词进行组合(如矩阵拼接)得到span的向量表示。然后对span的向量表示进行非线性映射,得到每个潜在mention的分数,并以该分数大小对mention进行修剪,得到一定数量的mention。
在这里插入图片描述
Step2:对每一对span的向量表示计算先行语得分。通过对两个span的mention score及它们的配对先行语得分求和,得到一对span最终的共指得分。
s m ( i ) = w m F F N N m ( g i ) s_m(i)=\pmb w_m \cdot {\rm FFNN}_m(\pmb g_i)
s a ( i , j ) = w a F F N N a ( [ g i , g j , g i g j , ϕ ( i , j ) ] ) s_a(i,j)=\pmb w_a \cdot {\rm FFNN}_a([\pmb g_i, \pmb g_j,g_i \circ g_j, \phi (i, j)])
其中 \cdot 表示内积(点积, dot product), \circ 表示对应元素相乘(element-wise multiplication),FFNN代表一个前馈神经网络,用来计算输入到输出向量的非线性映射。
先行语评分函数 s a ( i , j ) s_a(i,j) 包含了各span中明确的元素相似性 g i g j g_i \circ g_j ,及从metadata中speaker、genre信息和两个span之间距离信息编码的特征向量 ϕ ( i , j ) \phi (i, j)

训练过程:

由于先行语是隐(latent)变量,因此优化目标为由标准等价类(gold clustering)产生的所有正确先行语的边缘对数似然函数,即:
l o g i = 1 N y ^ Y ( i ) G O L D ( i ) P ( y ^ ) log\prod_{i=1}^N \sum_{\hat y \in \mathcal Y(i)\cap {\rm GOLD}(i) }P(\hat y)
其中, G O L D ( i ) {\rm GOLD}(i) 是包含span i i 在内的标准等价类中所有span的集合。如果span i i 不属于一个gold簇或者其所有的gold先行语都被裁剪掉了,则 G O L D ( i ) = { ϵ } {\rm GOLD}(i)=\{ \epsilon \}
以上目标函数可以通过SGD、Adam等优化算法进行优化。
代码地址
(其中,中文的词向量用了预训练好的word2vec)

猜你喜欢

转载自www.cnblogs.com/bincoding/p/11613604.html