SIGIR 2019 开源论文 | 结合答案信息的重复问题检测方法

作者丨张琨 

学校丨中国科学技术大学博士生

研究方向丨自然语言处理

论文动机

社区问答一直是一个非常热门的地方,人们在这里提出问题,寻找答案,例如知乎,Quora 等。但是社区问答一直有一个很严重的问题,那就是有很多重复性的问题,这就给搜索引擎带来了很大的挑战,如果过滤这些重复问题,为用户提供更好的答案推荐是这类网站不断探索的。

当前很多的方法更多的是关注如何构建问题的语义表征,通过这些语义表征区分相似问题和不相似问题。但这存在一些问题,有些问题虽然问的问题看起来不一样,但是结合先验知识就会发现他们其实问的是一个问题,例如下图中的第一个例子。

这个时候答案就可以为我们提供这种先验知识,通过答案就能发现两个问题问的内容是相同的。而利用答案来增强对问题的理解是目前大多数工作没有考虑到的。那么是否可以直接将答案和问题放到一起,然后进行分类呢?答案是否定的,某些情况下,答案虽然是相同的,但是针对的问题却是完全不同的,例如下图中的第二个例子,这时答案的引入反而会影响到对问题的判断。

因此 如何才能准确的利用答案的信息去增强对文本的理解,同时不会引入更多的噪声呢? 这就是本文想要解决的问题。

模型结构

为了解决以上两个问题, 本文设计了一个自适应的多头注意力网络,在引入答案信息的同时不会引入过多的噪声 ,模型的整体结构如下:

Representation Layer

因为引入了答案信息,因此在该工作中,整个问题的输入变成了两个问题,以及对应的两个答案。首先通过预训练的词向量,字符级别的词向量,以及一些语法特征来表示每个词,然后使用 Bi-LSTM 处理每个输入,得到每个词的情境信息丰富的向量表示,$Q1, A1, Q2, A2$。

Adaptive Multi-Attention Layer

在该层,作者使用了三种不同的注意力计算方法来将答案信息自适应的融入到问题的语义表示中,并且过滤不相关的信息,这三种注意力计算方法如下:

1. Self-Attention: 这可以认为是一种常规操作,通过自注意力机制抽取句子的重要信息,并且解决了长依赖问题,最终得到一个句子级别的语义表示。以问题 1 为例,计算方法如下:

2. Cross Attention: 这个操作是为了获取问题之间的交互,在 sentence semantic matching 任务中,我们需要建模两个句子之间的语义关系,因此一般会用 co-attention 来计算细粒度的相似性,具体方法如下:

也是一个比较常规的操作,通过这样的方法,我们可以分别使用对方句子来表示己方句子,得到细粒度的语义表示内容,同样的方法也可以得到两个答案之间的语义交互

3. Adaptive Co-Attention: 之前的操作并没有将答案和问题结合起来,因此该操作主要做的就是利用答案信息来增强对问题语义的理解,同时过滤掉可能的噪声,相关的结构图如模型图右侧的图所示,首先针对第 i 个词,利用它做指导,挑选出对第 i 个问题词的表示最重要的信息:

接下来使用相同的方法得到问题的新的表示:

此时通过对答案和问题的交互,分别得到了针对问题中的第i个词的答案和问题的新的表示,那么接下来就是将这些信息融合到一起,这里作者使用了一种类似于 GRU 的门操作:

如前文提到的,答案信息可能会引入噪声,干扰模型对文本的理解,因此,作者在这里加入了一个过滤门,用于整合上一步得到的融合特征以及原始的问题文本特征,从而避免了噪声的干扰:

至此就得到了问题中第 i 个词的增强表示。相同的操作应用于问题 1 中的其他词和问题 2 中的所有词,就得到了利用答案信息进行增强的问题语义表示

Interaction and Prediction Layer

在上一层得到了问题的语义增强表示,而本文针对的还是判断两个问题是否相同的分类问题,因此这一层就更加关注于两个句子之间的交互,首先是对上一层得到的信息与原始的问题表示进行融合,常规操作,很好理解:

接下来作者使用了一个 Bi-LSTM 来处理这些序列表示,用于最后生成问题的句子级别语义表示:

接下来作者使用最大池化和均值池化来整合 Bi-LSTM 的隐层状态表示,并将所有的结果拼接起来,得到最后的分类表示向量,接下来就是一个 MLP+softmax 进行分类:

以上就是整个模型的技术细节。

实验

作者在两个数据集上进行了模型效果的展示,在这里我们展示其中的一个实验结果

从实验结果上看,作者提出的模型达到了最优的效果,同时作者还在子类的分类上进行效果的验证,作者提出的模型也基本上是全方位碾压了当前最好的一些模型。同时作者还给出了在最前边的例子上的实验效果。

模型不仅能够准确进行判断,同时还能自适应的调整是否要使用答案信息,这是一个非常有意思的现象。

总结

社区问答算是一个比较老的问题了,但作者另辟蹊径,通过答案来增强对问题的理解,而且并不是单纯的将答案信息融入到模型中,而是通过一个过滤门来考虑答案信息是否是有用的,模型对注意力机制的使用具有很高的借鉴意义。同时,作者的文章书写也非常具有参考价值,是一篇非常不错的文章。