0%

Question Answering over Freebase with Multi-Column Convolutional Neural Networks

论文概要

论文地址,发表于 2015 年。 大多数现有的系统通常依靠人工制作的特性和规则来进行问题理解以及答案排序。此外,一些方法(Bordes et al., 2014a; Bordeset al., 2014b)使用问题的词嵌入的总和来表示问题,但是这忽略了词序信息,无法处理复杂问题,例如 who killed A 和 who A killed 两个问题的表示是一样的。本文介绍了 multi-column convolutional neural networks (MCCNNs),从三个方面(回答路径(Answer Type),回答上下文(Answer Context),回答类型(Answer Path))理解问题。使用 Freebase 作为知识库,在 WebQuestions 数据集上进行了广泛的实验。最终表明,此方法拥有更好的性能。 神经网络训练步骤: 1. MCCNNs 从输入的问题中使用不同 column networks 去提取回答路径,回答上下文,回答类型。跟 Bordes 的论文一样,该论文知识库(本文就是 FreeBase)中的实体和关系也由向量表示。 2. 然后评分层(score layer)根据问题和候选答案的表示进行排序(点积)。

处理步骤

给定一个自然语言问题 \(q = w_1 \dots w_n\),从 FreeBase 中检索相应的实体和属性,然后将它们作为候选答案 \(C_q\)。比如,问题 when did Avatar release in UK (阿凡达在英国的发行时间)的答案是 2009-12-17。需要注意的是对于该问题也许有一系列的正确答案。以下数据将被使用到:WebQuestionsFreeBaseWikiAnswers。 MCCNN 概览如图 1 所示: MCCNN概览

比如说,对于问题 whendid Avatar release in UK,从 FreeBase 中查询 Avatar(可以称为 main entity 或者 topic entity) 的相连结点(related nodes),这些相连结点被认为是候选答案(\(C_q\))。然后对于每个候选答案 a,模型将会预测一个分数 S(q,a) 以判断 a 是否为正确答案。 对于问题的三个侧面的向量表示分别以 \(f_1(q)\) \(f_2(q)\) \(f_3(q)\) 表示,同理答案的三个侧面分别以 \(g_1(a)\) \(g_2(a)\) \(g_3(a)\) 表示。\(f_i(q)\)\(g_i(a)\)拥有相同的维度。使用这些问答的表示,我们可以计算问答对 (q,a) 的分数。具体来说,评分函数 S(q,a) 定义为(如图 1 所示,评分层计算分数并将其加起来): \[ S(q,a) = \underbrace{f_1(q)^Tg_1(a)}_{\text{answer path}} + \underbrace{f_2(q)^Tg_2(a)}_{\text{answer context}} + \underbrace{f_3(q)^Tg_3(a)}_{\text{answer type}} \]

候选者生成

训练神经网络的第一步是从 FreeBase 中为问题检索候选答案。用户提出的问题应该包含一个可识别的实体,该实体与知识库相连。我们使用 Freebase Search APIBollacker et al., 2008)) 查询问题中的命名体。如果没有任何命名体,则查询名词短语,我们使用调用 API 返回的列表中的第一个实体。这个实体解决办法也被 Yao and Van Durme, 2014) 使用,还可以研发更好的办法,但不是本论文的关注点。最后关联实体的所有 2-hops(应该是周围的意思,我没有查到是什么意思,但是在博客笔记中有所总结) 结点被认为是候选答案。并把问题 q 的候选答案集合称为 \(C_q\)

MCCNNs for Question Understanding

MCCNNs 使用多列(指的是图 1 中左侧那三片)卷积网络从字嵌入中学习不同方面。使用 Collobert R 等 2011 的方法解决语言长度不一的问题。具体的做法可参考原论文 4.2 MCCNNs for Question Understanding

总结

未来的探索方向: 1. 整合更多的外部知识源,如clueweb; 2. 以多任务学习方式训练MCCNN; 3. 由于我们的模型能够检测到问题中最重要的单词,因此使用结果挖掘有效的问题模式将是非常有趣的。