作者 | Milvus.io 

责编 | 胡巍巍

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

在过去,客服机器人的搭建通常需要将相关领域的知识(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技术的大规模落地。

附录

Milvus网站:milvus.io

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

详细步骤(附代码):

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

声明:本文系作者投稿,不代表CSDN立场。

【END】

更多精彩推荐

☞罗永浩:我今年四十八岁,还可以承受无数次的失败;iOS14或将推出系统级「小程序」功能;PyCharm新版发布 | 极客头条

拿下 Gartner 容器产品第一,阿里云打赢云原生关键一战!

百年 IBM 终于 All In 人工智能和混合云!

没有监控和日志咋整?老程序员来支招

☞“抗疫”新战术:世卫组织联合IBM、甲骨文、微软构建了一个开放数据的区块链项目!

万字干货:一步步教你如何在容器上构建持续部署!

☞据说,这是当代极客们的【技术风向标】...

今日福利:评论区留言入选,可获得价值299元的「2020 AI开发者万人大会」在线直播门票一张。  快来动动手指,写下你想说的话吧。

点击阅读原文,精彩继续!

感觉有用你就点个赞!

Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐