智能客服:『200元』
1-2 对话系统关键技术 1-2-1 相关工具
1.编程语言:( 模型 或者服务) ,C++,Java,go 在线服务
2.数据处理及机器学习相关库:、-learn、jieba
3.深度学习框架:、
4.开发工具:、 code
5.其它工具:搜索引擎、向量检索引擎Faiss/
1-2-2 检索式相关技术介绍
1、分词算法
2、文本向量化表示
、N-Gram 、TFIDF等词袋模型、、、Glove
Bert(本案例文本向量化表示选择bert) 、XLNet等神经网络模型
3、文本相似度计算(项目中:我们采用余弦相似度,计算得分)
余弦相似度、欧式距离
4、检索方法
1-2-3 生成式相关技术介绍
闲聊系统
1、模型
2、 + 模型
3、
4、Bert模型
1-2-4 任务型相关技术介绍
重要,在我们实际工作中,很多场景都会用到
1、意图识别
2、填槽、对话管理
3、多轮对话
分类
NER识别
多伦对话(模型,规则。。。。)
1-3 智能客服调研分析
客服机器人指帮助客服回答问题提高人工客服效率的机器人。客服机器人可以用于回答客户的常规、重复性的问题,但不是替代,而是辅助人工服务,改变客服工作的模式,进一步提高客服工作效率。
1-3-1 调研分析
纯机器人完全替代客服的并不多,人机结合模式使用广泛。分析一下主要有以下几个原因:
1、机器人响应速度快,且可同时接待多位客户,而且客户不需要等待;
2、机器人替代人工处理咨询中的重复问题,人工客服不易陷入烦躁情绪,客户体验好;
3、遇到复杂问题,人机结合模式可以无缝切换人工来处理,顾客体验不会中断。
1-3-2 智能客服的优势
1、机器人可以7 X 24 小时在线服务,解答客户的问题。
2、常问的问题,重复的问题都可以交给机器人来自动回复,省去很多重复的输入及复制粘贴。
3、可以辅助人工客服,在人工服务的时候,推荐回复内容,并学习人工客服的回复内容。
1-3-3 如何设计智能客服系统
1、时间特性要求。系统极限相应时间到底是多少
2、灵活性。系统的各个模块应该在可控的状态内,每一个模块可插拔,保证线上质量。
3、安全性。内外网隔离,注意网络完全,系统安全,用户安全,数据安全。
4、可扩展性:系统的各个模块支持扩展,支持跨平台,支持多种语言,算法模型可以灵活切换。
5、可靠性:系统和集群稳定运行,主要的集群实现双机热备;实现灾备;当单个节点发生故障可以迅速切换。
6、可用性:系统的各项功能可用,系统上线必须符合一定的正确率
1-4 阿里小蜜介绍
1-4-1 智能客服发展阶段
1-4-2 人机交互基本流程
阿里巴巴于2015年7月推出了阿里小蜜产品,在面世的仅仅几年中,阿里小蜜发展之迅速令人难以想象。阿里小蜜给出了一个典型的智能对话系统的架构。
自然语言处理(NLP)是对话系统的核心部分
2 应用场景介绍
CSDN 问答系统:
百度知道:
360问答:
2-2 文本搜索场景
2-3 论坛相似问答系统
汽车之家拥有全球最大的汽车社区论坛。积累了丰富的用户问答数据,能够解决用户在看车、买车、用车等方面遇到的各种问题。针对用户在平台上提出的各种问题,从海量的高质量问答库中匹配语义最相似的问题和答案
文本数据具有表达多样化、用语不规范(如:车型车系用语存在大量缩写、简写、语序颠倒等现象)、歧义性强(如:“北京”可能指汽车品牌,也可能指城市)等特点,这给传统基于关键词匹配的搜索方法带来了很大挑战。因此,在传统关键词匹配的基础上,进一步引入语义搜索技术,将精华问答库的问题映射为多维向量,进行语义匹配,提升问题匹配准确性。
2-4 智能对话闲聊系统
数据格式:query- 对如下
不要骂人 好的,听你的就行了
不要骂人严重的直接禁言 好的,听你的就行了
不要骂人了吧 好的,听你的就行了
不要骂人哦 好的,听你的就行了
不要骂人小心封号啊 好的,听你的就行了
不认识你不记得你 你当我傻逼啊
不认识你昂 你当我傻逼啊
不认识你老哥了 你当我傻逼啊
3 问答系统发展现状
FAQ检索型问答流程是根据用户的新Query去FAQ知识库找到最合适的答案并反馈给用户。
检索过程如图所示
其中,Qi是知识库里的标准问,Ai是标准问对应的答案。
具体处理流程为:
3-1 智能问答常用解决方案
针对FAQ检索式问答系统,一般处理流程
搭建一个FAQ问答系统一般实现方法
(通过关键词匹配获取答案,类似电商、新闻搜索领域关键词召回)
(计算每个单词的tfidf数值,分词后换算句子表示。TF-IDF 方式也在用在关键词提取)
方案可以扩展到的业务需求(本文介绍的是一种文本语义匹配通用解决方案)
(对话系统检索式智能问答系统,答案在知识库中且返回唯一的数据记录)
针对这类问题,重点文本等通过某种方式进行向量化表示(、、elmo、bert等),然后把这种特征向量进行索引(faiss/Milus) ,最终实现在线服务系统的检索,然后再通过一定的规则进行过滤,获取最终的数据内容。
3-2 传统文本匹配方法存在问题
传统的文本匹配技术有BoW、VSM、TF-IDF、BM25、、等算法,主要解决字面相似度问题。
面临的困难:
由 于中文含义的丰富性,通常很难直接根据关键字匹配或者基于机器学习的浅层模型来确定两个句子之间的语义相似度。
3-3 深度学习文本匹配
深度学习模型文本做语义表示逐渐应用于检索式问答系统。
相比传统的模型优点:
本文采用相似问题匹配来实现一个FAQ问答系统。
问题:什么是相似问题匹配?
答案:即对比用户问题与现有FAQ知识库中问题的相似度,返回用户问题对应的最准确的答案
深度语义匹配模型可以分为两大类,分别是-based 和 -based ,这里我们针对-based 这种方法进行探索。
这类算法首先将待匹配的两个对象通过深度学习模型进行表示,之后计算这两个表示之间的相似度便可输出两个对象的匹配度。针对匹配度函数f(x,y)的计算通常有两种方法: 函数 和 多层感知器网络(MLP)
对比两种匹配方法的优缺点
* cosine 函数:通过相似度度量函数进行计算,实际使用过程中最常用的就是 cosine 函数,这种方式简单高效,并且得分区间可控意义明确
* 多层感知器网络(MLP):将两个向量再接一个多层感知器网络(MLP),通过数据去训练拟合出一个匹配度得分,更加灵活拟合能力更强,但对训练的要求也更高
4 问答系统关键技术
的 BERT 模型在 NLP 领域中具有巨大的影响力。它是一个通用的语言表示模型,可以应用于诸多领域。本文的项目是将 Faiss与 BERT 模型结合搭建文本语义匹配检索系统,使用 BERT 模型将文本数据转成向量,结合 Faiss特征向量相似度搜索引擎可以快速搜索相似文本,最终获取想要的结果
4-1 Faiss
Faiss是 AI团队开源的针对聚类和相似性搜索库,为稠密向量提供高效相似度搜索和聚类,支持十亿级别向量的搜索,是目前最为成熟的近似近邻搜索库。它包含多种搜索任意大小向量集(备注:向量集大小由RAM内存决定)的算法,以及用于算法评估和参数调整的支持代码。Faiss用C++编写,并提供与Numpy完美衔接的接口。除此以外,对一些核心算法提供了GPU实现。相关介绍参考《Faiss: 开源的相似性搜索类库》
4-2 BERT
BERT 模型是 发布的一个新的语言表达模型( Model),全称是 from ,即双向编码表征模型。BERT 模型的优势体现在两方面。
提供了一些预先训练的模型,其中最基本的两个模型是BERT-base 模型和 BERT-large 模型。具体参数如下表所示:
BERT-base 模型和 BERT-large 模型的参数总量大小和网络层数不同,BERT-large 模型所占计算机内存较多,所以本文项目选用 BERT-base 模型对文本数据进行向量转化。(注:其中,层数(即 块个数)表示为 L,隐藏尺寸表示为 H ,自注意力头数表示为 A 。)
5 问答系统实现
关于main.py 主要参数
$ main.py –help
usage: main.py [-h] –task TASK [–load] [–index] [– ]
[–] [– ] [–topK TOPK]
:
-h, –help show this help and exit
–task TASK task name
–load load data into db
–index load data text into faiss
– take data , it into faiss
– text from faiss
– query text data
–topK TOPK take data in topK
第一步:知识库存储
$ main.py ––load
第二步:索引构建
$ main.py ––index —
第三步:文本语义相似度匹配检索
$ main.py –– — 得了乙肝怎么治疗
备注:中task_${索引记录数} 组合
完成上述功能后,我们可以在此基础上,根据业务不同搭建一些相关应用,例如:
第四步:基于文本语义检索服务实现FAQ问答
$ main.py –– — 身上出现 –topK 10
第五步:基于文本语义检索服务Web服务
启动服务 app.py –,然后访问地址:5000/
我们这里呢,使用上述基础服务完成一个FAQ问答机器人
5-1 数据规范
项目数据集包含三个部分:问题数据集+答案数据集+问题-答案唯一标识,数据是一一对应的。
针对不同的业务系统,我们只需要提供这种数据格式,通过本文的模板就可以快速搭建一个demo了,祝大家学习愉快。
5-2 系统整体架构
本文的文本语义匹配搜索项目使用的 Faiss和BERT的整体架构如图所示:
(注:深蓝色线为数据导入过程,橘黄色线为用户查询过程。)
6-3 文本向量服务 bert-
使用bert as 服务
第一步:安装
>= 3.5
>= 1.10 (one-point-ten)
系统-gpu下载离线安装文件并pip安装
-1.15.0-py3-none-any.whl
-1.15.1-py2.py3-none-any.whl
-1.15.3-cp37-cp37m-.whl
也可以通过下面的方式快速下载(这里下载cpu版本)
pip ==1.15.0 –user -i
验证是否安装
as tf
print(tf.)
第二步:bert- 服务搭建
( 我们在系统搭建完成bert- ,目录:/home/// )
通过bert-服务,帮助我们解决:文本-> 向量的转换
1、参考 提供的代码
git clone
2、安装和
pip bert– #
pip bert– # , —
3、下载 BERT
and , 12-layer, 768-, 12-heads, 110M
解压模型:
-12_H-768_A-12
├── .json
├── .ckpt.data-00000-of-00001
├── .ckpt.index
├── .ckpt.meta
└── vocab.txt
.json: bert 模型配置参数
vocab.txt: 字典
: 预训练的模型
4、启动bert-
nohup bert–start – -12_H-768_A-12 – 1 – 64 >.log 2>&1 &
( CPU和GPU 模式都可以 )
针对每个字段进行说明
= 4 表示同时并发处理请求数
预训练的模型
业务分析句子的长度
关闭服务
bert– -port 5555
5、测试文本-> 向量表示结果
from bert_serving.client import BertClient
bc = BertClient()
result = bc.encode(['First do it'])
print(result)
5-4 向量相似度搜索引擎
产品学习手册
5-5 知识库存储
知识库:可以存储mongo//mysql 根据数据量进行选择
本文给大家分享的内容,数据存储在mysql上。
备注:关于mysql 的具体安装,大家去上网查找一下。(root,)
大家在学习过程中,如果有任何的问题:可以网站留言(或者: )
;
use ;
(
idint(11) NOT NULL ,
,
KEY (id),
_id(id)
) = =1 = =;
5-6 索引构建
$ main.py ––index —
5-7文本语义相似度匹配搜索
$ main.py –task — — 小安信贷
完成上述功能后,我们可以在此基础上,根据业务不同搭建一些相关应用,例如:
对输入数据微小的差别看看有什么不同?
5-8文本语义FAQ问答机器人-API接口
首先,我们启动服务: app.py
然后,请求API 服务地址查看检索检索
$ curl -H “-Type:/json” -X POST –data '{“query”: “乙肝怎么治疗”}':5000/api/v1/| jq
5-9文本语义FAQ问答机器人-Web界面
启动服务 app.py,然后访问地址:5000/
用户表达的细微差别,通过文本语义匹配总之能找到最佳的答案,最终反馈给用户。
例如:两种语言表达看看效果
第一句:小孩子感冒吃什么
第二句:小孩子感冒不能吃什么
上述明显表达的是两个含义,而通过文本语义的方式也很好得识别出来了,效果还不错。
我们看看后端服务地址数据
注意:FAQ系统依赖bert- 服务,请确认正常工作。
[:5000/
正常情况下的返回结果格式如下:
“”:“”,
“ip”:“127.0.0.1”,
“port”:5555,
“”:“-1cd6-406d-b170-”
6 总结展望
在 AI 高速发展的时代,我们可以使用深度学习模型去处理各种类型的非结构化数据,例如图片、文本、视频和语音等。本文项目通过 BERT 模型可以将这些非结构化数据提取为特征向量,然后通过Faiss 对这些特征向量进行计算,实现对非结构化数据的分析与检索。
本文利用Faiss搭建的FAQ问答系统也只是其中一个场景,展示了Faiss在非结构化数据处理中的应用。欢迎大家导入自己的数据建立自己的FAQ问答系统(或者文本搜索、智能客服等新系统)。Faiss向量相似度检索引擎搜索十亿向量仅需毫秒响应时间。你可以使用 Faiss探索更多 AI 用法!
发表回复