基于Facebook问答框架DrQA的智能问答系统

1 介绍
由Facebook提出的DrQA系统是一个可以用来回答广域问题的机器阅读理解系统,只需要借助原始的无结构文本集wikipedia,DrQA可以针对任意问题取去wikipedia自动检索相关文章并且做出相应的回答。DrQA包含两个部分,分别是Document Retriever和Document Reader,前者是负责从海量wikipedia文章中检索与对应问题最相关的若干篇文章,后者则负责从这些文章中寻找问题的答案。系统整体流程如下:
图片1
DrQA由两部分组成,分别为Retriever索引结构和Reader语义理解结构

2 Retriever
2.1 基本原理
采取了经典的信息检索(Information Retrieval)的思路来缩小在海量wikipedia文档中的检索范围,通过分别计算问题和文章的bigram的TF-IDF向量,然后结合两个TF-IDF即可得到与问题最相关的五篇文章。这种基于统计的做法的优点是可以保证检索速度很快,而且它的表现比wikipedia自身的搜索引擎效果要好,完全可以作为一个单独的文档搜索引擎来使用。
2.2 处理过程
(1)对语料单词进行清洗(去停用词等)过滤操作,统计所有的bigram,并进一步对bigram进行清洗过滤,得到最终的bigram。
(2)将得到的bigram进行murmur3 hashing得到每个bigram的唯一id。(当哈希的特征数目设置过小,那么这过程可能会有两个不同的bigram得到相同的id,推荐设置特征数目为2^24来避免)
(3)使用TF-IDF计算每个bigram的TF-IDF向量。
(4)将问题的TF-IDF向量与文章的TF-IDF向量相乘,取最大的前n个文档的索引,得到相关程度最高的n篇文档。
具体过程如下:
图片1

4 Reader
4.1 基本原理
针对Document Retriever部分检索得到的文档,使用BLSTM神经网络将文档和问题进行编译(encode),得到文档和问题的特征向量,再通过BP神经网络输出答案在文档中的起始位置和结束位置,从而在无结构文档中得到答案。
4.2 处理过程
(1)对于文档和问题进行预处理(分词,分句,词性标注,词根,命名实体识别)。
(2)问题的特征向量使用问题组成词语的词向量。文档的特征向量包括三部分:(1)词向量(word embedding),推荐使用预训练词向量(可以对出现频率较高的一些词语进一步调参优化,对于QA系统,比较重要的有who、when、how、what、where等);(2)Exact match二值化特征,分别是该单词是否对应于问题中的某一个单词、是否是小写的原始形式、是否是词根形式;(3)词语属性特征(token features),包括词性(POS)、命名体(NER)、归一化后的词频(TF)。(4)Aligned question embedding。这个特征是用来描述paragraph中每个单词与question中每个单词对齐的embedding,用a_ij来描述paragraph中的单词p_i与question中的单词q_j的相似度,其计算方式是:先将每个embedding经过一层ReLU激活函数的全连接网络,然后各自相乘并且归一化。这个特征其实跟Exact match中的第一个二值化特征很像,那里是判断是否完全一样,而这里是用相似度来度量,那么即使两个单词不一样,但意思相近的话,相似度也会很高,所以这里相当于软注意力机制,而Exact Match那里是硬注意力机制。
(3)将文档特征作为多层BLSTM的输入,得到文档向量。对于问题,将问题的词向量矩阵作为RNN的输入,然后将RNN的所有隐含层进行加权拼接,通过将问题的词向量矩阵乘以一个可以学习的权重向量并经过softmax函数即可得到该单词的权重因子。
具体过程如下:
图片2

5 应用
DrQA智能问答系统可用于云平台智能问答系统,通过对访客所提出的问题,从云平台文档库中索引相关文章,并且通过Reader模块的语言理解,从文章中摘取问题的答案进行反馈。