问答系统是自然语言处理领域一个很经典的问题,它用于回答人们以自然语言形式提出的问题,有着广泛的应用。其经典应用场景包括:智能语音交互、在线客服、知识获取、情感类聊天等。常见的分类有:生成型、检索型问答系统;单轮问答、多轮问答系统;面向开放领域、特定领域的问答系统。本文涉及的主要是在检索型、面向特定领域的问答系统,通常称之为——智能客服机器人。

在过去,客服机器人的搭建通常需要将相关领域的知识(Domain Knowledge),转化为一系列的规则和知识图谱。构建过程中重度依赖“人工”智能,换个场景,换个用户都需要大量的重复劳动。

随着深度学习在自然语言处理(NLP)中的应用,机器阅读可以直接自动从文档中找到匹配问题的答案。深度语言模型会将问题和文档转化为语义向量,从而找到最后的匹配答案。本文借助Google开源的Bert模型结合Milvus开源向量搜索引擎,快速搭建基于语义理解的对话机器人。

| 整体架构

本文通过语义相似度匹配来实现一个问答系统,大致的构建过程:

  1. 获取某一特定领域里大量的带有答案的中文问题(本文将之称为标准问题集)。
  2. 使用Bert模型将这些问题转化为特征向量存储在Milvus中,同时Milvus将 给这些特征向量分配一个向量ID。
  3. 将这些代表问题的ID和其对应的答案存储在PostgreSQL中。

当用户提出一个问题时:

  1. 通过Bert模型将之转化为特征向量
  2. 在Milvus中对特征向量做相似度检索,得到与该问题最相似的标准问题的id
  3. 在PostgreSQL得出对应的答案。

系统架构图如下(蓝色线是导入过程,黄色线是查询过程):

接下来,将手把手教您搭建一个在线问答系统。

| 搭建步骤

在搭建之前您需要安装Milvus、Postgresql,具体安装步骤请参考官网。

1.数据准备

本文中的实验数据来自:https://github.com/SophonPlus/ChineseNlpCorpus。

该项目下的FAQ问答系统中的金融数据集,我们从中一共整理了33万条数据。结合这组数据,我们可以快速搭建一个xx银行智能客服机器人。

2.生成特征向量

本系统使用了Bert已预训练好的一个模型。在启动服务前,需要下载该模型:https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip

使用该模型将问题库转化为特征向量,以用于后续的相似度检索。更多bert服务相关可参考:https://github.com/hanxiao/bert-as-service

3.导入Milvus和PostgreSQL

将上述产生的特征向量归一化处理后导入Milvus中存储,然后j将Milvus返回的id以及该id对应的问题的答案导入PostgreSQL中。PostgreSQL中的表结构:

4.获取答案

用户输入一个问题,通过Bert产生特征向量后,在Milvus库中找出与之最相似的一个问题。本文采用的余弦距离来表示两个句子间的相似度,由于所有向量都进行了归一化,因此两个特征向量的余弦距离越接近1表示相似度也高越高。库中可能没有与用户给定问题比较相似的问题,所以在实践中我们可以设定了一个阈值0.9,当检索出来的最相似的距离小于该阈值时,则返回本系统未收录相关问题的提示。

| 系统演示

系统初始界面如下:

在对话框中输入你的问题,将会收到对应的答案。如图:

| 总结

上述的问答系统搭建是不是很简单?有Bert模型的加持,你根本不需要预先对语料进行分类整理、标签化等工作。同时,得益于开源向量搜索引擎Milvus的高性能和可扩展性,系统可以支撑上亿级别的语料库。Milvus向量搜索引擎已经加入Linux AI (LF AI)基金会进行孵化,欢迎大家加入Milvus社区。让我们一起加速AI技术的大规模落地。

系统演示:https://milvus.io/cn/scenarios

详细步骤(附代码):

https://github.com/milvus-io/bootcamp/tree/0.7.0/solutions/QA_System​github.com

*原文来源:https://mp.weixin.qq.com/s/nHsg8Iu8BkMeiRCRoPr7ew


想让 Milvus 手把手教你如何搭建智能问答机器人吗?现在就报名4/23 晚上7点的直播喔!

利用Bert和Milvus快速搭建智能问答机器人 ​www.huodongxing.com

| 欢迎加入 Milvus 社区

http://github.com/milvus-io/milvus | 源码

http://milvus.io | 官网

http://milvusio.slack.com | Slack 社区

http://zhihu.com/org/zilliz-11/columns | 知乎

http://zilliz.blog.csdn.net | CSDN 博客

客服机器人源码_快速搭建对话机器人,就用这一招!相关推荐

  1. wolive-在线客服系统源码_如何搭建在线客服系统?

    在线客服为企业和客户提供了即时沟通的平台,可以接入网页.APP.微博.微信等多种渠道.企业要如何搭建在线客服系统呢? (一)确认需求和预算 在决定搭建在线客服系统之前,企业要确认自身业务需求,主要是售 ...

  2. 在线客服聊天系统源码_美观强大golang内核开发_二进制运行傻瓜式安装_附搭建教程...

    在线客服系统是什么 在线客服系统可以看作一种即时通讯软件,提供网站及其他应用和访客对话的平台,更加方便网站与访客之间的交流.访客无需安装软件就可以访问企业应用,获取自己想要的信息. 一般来说,在线客服 ...

  3. 开源版-在线客服系统源码_网页聊天室源码_webim

    2019独角兽企业重金招聘Python工程师标准>>> WoLive是一款在线客服系统源码,支持PC Web和移动端,只需嵌入一段js代码即可快速接入.购买后可私有化部署,WoLiv ...

  4. PHP在线客服系统源码+H5+APP+搭建教程实例

    在本节中,我们将简要讨论通过PHP在线客服系统源码传输数据的数据传输方法.我们可以发送普通消息或基于时间表的消息.我们将逐一介绍这两种基本类型的消息传递. 完整源码:zxkfym.top Azure ...

  5. php在线客服系统源码_在线客服系统物流行业解决方案

    作为直接与客户接触的渠道,合力亿捷在线客服系统已经在许多领域得到了广泛运用,包括现在覆盖全国的现代物流.快递等业务.但许多企业在日常工作中容易遇见许多难题,也不清楚如何通过在线客服系统来解决物流行业的 ...

  6. 开源版客服代码-在线客服系统源码_网页聊天室源码_龙塘智能客服_znkefu

    拥有功能 1.机器人智能客服 2.人工客服 3.离线消息 4.留言功能 8.统计数据 9.数据加密 10.全渠道接入(网站/H5/公众号/小程序/安卓/苹果APP) 11.对话标签 12.顾客标签 1 ...

  7. 快速搭建对话机器人,就用这一招!

    作者 | Milvus.io 责编 | 胡巍巍 问答系统是自然语言处理领域一个很经典的问题,它用于回答人们以自然语言形式提出的问题,有着广泛的应用.其经典应用场景包括:智能语音交互.在线客服.知识获取 ...

  8. 电销机器人源码开发+独立搭建的要点(一)

    众所周知,电销机器人自2017年面试以来,对电话销售行业带来了质的提升,特别是陌生的电话拜访,意向客户的筛选和需求确认完全可以被电销机器人所替代,自此催生了一大批电销机器人的开发厂商,产品功能层次不齐 ...

  9. 辰光php客服系统源码_仿伊对梵高相亲交友系统产品特性以及构成基础,你了解吗?...

    梵高婚恋相亲交友系统,顾名思义是一个集相亲.交友于一身的婚恋社交App.可搭建平台,出售源码. 仿伊对梵高相亲交友系统开发特色及应用场景 1.仿伊对梵高相亲交友系统开发特色:直播间在线相亲,红娘在线视 ...

最新文章

  1. 用户空间和内核空间通讯之【proc文件系统】
  2. echarts geo地图示例_干货|Pyecharts绘制好看的交互式地图教程
  3. 华为主题包hwt下载_华为主题 | 星黛露
  4. 喝清凉茶,吃绿豆汤看绿色奥运[我写绿色IT]
  5. HashMap源码解析(JDK1.8)
  6. 选中一行的快捷键_常用文字编辑快捷键,学会之后,天天可以提前下班
  7. stopwords怎么用_【技术】怎么用Python画出好看的词云图?
  8. java linux socket编程_linux下socket编程实例?javasocket编程流程?java socket编程实例代码讲解...
  9. php跨域有那些方法,PHP跨域访问的3种方法
  10. 海外媒体稿件内容怎么写更出色
  11. 深入理解地球的经度和纬度换算
  12. Apache网页与安全优化
  13. 蓝牙Ibeacon室内定位和微信摇一摇周边原理分析
  14. 什么是根域名服务器?
  15. Java中print,printf,println的区别
  16. Windows10下WebLogic的下载与安装
  17. Invalid bound statement (not found): com.kuang.springcloud.dao.DeptDao.queryById
  18. c语言时间函数状态,C语言的时间函数
  19. java 函数名相同_下列方法不属于java.lang.Math类的有(方法名相同即可)【 】...
  20. sklearn 中的数据预处理函数,标准化

热门文章

  1. 夺命雷公狗---node.js---3commonJs 与 nodeJs的简介
  2. Android 获取 AudioRecord 麦克风音量大小并做选择性发送
  3. Android 图片合成:添加蒙板效果 不规则相框 透明度渐变效果的实现
  4. java 观察者模式
  5. 想转行到机器学习,学到什么程度,才能找到工作?
  6. Android Activity的理解
  7. mvn test BUILD FAILURE
  8. String,StringBuffer和StringBuilder区别?
  9. JavaScript是如何同时做到单线程和异步执行的
  10. 启动未初始化小应用程序_SpringBoot详细打印启动时异常堆栈信息