使用RocketQA开发工具实现端到端问答系统

12.28~12.30日每晚8点,百度工程师将针对问答、检索、情感分析场景带来直播讲解,深入解读RocketQA等系统方案,并带来手把手项目实战。报名链接

问答系统(Question Answering System, QA)是信息检索系统的一种高级形式,它能用准确、简洁的自然语言回答用户用自然语言提出的问题。问答系统在搜索引擎、智能客服和智能助手等应用场景中都发挥着重要作用。检索式问答系统是问答系统的重要类别,它能从大量文本中检索出问题的答案。下图是检索式问答系统的功能示意。

主流的检索式问答系统通常包含检索(retriever)、排序(reranker)和答案抽取(reader)等多个串行模块。随着大规模预训练模型的发展,研究人员开始探索基于深度语义表示的问答模型。得益于预训练模型生成的高质量语义表示空间和端到端的训练方法,语义模型能够提供更优质的结果,并且简化了传统问答系统的级联架构和特征工程方案,使系统的复杂性大大降低。

在此背景下,百度NLP提出了一系列基于语义的问答模型–RocketQA。RocketQA系列工作不仅被自然语言处理领域的多个国际顶级会议录取,也在百度的搜索业务中发挥了重要作用。为了使更多研发人员能够方便地获取最先进的问答语义检索与排序技术,百度NLP联合飞桨共同发布了基于RocketQA的开发工具。

本示例介绍了RocketQA开发工具的功能,演示如何基于该工具搭建一套问答系统。

RocketQA工具的基本功能

1、提供训练好的RocketQA模型和简单易用的模型预测api。

2、提供基于RocketQA模型搭建问答系统的简单方案。

项目亮点

1、领先的问答模型:

RocketQA开发工具提供11个业界领先的预置模型,包括3篇***顶会论文***的共9个英文开源模型,和***首个中文***的开源语义检索、排序模型。

2、强大的中文能力:

RocketQA提供首个开源的中文端到端问答模型。模型是在强大的预训练语言模型ERNIE上,用百万量级人工标注数据集DuReader训练得到的,效果出众。

3、简单的开发接口:

RocketQA开发工具可以通过pip一键安装,同时也提供了装有所有依赖的docker镜像。

工具提供精简的开发接口和使用样例,仅需两行命令即可搭建自己的问答系统。

项目详情和源码见:

https://github.com/PaddlePaddle/RocketQA

如果您觉得本案例有帮助,欢迎点击右上角的"喜欢",或者分享给别人~

使用说明

1、安装

# pip安装RocketQA工具包
!pip install rocketqa
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting rocketqa
[?25l  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/77/23/0a22aee6dd29cf35796466519f1c532be42f8331325b5cdf72e98860383f/rocketqa-1.0.0-py3-none-any.whl (43kB)
[K     |████████████████████████████████| 51kB 8.6MB/s eta 0:00:011
[?25hRequirement already satisfied: tqdm in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from rocketqa) (4.27.0)
Installing collected packages: rocketqa
Successfully installed rocketqa-1.0.0
# 查看RocketQA提供的预置模型import rocketqa
rocketqa_models = rocketqa.available_models()
for m_name in rocketqa_models:print (m_name)
v1_marco_de
v1_marco_ce
v1_nq_de
v1_nq_ce
pair_marco_de
pair_nq_de
v2_marco_de
v2_marco_ce
v2_nq_de
zh_dureader_de
zh_dureader_ce

2、使用预置模型完成预测

# 使用RocketQA预置的模型做预测import rocketqaquery_list = ["交叉验证的作用"]
title_list = ["交叉验证的介绍"]
para_list = ["交叉验证(Cross-validation)主要用于建模应用中,例如PCR 、PLS回归建模中。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和。"]# load model - RocketQA中文检索模型(de),在DuReader数据集中训练得到
dual_encoder = rocketqa.load_model(model="zh_dureader_de") # for cpu
# dual_encoder = rocketqa.load_model(model="v1_marco_de", use_cuda=True, device_id=0, batch_size=16) # for gpu# encode query & para
q_embs = dual_encoder.encode_query(query=query_list)
p_embs = dual_encoder.encode_para(para=para_list, title=title_list)
print (q_embs.shape, q_embs.shape)# compute dot product of query representation and para representation
dot_products = dual_encoder.matching(query=query_list, title=title_list, para=para_list)
print (dot_products)
RocketQA model [zh_dureader_de]
Download RocketQA model [zh_dureader_de]4%|█▌                                   | 82.1M/1.84G [00:01<00:22, 85.1MiB/s]

3、搭建自己的检索式问答系统

A. 搭建问答系统的流程

如上图,问答系统分为离线和在线两个部分。

离线部分,需要将待检索的文档转成向量,并建立向量索引。

在线部分,需要将查询语句转成向量,用向量从索引中检索相关内容(通常返回不止一条结果),再对相关内容进行更精细的排序,得到最佳答案。

为了方便开发者使用,本项目提供了搭建问答系统的简单样例。

B. 使用Faiss搭建自己的问答系统

第一步:安装依赖

pip install faiss-cpu==1.5.3
git clone https://github.com/PaddlePaddle/RocketQA.git
cd RocketQA/examples/faiss_example/

第二步:准备数据

按如下格式准备候选文档:

每一行是一条文档数据,包含文档标题和文档内容,标题与内容用\t分隔。如果没有标题,可用空字符串或’-'代替

例如:

广西壮族自治区新型冠状病毒感染的肺炎 \t 感谢社会各界对我区抗击新型冠状病毒感染的肺炎疫情所给予的关心和大力支持!...

第三步:建索引并启动检索服务

# 建立索引库
python index.py zh ${your_data} ${index_name}# 启动检索服务
!python rocketqa_service.py zh ${your_data} ${index_name} &

第四步:检索

python request.py

运行结果见下图

C. 使用Jina搭建自己的问答系统

Jina是基于深度学习模型搭建搜索引擎的开源框架,将RocketQA模型嵌入Jina框架能快速搭建检索式问答系统。具体步骤如下:

第一步:安装依赖

git clone https://github.com/PaddlePaddle/RocketQA.git
cd examples/jina_example
pip install -r requirements.txt

第二步:准备数据

按如下格式准备候选文档:

每一行是一条文档数据,包含文档标题和文档内容,标题与内容用\t分隔。如果没有标题,可用空字符串或’-'代替

例如:

广西壮族自治区新型冠状病毒感染的肺炎 \t 感谢社会各界对我区抗击新型冠状病毒感染的肺炎疫情所给予的关心和大力支持!...

第三步:建索引并启动检索服务

python rocketqa_jina.py index ${your_data}

第四步:检索

python app.py query_cli

想了解详情可访问RocketQA开源项目

使用RocketQA实现检索式问答系统相关推荐

  1. 无监督端到端检索式问答系统方案实践

    01   背景 暨2021年"十四五"规划将数字政府提上国家顶层设计后,今年两会期间,数字经济.智慧城市再一次成为各界关注的焦点. 3月5日,<政府工作报告>提出要加强 ...

  2. FAQ 检索式问答系统学习记录

    介绍 1. 背景 场景:假设有 一个 标准的问题库,此时有一个 新 query 进来,应该做什么操作? 灵魂三连问: 如何根据 这个 query,你怎么返回一个标准答案呢? 如何从 问题库 里面找 答 ...

  3. 基于深度学习的FAQ检索式问答系统

    问答系统是信息检索的一种高级形式,能够更加准确地理解用户用自然语言提出的问题,并通过检索语料库.知识图谱或问答知识库返回简洁.准确的匹配答案.相较于搜索引擎,问答系统能更好地理解用户提问的真实意图, ...

  4. 60检索式问答系统的语义匹配模型(神经网络篇)

    slvher 助理来也后端/算法工程师 目前研发方向为多轮对话系统 问答系统可以基于规则实现,可以基于检索实现,还可以通过对 query 进行解析或语义编码来生成候选回复(如通过解析 query并查询 ...

  5. 检索式问答系统baseline

    1 系统介绍 搭建一个基于检索式的简单的问答系统. 本项目包括: 字符串操作 文本预处理技术(词过滤,标准化) 文本的表示(词袋模型,tf-idf, word2vec) 文本相似度计算 文本高效检索 ...

  6. 贪心(基于检索式问答系统)

    1.注意 注意(attention)!开始做前必读项! 所有的代码一定要在这个文件里面编写,不要自己创建一个新的文件 对于提供的数据集,不要改存储地方,也不要修改文件名和内容 确保到时候git pul ...

  7. 基于Sentence-Bert的检索式问答系统

    文章目录 前言 环境 构建数据集 训练SBERT模型 测试 粗排 精排 优化策略 结果 总结 前言 常见的问答任务有四种: 知识图谱问答:基于给定知识图谱生成问题对应的答案 表格问答:基于给定表格集合 ...

  8. 简单的检索式问答系统

    这是我之前做的一个小项目,趁现在有时间就把它拿出来记录一下. 通过此项目,能够掌握以下几个知识点: 字符串操作 2. 文本预处理技术(词过滤,标准化) 3. 文本的表示(tf-idf, word2ve ...

  9. AliExpress:在检索式问答系统中应用迁移学习 | PaperDaily #24

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

最新文章

  1. Spring基础专题——第十一章(高级注解编程完结)
  2. 调用实现天气预报功能android,Android编程实现获取新浪天气预报数据的方法
  3. seo网站优化如何写好文章
  4. mysql多表查询书籍_MySQL多表查询及子查询
  5. php mysql数据库简介,mysql数据库
  6. tomcat配置https以及http强制跳转https(如何生成证书)
  7. C++ 引用计数技术简介(1)
  8. Cocos2dx源码记录(3) CCVertexIndexData
  9. Thrift IDL使用方式
  10. .net面试问答(大汇总)(转)
  11. PCA、CCA、PLS
  12. 如何用python 对PDF进行拆分,批量修改文件名(根据excel表格)
  13. NoteExpress中遇到的坑
  14. 基于SIMULINK的AWGN信道仿真
  15. Mac电脑网速慢的问题之一(硬件:MTU)
  16. Scala关键字lazy的理解和使用
  17. linux命令手册安卓版,linux手册app-linux手册 安卓版v3.0.0-PC6安卓网
  18. LINUX 下播放 DVD 全攻略 (关键字 DVD-ROM LiViD fifo OMS) (转)
  19. LeetCode 最长公共子串
  20. Cesium 系列1 - 简介及源码下载发布

热门文章

  1. c语言tab什么意思_这是我的C语言入门笔记。
  2. 转:Metalink 账户
  3. matlab网络图,Matlab实现网络拓补图
  4. centos7.2安装五笔输入法的方法(测试OK)
  5. 什么是Qt Quick
  6. 【Leetcode】1307. Verbal Arithmetic Puzzle
  7. 临池白鹭胜雪,远城故人别离,无奈曾时旧地 ,只叹此景触情
  8. 大学认可的一类出版社目录
  9. Yarn公平调度器[转自 AIMP平台wiki]
  10. WPS 2007艺术字实用操作技巧