Chatbot(五)

news2024/11/22 8:43:41

一、走进聊天机器人

目标

  1. 知道常见的bot的分类
  2. 知道企业中常见的流程和方法

1.1 目前企业中的常见的聊天机器人

  1. QA BOT (问答机器人) : 回答问题
    1.代表:智能名服
    2.比如: 提问和回答
  2. TASK BOT(任务机器人): 助人们做事情
    1.代表: siri
    2.比如:设五明天早上9点的闹钟
  3. CHAT BOT(聊天机器人): 通用、开放聊天
    1.代表:微软小冰

1.2 常见的聊天机器人怎么实现的

1.2.1 问答机器人的常见实现手段

  1. 信息检素、搜素(简单,效果一般,对数据问答对的要求高)关键词: tfidf、SVM、朴素贝叶斯、RNN、CNN
  2. 知识图谱(相对复杂,效果好,很多论文)在图形数据库中存储知识和知识间的关系、把问答转化为查询语句、能够实现推理

1.2.2 任务机器人的常见实现思路

  1. 语音转文字
  2. 意图识别、领域识别、文本分类
  3. 槽位填充:比如买机票的机器人 使用命令体识形填充 从{位置}到{位置}的票2个位置的
  4. 回话管理、回话策略
  5. 自然语言生成
  6. 文本转语音

1.2.3 闲聊机器人的常见实现思路

  1. 信息检素《简单、能够回答的话术有限)
  2. seq2seg 和变种(答案覆盖率高,但是不能保证答案的通顺等)

1.3 企业中的聊天机器人是如何实现的

1.3.1 阿里小蜜-电商智能助理是如何实现的

参考地址: https://juejin.im/entry/59e96f946fb9a04510499c7f

1.3.1.1 主要交互过程

在这里插入图片描述
从图可以看出:

  1. 输入:语音转化为文本,进行理解之后根据上下文得到语义的表示
  2. 输出:根据语义的表是和生成方法得到文本,再把文本转化为语音输出

1.3.1.2 技术架构

在这里插入图片描述
可以看出其流程为:

  1. 判断用户意图
  2. 如果意图为面向目标:可能是问答型或者是任务型
  3. 如果非面向目标:可能是语聊型

1.3.1.3 检索模型流程(小蜜还用了其他的模型,这里以此为例)

在这里插入图片描述
通过上图可知,小童的检索式回答的流程大致为:

  1. 对问题进行处理
  2. 根据问题进行召回,使用了提前准备的结构化的语料和训练的模型
  3. 对召回的结果进行组长和日志记录
  4. 对召回的结果进行相似度计算,情感分析和属性识别
  5. 返回组装的结果

1.3.2 58同城智能客服帮帮如何实现的

参考地址:http://www.6aiq.com/article/1536149308075?p=1&m=0

1.3.2.1 客服体系

在这里插入图片描述

1.3.2.2 智能客服整体架构

在这里插入图片描述
整体来看,58的客服架构分为三个部分

  1. 基础服务,实现基础的NLP的功能和意图识别
  2. 应用对话部分实现不同意图的模型,同时包括编相运营等内容
  3. 提供对外的接口

1.3.2.3 业务咨询服务流程

大数据流程
在这里插入图片描述
KB-bot的流程大致为:

  1. 对问题进行基础处理
  2. 对答案通过tfidf等方法进行召回
  3. 对答案通过规则深度神经网络等方法进行重排序
  4. 返回答案排序列表
    使用融合的模型
    在这里插入图片描述
    在问答模型的深度网络模型中使用了多套模型进行融合来获取结果
  5. 在模型层应用了 FastText、TextCNN 和 Bi-LSTM 等模型
  6. 在特征层尝试使用了单字、词、词性、词语属性等多种特征
    通过以上两个模型来组合获取相似的问题,返回相似问题ID对应的答案

1.3.2.4 58的闲聊机器人

在这里插入图片描述
58同城的闲聊机器人使用三种方法包括

  1. 基于模板匹配的方法
  2. 基于搜索的方式获(上上图)
  3. 使用seq2seq的神经网络来实现

1.3.2.5 解决不了转人工服务

在这里插入图片描述

二、需求分析和流程介绍

目标

  1. 能够说出实现聊天机器人的需求
  2. 能够说出实现聊天机器人的流程

2.1需求分析

在黑马头条的小智同学板块实现聊天机器人,能够起到智能客服的效果,能够为使用app的用户解决基础的问题,而不用额外的人力。
但是由于语料的限制,所以这里使用了编程相关的问题,能够回答类似: python是什么,python有什么优势等问题

2.2 效果演示

在这里插入图片描述

2.3 实现流程

2.3.1 整体架构

在这里插入图片描述
整个流程的描述如下

  1. 接受用户的问题之后,对问题进行基础的处理
  2. 对处理后的问题进行分类,判断其意图
  3. 如果用户希望闲聊,那么调用闲聊模型返回结果
  4. 如果用户希望咨询问题,那么调用问答模型返回结果

2.3.2 闲聊模型

闲聊模型使用了seq2seq模型实现
包含:

  1. 对数据的embedding
  2. 码层
  3. attention机制的处理
  4. 解码层
    在这里插入图片描述

2.3.3 问答模型

问答模型使用了召回和排序的机制来实现,保证获取的速度的同时保证了准确率

  1. 问题分析:对问题进行基础的处理,包括分词,词性的获取,词向量的获取
  2. 问题的召回:通过机器学习的方法进行海选,海选出大致满足要求的相似问题的前K个
  3. 问题的排序: 通过深度学习的模型对问题计算准确率,进行排序
  4. 设置阈值,返回结果
    在这里插入图片描述

三、环境准备

目标

  1. 能够使用anaconda创建虚拟环境
  2. 能够安装fasttext
  3. 能够安装pysparnn

3.1 Anaconda环境准备

  1. 下载地址: https://mirror.tuna.tsinghua.edu.cn/hep/anaconda/
  2. 下对应电脑版本软件,安装
    1.windows: 双击exe文件
    2.unix:给sh文件添加可执行权限,执行sh文件
  3. 添加到环境变量
    1.windows安装过程中勾选
    2.unix: export PATH=“/root/miniconda3/bin: $SPATH”
  4. 创建虚拟环境
    1.conda create -n 名字 python=3.6(版本)
    2.查看所有虚拟环境: conda env list
  5. 切换到虚拟环境
    1.conda activate 名字
  6. 退出虚拟环境
    1.conda deactivate 名字

3.2 fasttext安装

文档地址: https://fasttext.cc/docs/en/support.html
安装步骤:
1.下载 git clone https://github.com/facebookresearch/fastText.git
2. cd cd fastText
3. 编译 make
4. 安装 python setup.py install

3.3 pysparnn安装

文档地址: https://github.com/facebookresearch/pysparnn
安装步骤:
1.下载: git clone https 😕/github .com/facebookresearch/pysparnn.git
2.安装: python setupy.py install

四、语料准备

目标

  1. 准备分词词典
  2. 准备停用词
  3. 准备问答对
  4. 爬虫采集相似问题

4.1 分词词典

在这里插入图片描述

4.1.1 词典来源

  1. 各种输入法的词典
    例: https://pinyin.sogou.com/dict/cate/index/97?rf=dictindex
    例: https://shurufa.baidu.com/dict_list?cid=211
  2. 手动收集,根据目前的需求,我们可以手动收集如下词典
    1.机构名称,例如: 传智 , 传智播客,黑马程序员
    2.课程名词,例如: python,人工智能+python ,c++等

4.1.2词典处理

输入法的词典都是特殊格式,需要使用特殊的工具才能够把它转化为文本格式
工具名称:深蓝词库转换.exe
下载地址:https://github.com/studyzy/imewiconverter

4.1.3 对多个词典文件内容进行合并

下载使用不同平台的多个词典之后,把所有的xt文件合并到一起供之后使用

4.2 准备停用词

4.2.1 什么是停用词?

对句子进行分词之后,句子中不重要的词

4.2.2 停用词的准备

常用停用词下载地址: https://github.com/goto456/stopwords

4.2.3 手动筛选和合并

对于停用词的具体内容,不同场景下可能需要保留和去除的词语不一样比如: 词语哪个,很多场景可以删除,但是在判断语义的时候则不行

4.3 问答对的准备

4.3.1 现有问答对的样式

问答对有两部分,一部分是咨询老师整理的问答对,一部分是excel中的问答对,
最终我们需要把问答对分别整理到两个txt文档中,如下图(左边是问题,右边是答案):在这里插入图片描述在这里插入图片描述

4.3.2 excel中问答对的处理

Excel中的问答对直接使用pandas就能够处理
在这里插入图片描述

五、文本分词

目标

  1. 完成停用词的准备
  2. 完成分词方法的封装

5.1 准备词典和停用词

5.1.1 准备词典

在这里插入图片描述

5.1.2 准备停用词

在这里插入图片描述

5.2 准备按照单个字切分句子的方法

在这里插入图片描述

5.3 完成分词方法的封装

lib 下创建cut_sentencepy文件,完成分词方法的构建
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、动手练习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/51498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虹科方案|HK-ATTO 和西部数据为性能要求苛刻的应用构建存储解决方案

解决方案特点 科学、医疗、工程和其他高性能环境需要同样高性能的存储。该解决方案必须存储大量数据。它还必须提供突破当今固态驱动器设备极限的速度。同时,组织需要一个软件定义的组件,使他们能够构建满足其技术和预算要求的完整存储基础架构。 昂贵的…

[附源码]Python计算机毕业设计Django动漫电影网站

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

初学者学习JS很吃力怎么办?到底该如何学习JS?

前言 觉得吃力是很正常的,首先这证明你在某些知识点上没有理解透彻,JS挺多的知识点点其实是比较抽象的,比如闭包、原型和原型链等,其次便是不会变通运用,这主要是敲代码熟练度的问题,所以我针对你这种情况…

PCA主成分分析法浅理解

ML课刚学,发现更多是对线性代数的回顾。更进一步说,统计机器学习方法就是以高数、线代和概率论为基石构筑的“一栋大厦”。下面主要沿着老师ppt的思路讲讲对PCA方法的个人理解。 这里u1Tx(i)u_1^Tx^{(i)}u1T​x(i)是x(i)x^{(i)}x(i)在单位方向向量u1u_1u…

webpack常用配置(二)之拆分配置

在《webpack常用配置(一)》里面是把关于webpack的配置放在了根目录下的webpack.config.js中,但是我们知道在开发环境下和在真正打包上线运行的环境是不一样的,所有我们需要把对webpack的配置拆分成 1.通用配置:webpack…

8.跨域请求

目录 1 一些概念 1.1 同源 1.2 同源策略 1.3 跨域 2 JSONP 2.1 原理 2.2 jQuery中的JSONP 2.2.1 默认情况 2.2.2 自定义键与函数名称 2.2.3 淘宝搜索建议请求 1 一些概念 1.1 同源 两个页面的 协议,域名与端口都相同,则两个页面…

[附源码]Python计算机毕业设计Django高校实验室仪器设备管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

大数据(9h)FlinkSQL双流JOIN

文章目录1、环境2、Temporal Joins2.1、基于处理时间(重点)2.1.1、设置状态保留时间2.2、基于事件时间3、Lookup Join(重点)4、Interval Joins(基于间隔JOIN)重点是Lookup Join和Processing Time Temporal …

【Ubuntu】修改ubuntu和windows双系统启动顺序

目录一、问题描述二、背景知识1. GRUB是什么2. GRUB配置文件3./etc/default/grub 主配置文件二、问题分析三、解决方案1. 修改grub主配置文件2. 更新grub配置文件一、问题描述 UbuntuWindows双系统默认使用GRUB作为引导管理器,而且通常默认启动Ubuntu。这样过于死板…

用Python分析了30000+《独行月球》影评数据,看看观众们怎么说~

文章目录🏳️‍🌈 1. 导入模块🏳️‍🌈 2. Pandas数据处理2.1 读取数据2.2 数据大小2.3 查看索引、数据类型和内存信息🏳️‍🌈 3. Pyecharts数据可视化3.1 《独行月球》评分分布-13.2 《独行月球》评分分布…

TypeScript学习笔记

TypeScript学习笔记 TypeScript 与 JavaScript 的区别 TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法。TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译。TypeScript 文件的后缀名 .ts (.ts&am…

Milvus的索引方式

索引方式: FLAT:准确率高, 适合数据量小 暴力求解相似。 IVF-FLAT:量化操作, 准确率和速度的平衡 IVF:inverted file 先对空间的点进行聚类,查询时先比较聚类中心距离,再找到最近的N个点。 IV…

redis5.0集群搭建(两台服务器)

文章目录1. 前言2. 配置两台机器内网互联3. redis安装4. redis集群5.0之前和5.0之后版本的区别4.1 redis5.0之前的版本创建集群4.2 redis5.0之后的版本创建集群4.3 redis5.0之前的版本需要依赖ruby环境5. redis5.0集群搭建5.1 创建redis-cluster目录5.2 将之前的redis.conf拷贝…

windbg使用教程

下载 https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools 安装,打开exe 我选择了下载 打开X64 Debuggers And Tools-x64_en-us.msi 要安装对应系统位数 不然打不开 安装完成后没有反应。还以为我弄错了呢&#…

【学习笔记】深度学习入门:基于Python的理论与实现-神经网络的学习

CONTENTS四、神经网络的学习4.1 从数据中学习4.2 Loss function4.3 数值微分4.4 梯度4.5 学习算法的实现四、神经网络的学习 4.1 从数据中学习 神经网络的特征就是可以从数据中学习。所谓“从数据中学习”,是指可以由数据自动决定权重参数的值。利用特征量和机器学…

HBase 开发:使用Java操作HBase 第1关:创建表

为了完成本关任务,你需要掌握:1.如何使用Java连接HBase数据库,2.如何使用Java代码在HBase中创建表。 如何使用Java连接HBase数据库 Java连接HBase需要两个类: HBaseConfigurationConnectionFactoryHBaseConfiguration 要连接HBase…

SPARKSQL3.0-Spark兼容多版本Hive源码分析

一、前言 阅读本节需要先掌握Catalog基础知识 Spark对Hive的所有操作都是通过获取Hive元数据[metastore]帮助spark构建表信息从而调用HDFS-API对原始数据的操作,可以说Spark兼容多版本Hive就是在兼容Hive的Metastore 二、源码分析 在catalog一节中我们知道spark…

二.maven常用功能点

maven常用功能点一:分模块开发设计二:聚合三:继承1.依赖的继承2.可继承的内容3.聚合与继承的区分四:属性1.自定义属性2.内置属性3.Setting属性4.java系统属性5.环境变量属性五:java配置文件引用pom属性六:多…

基于PHP+MySQL大学生心理健康管理系统的设计与实现

随着时代的发展,大学生的数量与日预增但是相对的也出现了很多心理问题,大学生自杀等心理问题引起的问题屡见不鲜如何能过更好的培养大学生正确的心理健康问题是现在很多大学多面临的一个重要的问题。本系统主要是对共享自行车的信息进行管理。该系统的基本功能包括用户登录,用户…

云小课|云小课带你玩转可视化分析ELB日志

阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击此处。 云日志服务支持可视化查看日志,当ELB日志接入云日志服务后&a…