简介
DrQA是斯坦福大学和Facebook人工智能研究所今年4月份在arXiv发布的一个基于Wikipedia的Open-domain的QA系统,并与7月份在github上开源,以及在ACL上发表了一篇相关的文章。该系统只使用Wikipedia单一的数据源,目标是在大规模非结构化数据中根据输入的问题搜索出答案,特别针对MRS(大规模机器阅读)的任务。
-
DrQA系统结构
DrQA for MRS
DrQA的核心组件包括两个部分:文档检索器和文档阅读器,
文档检索器
文档检索不涉及到任何机器学习的东西,目的是为了在海量的文章里面迅速找到最相关的几篇文章,DrQA 并未绑定任何特定类型的检索系统——只要其能有效地缩小搜索空间并重点关注相关文档即可。
主要基于一个基于稀疏的、TF-IDF 加权的词袋向量的有效文档检索系统。这里使用了 bags of hashed n-grams(这里是 unigrams 和 bigrams)。
- 创建一个sqlite的数据库用于存储Wikipedia的文章
python build_db.py /path/to/data /path/to/saved/db.db
- Building the TF-IDF N-grams
python build_tfidf.py /path/to/doc/db /path/to/output/dir
- Interactive
python scripts/retriever/interactive.py --model /path/to/model
>>> process('question answering', k=5)
+------+-------------------------------+-----------+
| Rank | Doc Id | Doc Score |
+------+-------------------------------+-----------+
| 1 | Question answering | 327.89 |
| 2 | Watson (computer) | 217.26 |
| 3 | Eric Nyberg | 214.36 |
| 4 | Social information seeking | 212.63 |
| 5 | Language Computer Corporation | 184.64 |
+------+-------------------------------+-----------+
文档阅读器
DrQA 的文档阅读器是一个多层循环神经网络机器理解模型,被训练用来执行提取式的问答。也就是说,该模型会使用一个返回的文档中的一段文本来作为问题的答案。
该文档阅读器的灵感来自于 SQuAD 数据集,并且也主要是在这个数据集上训练的。它也可以在类似于 SQuAD 的任务上单独使用,其中可以通过问题、包含在上下文中的答案来提供一个特定的语境。