DrQA实践

2017年七月份Facebook开源了其开放域问答系统DrQA的代码。关于DrQA,还有一篇2017年发表在ACL上的论文《Reading Wikipedia to Answer Open-Domain Questions》,在此首先介绍一下论文的原理。

    DrQA模型主要分为两部分,第一部分Retriever和第二部分Reader,Retriever根据问题检索出维基百科语料库中最相关的5篇候选文章,Reader则从候选的5篇文章中提取出问题的答案。系统的示意图如下:

      Retriever 直接利用简单的TF-IDF加权的词袋模型来检索出最合适的5篇文章,又使用考虑了局部词序的n元特征对系统进行了改进。

      Reader分为paragraph encoding,question encoding和prediction部分。paragraph encoding使用一个双向LSTM网络将各段落中的每一个token转化为一个向量,question encoding再使用另一个双向LSTM网络将每个问题转化为一个向量,得到各段落中各token和问题的向量表示即可以将它们作为分类器的输入来判断答案区间的起止位置,具体地,使用双线性项来捕获token pi和问题q之间的相似性,并计算每个token作为的开始或结束项的概率,如下所示:

    下面结束DrQA的安装过程:

    DrQA的安装要求linux/OSX系统以及Python 3.5以上的版本,首先需要安装pytorch,可以按照http://pytorch.org/给出的命令直接安装,再使用如下命令来安装DrQA:

git clone https://github.com/facebookresearch/DrQA.git
cd DrQA; pip install -r requirements.txt; python setup.py develop

    DrQA默认的tokenizer为CoreNlp,首先使用如下命令下载

   ./install_corenlp.sh

    再将下载的jar文件引入classpath环境变量或在调用的程序代码,比如pipeline中的interactive中加入如下代码:

import drqa.tokenizers
drqa.tokenizers.set_default('corenlp_classpath', '/your/corenlp/classpath/*')

     至此DrQA安装完毕。

     最后运行python scripts/pipeline/interactive.py来尝试DrQA的demo,截屏如下:

    可见DrQA系统对于事实型问题的回答还是具有比较高的质量的。问题是对于所提问的问题,如果其答案需要推理才能得出,DrQA便无法正确回答了,因此个人认为DrQA如果与具备推理能力的知识图谱结合,会具有更高的性能。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于Tensorflow的CycleGAN测试(非成对图像风格迁移:橙子--> 苹果)

    图像风格迁移有两种大的类型,一种是成对的,一种是非成对了。 成对的著名模型就是pix2pix,这种的例子,如从影像地图转换为矢量地图,从素描转换为纹理图等。这些...

    sparkexpert
  • Spark 2.0 DataFrame map操作中Unable to find encoder for type stored in a Dataset.问题的分析与解决

    随着新版本的spark已经逐渐稳定,最近拟将原有框架升级到spark 2.0。还是比较兴奋的,特别是SQL的速度真的快了许多。。 然而,在其中一个操作时却卡住了...

    sparkexpert
  • python包编译过程中出现: /usr/local/cuda-9.0/nvcc: No such file or directory问题的简单解决办法

    再仔细查看问题原因,发现在nvcc'后面多了个引号,非常奇怪的一个错误。为了避免对系统进行修改(主要也没有系统权限),简单一个重新export CUDA_HOM...

    sparkexpert
  • 犀牛Rhino6.1安装教程

    课代表
  • MySQL应用之CROSS JOIN用法简介教程

    MySQL cross join是mysql中的一种连接方式,区别于内连接和外连接,对于cross join连接来说,其实使用的就是笛卡尔连接。在MySQL中,...

    SmileNicky
  • (一)SpringBoot2.0基础篇- 介绍及HelloWorld初体验

      根据官方SpringBoot文档描述,BUILD ANYTHING WITH SPRING BOOT (用SPRING BOOT构建任何东西,很牛X呀!),...

  • 这款开源神器,让你能在 iPad 上随心所欲写代码!

    虽然也有一些优秀的写代码 App 可供程序员使用,但本着能不花钱就不花钱的原则,还是可以去找一些开源软件。

    龙哥
  • iPad Pro变生产力工具,你还缺这个轻量级浏览器端代码编辑器

    虽然也有一些优秀的写代码App可供程序员使用,但本着能不花钱就不花钱的原则,还是可以去找一些开源软件。

    量子位
  • Pandas | Dataframe的merge操作,像数据库一样尽情join

    常见的数据合并操作主要有两种,第一种是我们新生成了新的特征,想要把它和旧的特征合并在一起。第二种是我们新获取了一份数据集,想要扩充旧的数据集。这两种合并操作在我...

    TechFlow-承志
  • 企业用户移动信息化实践大揭露 | 研报×To B

    分析师:移动信息化研究中心 杨洋 关键词:移动信息化实践,企业用户 网址:www.tikehui.com 这里是移动信息化研究中心在 T 客汇上的研报专栏。每周...

    人称T客

扫码关注云+社区

领取腾讯云代金券