一、概要
该文章发于EMNLP 2014,作者提出了一个基于Freebase,根据问题中的主题词在知识库中确定候选答案,构建出一个模型来学习问题和候选答案的representation,然后通过这些representation来计算问题和候选答案的相关度来选出正确答案,在不适用词表、规则、句法和依存树解析等条件下,超越了当时最好的结果。
二、模型方法
2.1 数据简介
假设每给一个问题都含有相应的回答,并且在知识库中存在结构化的答案,本文使用了WebQuestions数据集以及Freebase知识库。除此之外,作者还剔除了Freebase中包含出现频率低于5次实体的三元组,得到一个知识库子集,其中包含了14M个三元组、2.2M个实体和7K关系,然后基于每一个三元组,(例如:subject,type1.type2.predicate, object),通过自动化的方式生成问题答案对:Quesiton:“What is the predicate of the type2subject?” Answer:object。例如:
2.2 Embedding Questions and Answers
本文的目的是通过模型学习问题中出现的单词和Freebase的实体和关系类型映射到低维的Embedding,使得问题和相应的答案在联合Embedding空间中彼此接近。
假设存在问题q以及候选答案a,假设模型学到了它们的representation后,那么我们可以通过函数 S(q,a)来计算它们的得分,如果它们是匹配的,那么分数则高,反之则低,计算方式如下:
2.3 Training and Loss Function
在训练模型时,假设讯在训练集D={ (qi,ai) ,…},本文定义margin-based ranking损失函数为:
其中头顶带帽的表示负样本,负样本怎么来的呢?本文使用的是构造负样本,一半是与问题实体相连的其它路径,另一半是随机选择的,我们的目标是最小化这个损失函数。
在上面的基础上,作者在之前提到的在WikiAnswers中提取了2.2M个问题进行分类后,进行一个多任务学习(multi-task),这个目标就是让同一个类的问题得分较高,即 s(q1,q2)=f(q1)⊤⋅f(q2) ,这里的训练方式和上面的方法是一样的。
三、实验结果
作者通过公式s(q,a)得分选择是个候选答案,然后在根据一跳还是二跳给与不同的权值,一跳为1.5,二跳为1,当然超过二跳的候选答案直接排除,最后再选出得分最高的作为最终的答案。
四、结论与思考
本文提出了embedding模型,利用训练数据中的问题答案对以及知识库进行向量建模,在几乎不需要任何手工定义的特征(hand- crafted features),也不需要借助词汇映射表,词性标注,依存树等条件下取得了当时很好的效果。
五、个人思考
①在本文的向量建模方法,在某种程度上是使用了词袋模型的思想,而词袋模型最大的弊端就是忽略的词汇的顺序性和权重,但是本文利用映射的方法解决了权重的问题,并取得效果。
参考文献
①Antoine Bordes,Sumit Chopra,Jason Weston。Question Answering with Subgraph Embeddings