自然语言处理系列六十六》对话机器人项目实战》对话机器人原理与介绍
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
文章目录
- 自然语言处理系列六十六
- 对话机器人项目实战》对话机器人原理与介绍
- 对话机器人项目代码实战
- 总结
自然语言处理系列六十六
对话机器人项目实战》对话机器人原理与介绍
对话机器人是一个用来模拟人类对话或聊天的计算机程序,本质上是通过机器学习和人工智能等技术让机器理解人的语言。它包含了诸多学科方法的融合使用,是人工智能领域的一个技术集中演练营。在未来几十年,人机交互方式将发生变革。越来越多的设备将具有联网能力,这些设备如何与人进行交互将成为一个挑战。自然语言成为适应该趋势的新型交互方式,对话机器人有望取代过去的网站、如今的App,占据新一代人机交互风口。在未来对话机器人的产品形态下,不再是人类适应机器,而是机器适应人类,基于人工智能技术的对话机器人产品逐渐成为主流。
对话机器人从对话的产生方式,可以分为基于检索的模型(Retrieval-Based Models)和生成式模型(Generative Models),基于检索我们可以使用搜索引擎Solr Cloud或ElasticSearch的方式来做,基于生成式模型我们可以使用的Seq2Seq算法来实现,同时我们可以加入强化学习的思想来优化Seq2Seq算法。下面我们就对话机器人的原理和源码实战分别来讲一下。
19.1.1 对话机器人原理与介绍
对话机器人可分为三种类型:闲聊机器人、问答机器人、任务机器人。我们分别来讲一下其原理。
1. 闲聊机器人
闲聊机器人的主要功能是同用户进行闲聊对话,如微软小冰、微信小微,还有较早的小黄鸡等。与闲聊机器人聊天时,用户没有明确的目的,机器人也没有标准答案,而是以趣味性回答取悦用户。随着时间推移,用户的要求越来越高,他们希望聊天机器人能够具有更多功能——而不仅仅是谈天唠嗑接话茬。同时,企业也需要不断对聊天机器人进行商业化探索,以期实现更大的商业价值。
目前聊天机器人根据对话的产生方式,可以分为基于检索的模型(Retrieval-Based Models)和生成式模型(Generative Models)。
1)检索的模型(Retrieval-Based Models)
基于检索的模型有一个预先定义的回答集,我们需要设计一些启发式规则,这些规则能够根据输入的问句及上下文,挑选出合适的回答。
基于检索的模型的优势:
(1)答句可读性好
(2)答句多样性强
(3)出现不相关的答句,容易分析、定位bug
但是它的劣势在于:需要对候选的结果做排序,进行选择
2)生成式模型(Generative Models)
生成式模型不依赖预先定义的回答集,而是根据输入的问句及上下文,产生一个新的回答。
基于生成式模型的优势:
(1)端到端的训练,比较容易实现
(2)避免维护一个大的Q-A数据集
(3)不需要对每一个模块额外进行调优,避免了各个模块之间的误差级联效应
但是它的劣势在于:难以保证生成的结果是可读的,多样的。
聊天机器人的这两条技术路线,从长远的角度看目前技术还都还处在山底,两种技术路线共同面临的挑战有:
(1)如何利用前几轮对话的信息,应用到当轮对话当中
(2)合并现有的知识库的内容进来
(3)能否做到个性化,千人千面。这有点类似于我们的信息检索系统,既希望在垂直领域做得更好;也希望对不同的人的query有不同的排序偏好。
从开发实现上,基于检索的机器人可以使用Solr Cloud或ElasticSearch,把准备好的问答对当成两个字段存到搜索索引了,搜索的时候可以通过关键词或者句子去搜索问题那个字段,然后得到一个相似问题的答案候选集合。之后我们可以根据用户的历史聊天记录或者其它的业务数据得到用户画像数据,针对每个用户得到个性化的回答结果,把最相关的那个答案回复给用户。基于生成模型可以使用seq2seq+attention的方式来实现,seq2seq全称Sequence to Sequence,是一个Encoder–Decoder 结构的网络,它的输入是一个问题序列,输出也是一个答案序列,Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定长度的向量变成可变长度的目标的信号序列。而强化学习应用到Seq2Seq可以使多轮对话更持久。
2. 问答机器人
当下的智能客服是对话机器人商业落地的经典案例。各大手机厂商纷纷推出标配语音助手,金融、零售、通信等领域相继接入智能客服辅助人工……
问答机器人的本质是在特定领域的知识库中,找到和用户提出的问题语义匹配的知识点。
当顾客询问有关商品信息、售前、售后等基础问题,问答机器人能够给出及时而准确的回复,当机器人不能回答用户问题时,就会通过某种机制将顾客转接给人工客服。因此,拥有特定领域知识库的问答机器人在知识储备上要比闲聊机器人更聪明、更专业、更准确,说它们是某一领域的专家也不为过。
针对具体情况选择相应的问答型对话解决方案,包括:
基于分类模型的问答系统;
基于检索和排序的问答系统;
基于句向量的语义检索系统。
基于分类模型的问答系统将每个知识点各分一类,使用深度学习、机器学习等方法,效果较好。但需要较多的训练数据,且更新类别时,重新训练的成本较高,因此更适合数据足够多的静态知识库。
基于检索和排序的问答系统能实时追踪知识点的增删,从而有效弥补分类模型存在的问题。但仍然存在检索召回问题,假如用户输入的关键词没有命中知识库,系统就无法找到合适的答案。
更好的解决方案是基于句向量的语义检索。通过句向量编码器,将知识库数据和用户问题作为词编码输出,基于句向量的语义检索能实现在全量数据上的高效搜索,从而解决传统检索的召回问题。
3. 任务机器人
任务机器人在特定条件下提供信息或服务,以满足用户的特定需求,例如查流量、查话费、订票、订餐、咨询等。由于用户需求复杂多样,任务机器人一般通过多轮对话明确用户的目的。想要知道任务机器人是如何运作的,我们需要引入任务机器人的一个重要概念——动作(Dialog Act)。
任务型对话系统的本质是将用户的输入和系统的输出都映射为对话动作,并通过对话状态来实现上下文的理解和表示。例如,在机器人帮助预约保洁阿姨的场景下,用户与机器人的对话对应不同的动作。这种做法能够在特定领域下降低对话难度,从而让机器人执行合适的动作。
另外,对话管理模块(Dialog Management)是任务机器人的核心模块之一,也是对话系统的大脑。传统的对话管理方法包括基于FSM、Frame、Agenda 等不同架构的,各适用于不同的场景。
基于深度强化学习的对话管理法,通过神经网络将对话上下文直接映射为系统动作,如此更加灵活,可通过强化学习的方法进行训练,但需要大量真实的、高质量标注的对话数据来训练,只适用于有大量数据的情况。
对话机器人的应用:
对话机器人在人类的“苛求”下越来越智能,有人甚至预言在未来五到十年耗时耗力的沟通将会被机器人取代。对话机器人的应用实践正在逐步证明这一点。
目前,对话机器人主要适用于三类场景:
1)自然对话是唯一的交互方式
车载、智能音箱、可穿戴设备。
2)用对话机器人替代人工
在线客服、智能IVR、智能外呼。
3)用对话机器人提升效率和体验
智能营销、智能推荐、智能下单。
我们可以通过在线营销转化需求度和在线交互需求度两个维度来考量适合对话机器人落地的领域。不过,在技术上来讲,让机器真正理解人类语言仍然是一个艰难的挑战。对于搭建对话机器人,也许可以参考以下建议:
选择合适的场景并设定产品边界;
积累足够多的训练数据;
上线后持续学习和优化;
让用户参与反馈;
让产品体现出个性化。
下面我们基于生成模型的Seq2Seq+attention的方式来实现聊天机器人。
对话机器人项目代码实战
对话机器人项目代码实战内容可参见
《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】书籍。
更多的技术交流和探讨也欢迎加我个人微信chenjinglei66。
总结
此文章有对应的配套新书教材和视频:
【配套新书教材】
《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
新书特色:本书从自然语言处理基础开始,逐步深入各种NLP热点前沿技术,使用了Java和Python两门语言精心编排了大量代码实例,契合公司实际工作场景技能,侧重实战。
全书共分为19章,详细讲解中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注、文本相似度算法、语义相似度计算、词频-逆文档频率(TF-IDF)、条件随机场、新词发现与短语提取、搜索引擎Solr Cloud和Elasticsearch、Word2vec词向量模型、文本分类、文本聚类、关键词提取和文本摘要、自然语言模型(Language Model)、分布式深度学习实战等内容,同时配套完整实战项目,例如对话机器人实战、搜索引擎项目实战、推荐算法系统实战。
本书理论联系实践,深入浅出,知识点全面,通过阅读本书,读者不仅可以理解自然语言处理的知识,还能通过实战项目案例更好地将理论融入实际工作中。
《分布式机器学习实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
新书特色:深入浅出,逐步讲解分布式机器学习的框架及应用配套个性化推荐算法系统、人脸识别、对话机器人等实战项目。
【配套视频】
推荐系统/智能问答/人脸识别实战 视频教程【陈敬雷】
视频特色:把目前互联网热门、前沿的项目实战汇聚一堂,通过真实的项目实战课程,让你快速成为算法总监、架构师、技术负责人!包含了推荐系统、智能问答、人脸识别等前沿的精品课程,下面分别介绍各个实战项目:
1、推荐算法系统实战
听完此课,可以实现一个完整的推荐系统!下面我们就从推荐系统的整体架构以及各个子系统的实现给大家深度解密来自一线大型互联网公司重量级的实战产品项目!
2、智能问答/对话机器人实战
由浅入深的给大家详细讲解对话机器人项目的原理以及代码实现、并在公司服务器上演示如何实际操作和部署的全过程!
3、人脸识别实战
从人脸识别原理、人脸识别应用场景、人脸检测与对齐、人脸识别比对、人脸年龄识别、人脸性别识别几个方向,从理论到源码实战、再到服务器操作给大家深度讲解!
自然语言处理NLP原理与实战 视频教程【陈敬雷】
视频特色:《自然语言处理NLP原理与实战》包含了互联网公司前沿的热门算法的核心原理,以及源码级别的应用操作实战,直接讲解自然语言处理的核心精髓部分,自然语言处理从业者或者转行自然语言处理者必听视频!
人工智能《分布式机器学习实战》 视频教程【陈敬雷】
视频特色:视频核心内容有互联网公司大数据和人工智能、大数据算法系统架构、大数据基础、Python编程、Java编程、Scala编程、Docker容器、Mahout分布式机器学习平台、Spark分布式机器学习平台、分布式深度学习框架和神经网络算法、自然语言处理算法、工业级完整系统实战(推荐算法系统实战、人脸识别实战、对话机器人实战)。
上一篇:自然语言处理系列六十五》神经网络算法》GAN生成对抗网络算法
下一篇:自然语言处理系列六十七》搜索引擎项目实战》搜索引擎项目概述
相关文章:
自然语言处理系列六十六》对话机器人项目实战》对话机器人原理与介绍
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列六十六对话机器人项目实战》对话机器人原理与介…...

解码数字化转型顶层规划(附236页PPT:xx企业数字化转型项目顶层规划方案)
写在前面:PPT分享见后文~ 企业数字化转型顶层规划的制定是一个系统性的过程,需要综合考虑多个方面。以下是制定企业数字化转型顶层规划的一些关键步骤和要点,以供参考: 1、明确数字化转型战略定位: 将数字化转型作为…...

无需温度修正,测值准确可靠 GEO ACxxxx型振弦式锚索测力计
无需温度修正,测值准确可靠 GEO ACxxxx型振弦式锚索测力计 精准稳定的振弦式传感器,ACxxxx型振弦式锚索测力计,是长期监测预应力锚索压力的不二选择。采用特制应变计作为传感部件,无需温度修正,测值准确可靠。该传感器…...
shell脚本【一、 特殊变量/子串/特殊扩展变量/父子shell/内置命令、外置命令】
特殊变量 位置参数的获取 $0 获取shell脚本文件名,以及脚本路径;$n 获取shell脚本的第n个参数,n在1~9之间,如$1$2$9,大于9则需要写 ${10};$# 获取执行的shell脚本后面的参数总个数;$* 获取she…...

服务器禁用远程(22)
vim /etc/ssh/sshd_config 修改 ListenAddress 0.0.0.0 为ListenAddress localhost 修改完后 重启一下sshd systemctl restart sshd 修改就生效了...
Docker 进阶构建:镜像、网络与仓库管理
目录 三. docker镜像构建 1. docker镜像结构 2. 镜像运行的基本原理 3. 镜像获得方式 4. 镜像构建 5. Dockerfile实例 6. 镜像优化方案 6.1. 镜像优化策略 6.2. 镜像优化示例:缩减镜像层 6.3. 镜像优化示例:多阶段构建 6.4. 镜像优化示例:使用最精简镜像 四. docke…...
opencv学习:图像轮廓识别及代码实现
图像轮廓 1.获取图像轮廓 cv2.findContours() 函数是 OpenCV 库中用于检测图像中轮廓的函数。它可以检测到图像中所有连通区域的边界,并返回这些轮廓的列表。从 OpenCV 3.4 版本开始,这个函数的返回值和参数有所变化,以下是详细的参数说明&…...
存储课程学习笔记2_借助内核插入一个文件系统,用文件夹下测试文件系统(mount文件系统到目录下是入口)
裸盘是如何能达到我们日常操作目录那样,按目录依次访问文件等,实际上就是基于裸盘上,用文件系统进行控制。 0:总结。 0:mount是入口,一个裸盘先赋予文件系统,然后mount后才可以用。 1…...
chunk-vendors.js 文件过大导致页面加载缓慢解决方案
1、路由懒加载 在 Webpack 中,我们可以使用动态 import语法来定义代码分块点 (split point): import(./Foo.vue) // 返回 Promise如果您使用的是 Babel,你将需要添加 syntax-dynamic-import 插件,才能使 Babel 可以正确地解析语…...

【Postgresql】地理空间数据的存储与查询,查询效率优化策略,数据类型与查询速度的影响
注:使用postgresql数据库会用到PostGIS 扩展。 一、安装PostGIS 扩展 在 PostgreSQL 中遇到错误 “type geography does not exist” 通常意味着你的 PostgreSQL 数据库还没有安装 PostGIS 扩展,或者 PostGIS 扩展没有被正确地安装在你的数据库中。geo…...
设计模式应用
单例模式 RunTime类是单例模式的体现,getRunTime()方法会返回一个唯一的实例。确保程序中只有一个唯一的RunTime类对象建造者模式 StringBuilder和StringBuffer是建造者模式的体现工厂模式 Calender类中Calender.getInstance()方法 DriverManager.getConnection()方…...
Android开机启动流程
Android开机启动流程 systemReady启动"added application" frameworks/base/services/java/com/android/server/SystemServer.java mainnew SystemServer().run();startBootstrapServicesmActivityManagerService ActivityManagerService.Lifecycle.startService(…...

数据结构基本知识
一、什么是数据结构 1.1、组织存储数据 ---------》内存(存储) 1.2、研究目的 如何存储数据(变量,数组....)程序数据结构算法 1.3、常见保存数据的方法 数组:保存自己的数据指针:是间接访问已经存在的…...

浙大数据结构:02-线性结构4 Pop Sequence
这道题我们采用数组来模拟堆栈和队列。 简单说一下大致思路,我们用栈来存1234.....,队列来存输入的一组数据,栈与队列进行匹配,相同就pop 机翻 1、条件准备 stk是栈,que是队列。 tt指向的是栈中下标,fr…...
java开发,记录一些注解和架构 pojo、entity、respository
最近接了一个项目,说是项目其实也不算是项目,因为是把这个项目赛到其他项目中的。 熟悉一些这个项目的功能,梳理了一下,在代码开发中主要关心pojo、entity、respository、controller、service。 在这里主要记录前3个的流程与作用…...

MatLab基础学习01
MatLab基础学习01 1.基础入门2.MatLab的数据类型2.1数字2.2字符串2.3矩阵2.4.元胞数组2.5结构体 3.MatLab的矩阵的操作3.1矩阵定义与构造3.2矩阵的下标取值 4.MatLab的逻辑流程4. For循环结构4.2 While循环,当条件成立的时候进行循环4.3 IF end 1.基础入门 matlba必…...

第 5 章多视图几何
本章讲解如何处理多个视图,以及如何利用多个视图的几何关系来恢复照相机位置信息和三维结构。通过在不同视点拍摄的图像,我们可以利用特征匹配来计算出三维场景点以及照相机位置。本章会介绍一些基本的方法,展示一个三维重建的完整例子&#…...

IOS 开发者账号注册流程
注册步骤 准备资料 营业执照 法人信息(电话、身份证信息) 注册邮箱(公司邮箱) 开发者信息(电话、身份证信息、邮箱)1. 注册AppleID 注册地址: https://appleid.apple.com/account 填写表单信…...
netty之NioEventLoop和NioEventLoopGroup
类结构图 NioEventLoopGroup #mermaid-svg-5g1iVjr5oyhqXK92 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5g1iVjr5oyhqXK92 .error-icon{fill:#552222;}#mermaid-svg-5g1iVjr5oyhqXK92 .error-text{fill:#55222…...

睿考网:中级经济师考试题型有哪些?
中级经济师考试时间在每年的11月份,2024年考试时间定于11月16-17日,考试科目为《经济基础知识》与《专业知识与实务》两科。 《专业知识与实务》有10个专业,分别是工商管理、知识产权、农业经济、财政税收、金融、保险、运输经济、人力资源管…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...

Xcode 16 集成 cocoapods 报错
基于 Xcode 16 新建工程项目,集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...
【java】【服务器】线程上下文丢失 是指什么
目录 ■前言 ■正文开始 线程上下文的核心组成部分 为什么会出现上下文丢失? 直观示例说明 为什么上下文如此重要? 解决上下文丢失的关键 总结 ■如果我想在servlet中使用线程,代码应该如何实现 推荐方案:使用 ManagedE…...

Qt的学习(二)
1. 创建Hello Word 两种方式,实现helloworld: 1.通过图形化的方式,在界面上创建出一个控件,显示helloworld 2.通过纯代码的方式,通过编写代码,在界面上创建控件, 显示hello world; …...