基于DrQA的中文问答系统构建(一):DrQA安装

2017年,斯坦福大学和 Facebook人工智能研究所在 arXiv 发布了一个基于维基百科的开放域问题问答系统 DrQA。DrQA 是一个开放域的问答系统。向 DrQA 系统输入一段文本,然后提一个答案能在该文本中找到的问题,那么 DrQA 就能给出这个问题的答案。

DrQA模型主要分为两部分,第一部分Retriever和第二部分Reader,Retriever的作用是从众多文章中选择出可能包含答案的候选文章,而Reader则从候选文章中提取出问题的答案。我们的目标是借助DrQA模型的Reader部分,结合哈工大自然语言处理包LTP,实现中文问答系统。DrQA具体的原理可以见论文,本人在之后的博客也会简单介绍一下。

论文地址:https://arxiv.org/abs/1704.00051

开源地址:https://github.com/facebookresearch/DrQA

DrQA的安装比较费时,本人部署期间也遇到很多坑;接下来简单介绍一下安装的步骤(写的时间很多,可能描述不太清晰且有纰漏),如果有遇到问题的或者需要安装包的,非常欢迎留言讨论。



1.安装Python3.5(pyenv可选):DrQA需要Python3.5以上,Python3.5的安装就不再叙述,由于本人的环境原来就有Python2.6,为了不影响原来的环境,所以采用了pyenv进行版本管理,不过后来我发现了Anaconda非常非常好用,所以改用Anaconda,不过pyenv的安装使用也简单介绍下。

  pyenv是一款特别好用的Python版本管理器,程序员可以建立不同的目录,在不同的目录里分别运行不同版本的Python, 使其和安装的包都互不影响。

  github项目地址:https://github.com/yyuu/pyenv

  pyenv-virtualenv,是pyenv的一个plugin(插件),可以用来创建基于不同Python版本的干净的虚拟环境。

  github项目地址:https://github.com/yyuu/pyenv-virtualenv

  (1)安装依赖包

   yum -y install git gcc make patch zlib-devel gdbm-devel openssl-devel sqlite-devel bzip2-devel readline-devel mysql-devel gcc-devel python-devel

  (2)安装pyenv(pyenv-virtualenv插件会自动安装

  curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

  (3)设置环境变量

  在~/.bash_profile环境变量配置加入下面三行

  export PATH="~/.pyenv/bin:$PATH"

  eval "$(pyenv init -)"

  eval "$(pyenv virtualenv-init -)"

  运行 exec "$SHELL"使配置生效,不行可尝试重启终端。

  (4)安装Python3.5

   pyenv install 3.5.0 开始自动安装Python。

  安装以后使用pyenv versions 可查看安装的各个版本Python,采用pyenv local <version>切换Python版本。还可以采用pyenv-virtualenv,用 -pyenv virtualenv 版本号 虚拟环境名 命令创建纯净的不同版本的Python虚拟环境。



2.安装Anaconda(可选):

  Anaconda:

  Anaconda是一个用于科学计算的Python发行版,支持Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。 个人感觉Anaconda非常好用,可以免去众多依赖包问题,强烈推荐使用。

https://repo.continuum.io/archive/index.html上下载对应版本的Anaconda,

采用bash Anaconda3-5.2.0-Linux-x86_64.sh 进行安装

加入path echo ‘export PATH="~/anaconda2/bin:$PATH"‘ >> ~/.bashrc 

  使其生效 source ~/.bashrc(有时候重启终端也要执行,不然会import出错)



3.安装PyTorch

  PyTorch一个基于Python的科学计算包,是DrQA的必备计算包。注意,DrQA官网上如此描述:DrQA requires Linux/OSX and Python 3.5 or higher. It also requires installing PyTorch (version 0.4.0 is not supported yet).,所以建议安装0.4以下的PyTorch,可以访问https://pytorch.org/ 根据自身相应的配置生成安装命令。

  原先安装PyTorch遇到了很多坑,花了不少功夫才装好。但是在装了Anaconda后,仅需 conda install pytorch=0.3.0 -c soumith 即可自动安装PyTorch及依赖包。



4.安装DrQA

  这部分在DrQA的github上有很详细的介绍。

  (1)安装DrQA及依赖包

  git clone https://github.com/facebookresearch/DrQA.git 

  cd DrQA

  pip install -r requirements.txt 

  python setup.py develop

   就会开始安装需要的各种包。

(2)安装tokenizer

  tokenizer可以有两种选择,一种是斯坦福的CoreNLP,另外一种是Spacy。官网描述如下:

  If you use the CoreNLPTokenizer or SpacyTokenizer you also need to download the Stanford CoreNLP jars and spaCy enmodel, respectively. If you use Stanford CoreNLP, have the jars in your java CLASSPATH environment variable, or set the path programmatically with:

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

  DrQA默认的tokenizer为CoreNlp,可以使用如下命令下载

   ./install_corenlp.sh  安装好后可以选择自动添加到环境变量,但是我用DrQA自动的方式添加到环境变量是不正确的,建议还是按照官网的方法手动添加。  如有需要用spacy的可以采用python -m spacy download en。(3)下载数据集,词向量等
  bash ./download.sh 下载量比较大,我自己是下载好保存了一份,包括处理的简化了的数据集(用于代码调试),有需要的朋友可以留言。至于下载的都是些什么东西,将在下一篇博客介绍。至此DrQA安装完成,可以按照官网的demo试跑一下。

Train

# prepare the data
python prepro.py
# train for 40 epochs with batchsize 32
python train.py -e 40 -bs 32

Predict

python interact.py

训练过程是非常漫长的,请耐心等待。



其他:idea或pycharm安装

DrQA的数据预处理和训练起来特别特别慢,实际训练我是在服务器上进行的,然而服务器上代码的修改不方便,因此我在自己的虚拟机上采用小规模的数据集进行代码调试,毕竟可视化界面方便的多,在代码调试好后才把工程迁移到服务器上跑。



最后,以上所有的安装包本人都有收集,如遇到下载太慢可留言索要。下一篇,将简单介绍下DrQA这个系统,如有时间会简述下DrQA原理。

  

原文地址:https://www.cnblogs.com/bayolante/p/9506154.html

时间: 2024-08-08 18:14:37

基于DrQA的中文问答系统构建(一):DrQA安装的相关文章

文本自动摘要:基于TextRank的中文新闻摘要

TextRank算法源自于PageRank算法.PageRank算法最初是作为互联网网页排序的方法,经过轻微地改动,可以被应用于文本摘要领域. 本文分为两部分,第一部分介绍TextRank做文本自动摘要的原理,第二部分介绍用TextRank做中文新闻摘要的案例. 一.基于TextRank的自动摘要原理 1.PageRank算法 首先看PageRank的相关概念.PageRank对于每个网页页面都给出一个正实数,表示网页的重要程度,PageRank值越高,表示网页越重要,在互联网搜索的排序中越可能

Linux基于OpenSSL实现私有CA构建

前言 随着互联网的迅猛发展,网络通信已经成为传递信息的主要途径.而通信时的数据传输大部分却是明文传输的,在网络这个不安全的环境下,如果没有一套数据加密机制,就会导致敏感信息和重要数据泄露,引起不可估量的损失.而OpenSSL正好弥补了这一缺憾,那什么是OpenSSL呢?OpenSSL是一套强大的具有加密功能的组件,它包含libcrypto(公共加密库).libssl(SSL协议的实现)和openssl(多功能命令工具),因其开源思想,现已广泛应用于数据通信加密领域.OpenSSL还可在局域网内构

在同一主机上基于编译实现lamp并构建虚拟机使用pma和discuz

在同一主机上基于编译实现lamp并构建虚拟机使用pma和discuz 目的: ①通过手动编译方式,在linux系统上安装apache http2.4,mariadb,php构建lamp;其中php与http的结合方式需要构建两种:1.php以http模块方式安装:2.php以独立守护进程方式安装 : ②在上面构建的lamp基础上设置两个虚拟机,分别使用安装phpMyAdmin和discuz 第一部分:模块话php安装lamp 一.准备工作 (一).查询有没有安装过amp的程序包: [[email

基于jersey和Apache Tomcat构建Restful Web服务(一)

基于jersey和Apache Tomcat构建Restful Web服务(一) 现如今,RESTful架构已然成为了最流行的一种互联网软件架构,它结构清晰.符合标准.易于理解.扩展方便,所以得到越来越多网站的采用.那么问题来了,它是什么呢? 起源 REST(Representational state transfer)在 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之一. REST 中最重要的概念是资源(resources

基于jersey和Apache Tomcat构建Restful Web服务(二)

基于jersey和Apache Tomcat构建Restful Web服务(二) 上篇博客介绍了REST以及Jersey并使用其搭建了一个简单的“Hello World”,那么本次呢,再来点有趣的东西,当然也是很简单了,仅仅是在路径中包含参数而已了.接下来开始动手实践吧. 在路径中包含参数 接下来就在上次的基础上进行改动即可,或者是再添加一个方法,随意了,这个方法主要就是在路径中加入输入的参数,并且根据参数的不同,它的返回值也不同,返回值为“Hello”+你输入的参数.这里用到了“PathPar

如何基于 K8S 多租能力构建 Serverless Container

当前 Kubernetes 已经成为名副其实的企业级容器编排规范,很多云平台都开始提供兼容 Kubernetes 接口的容器服务.而在多用户支持方面,多数平台选择直接提供专属虚机集群,用户需要花费大量精力处理集群规模.资源利用率.费用等问题. 本次分享带来的是华为云在基于 K8S 构建企业级 Serverless Container 平台过程中的探索与实践,涉及容器安全隔离.多租管理.Serverless 理念在 Kubernetes 平台的落地等相关内容. Kubernetes 在华为云的历程

基于Windows Server 2012 R2下的DHCP安装

这次的博客分享中旨在希望能帮助工程师完成基于Windows Server 2012 R2版本的DHCP安装. 分别在DHCP01及DHCP02服务器中执行如下操作,添加安装DHCP服务. 1) 打开"服务器管理器"窗口,单击"管理"/"添加角色和功能",如(图1)所示: 2) 在"添加角色和功能向导"(图2)页面中,单击"下一步"按钮: 3) 在"选择目标服务器"页面中,单击"

基于Ubuntu12.04下的Keystone源码安装

Keystone 概述:Keystone 作为Openstack最早期的核心项目独立发展,由于Openstack 采取的设计理念也是所有一切皆API,因此设计服务API的调用脱离不了Keystone.Keystone 作为Openstack 中身份认证服务,在Openstack起到非常关键的作用,并且实现了Identity API 供Openstack 其他组件间进行身份验证 Keystone 两种认证方式:UUID认证的原理当用户拿着有效的用户名和密码去keystone认证后,keystone

vim中文帮助文档的安装

使用:help打开vim的帮助文档发现全是苦逼的英文,下面提供中文帮助文档的安装方法: 首先去网址http://vimcdoc.sourceforge.net/ 在其中选择"Latest platform independent tarball,including an Linux/BSD installation script"下载 下载完成之后选择相应的文件夹保存,在文件夹中解压缩(提取),例如我保存的是在vim中文帮助文档这个目录下,在此目录下解压(提取)后的文件夹(目录)为 v