如何搭建一个AI对话系统?
AI客服可以说是现在AI应用得比较成熟的应用了,而AI客服只是AI对话系统里的一种类型而已,今天就来跟大家聊聊AI对话系统。
本文介绍的思路:
- AI对话系统有哪些分类、主要技术和概念?
- AI对话系统的主要工作流程是怎样的?
- 实现一个AI对话系统的主要步骤有哪些?
一、AI对话系统的分类
对话系统主要分为3大类型:任务型、问答型、闲聊型。
(1)任务型
任务型是为了完成某特定的任务,比如说订机票,不仅需要应答用户,还需要去查询机票情况,和执行相应的动作。
(2)问答型
问答型主要是为了能解答用户的问题,相当于维基百科,比如说火车票怎么退票、坐飞机需要注意什么事项,通常仅需要回答问题,不需要执行任务。
(3)闲聊型
闲聊型主要是能聊下去就行,天马行空的聊都无所谓。
小结下3类型对话系统的特点:
- 任务型:有任务目标,需要把请求参数化。比如说定机票:帮我订一张明天深圳到北京的机票。意图:订机票;词槽:时间、出发地、目的地。(还不知道什么是意图和词槽没关系,后面会详细讲)因此参数化表达就是:帮我订一张【时间】从【出发地】到【目的地】的机票
- 问答型:有任务目标,但不需要把请求参数化。比如说:怎么办理火车票退票。机器只需要从知识库中找到跟这句话最相似的问题,然后把答案提供给用户就行。
- 闲聊型:是开放的,没有任务,也没有限定的回答。
当然有时一个对话系统不只是包含单一的类型,可能是多种类型组合在一起的。
二、单轮对话和多伦对话
1. 单轮对话
单轮对话的主要特点:一问一答,不依赖上下文,一般从知识库里检索问题答案,在问答型和闲聊型系统比较常见。
评判单轮对话好坏通常有3个指标:召回率、准确率、问题解决率。
(1)召回率
这里需要注意的是,机器回答了回答了多少问题,但是回答的不一定是正确的,因此就会有下面准确率的指标。
(2)准确率
对于闲聊型的机器人来说,准确率不是它的指标,因为也很难有标准哪些是正确的,哪些是错误的。
但是对于任务型和问答型机器人,这个指标就非常关键,因为我们宁愿机器不回答,也不要它给一个错误的答案。
(3)问题解决率
成功解决的问题数=(总的提问数 – 转人工客服的问题数 – 客户不满意的问题数)
单轮对话主要的难点有哪些呢?
语义理解的细微差异
我们日常口语非常的多样,而且很难标准化,可能相似的句子,语义完全不一样,机器理解这样的语句是非常困难的。
自动学习优化知识库
人工去补充知识库是工作量非常大的事情,而且能做的非常有限,因此还是需要机器自主学习优化,根据历史对话,补充和完善知识库。
如上图,机器一开始不知道“詹皇”是什么意思,那经过对话后,机器就学会了“詹皇”就是“詹姆斯”。
2. 多轮对话
多轮对话的主要特点:多轮问答,上下文关联,需要记忆的能力,在任务型系统中比较常见。
比如说一个订票的任务,机器人需要获取必要的三个信息:时间、出发地、目的地,在没有获取到这3个完整的信息前,机器都会继续的跟用户进行沟通确认。
多轮对话的主要难点有哪些呢?
信息自动补充:
特别是在任务型的对话中,不是所有的信息都是从跟用户的对话中获取的,而是大多数的信息都是基于用户的身份和所处的场景获取的。
比如说:订机票,我们需要用户的身份信息,但可能不需要在对话中问用户,而是之前可能就有记录。比如说出发地,机器可以根据定位获取,而不需要问用户。
中途打断回溯:
如上图,订机票的任务被打断后,去做了个订外卖的任务,然后回来用户说“订明天上午11点的机票”,这个时候机器人需要记住之前用户所说的出发地和目的地,而不是重新问用户。
指代识别:
如上图,用户说“第二个吧”,机器需要知道用户指的是“10:30,东方航空公司”
三、对话理解
在对话系统中,实现对话理解的方式通常有两种:语义解析、语义匹配。
下图就是我们本章主要讨论的内容:
1. 语义解析
在讲语义解析之前,我们先来讲一个概念“意图”。
意图是指用户潜在的目的或表达的诉求,假设用户说:帮我订一张深圳到北京的机票,那意图就是:订机票。
因此机器识别到用户的订机票的意图之后,马上就转入到了订机票的任务中。
那订机票需要必备那些信息呢?时间、出发地、目的地是必填。
这里又引入了另外一个概念“词槽”。词槽分为必填槽和非必填槽,我们把用户说的话,按一定的规则填到相应的词槽里,只有把必填的词槽填完了,才会执行意图的相关指令。
也就是说机器人先要识别用户的意图,然后根据要达到这个意图需要获取哪些信息来询问用户,直到获取完所有必备的信息。
介绍完意图和词槽后,我们继续回来讨论语义解析。
语义解析:把语句解析为结构化的语义表示。语义解析通常又分为三种实现方式:语义模式、传统的机器学习、深度神经网络。
语义模式(基于意图和词槽识别):
人工定义语义模式,用以解析用户输入的语句。
识别意图:根据语句识别用户的意图。
检测词槽:检测词槽关键信息。
传统机器学习模式:
通过建模为序列标注或分类问题,解析用户输入的语句。
通过分类问题获得输入语句的意图;通过序列标注识别输入语句的词槽。
把语句输入到机器学习系统之后,会输出属于各种意图的概率,然后确定意图,标注各词槽的类型。
深度神经网络模式:
基于深度神经网络的模式可同时实现意图和词槽的识别,但需要海量的数据去训练。
三种模式的优劣势:
2. 语义匹配
通过语义相似度计算匹配最接近的实例,来理解用户输入的语句。
首先将输入语句表示为便于匹配的语义形式;然后计算输入语句和数据库中语句的相似度;相似度最高的就是最匹配的语句。
四、对话系统的工作流程
前面我们已经介绍完了对话系统的类型、关键概念和技术,我们把前面介绍的内容串联起来,就是这一章要讲的话系统的主要工作流程。
1. 主要工作流程
用户输入语句:比如说“帮我预定从深圳到北京的车票”。
对话的理解:理解的实现方式有语义解析和语义匹配。
对话管理:因为可能不是一次的问答就能解决问题了,比如说用户输入的语句中只有出发地和目的地,还没有提到时间,因此机器还要去问用户出发时间;比如说我们前面提到的用户在订机票的任务中,突然转到了订外卖,然后再回来订机票,因此机器要学会管理前面未完成的任务。
资源检索与任务执行:机器回答问题和执行动作需要跟外部的资源连接,比如说订机票,需要到机票系统去查询航班和余票情况,最后还要执行订票的动作。
外部知识服务:指的就是机器完成任务所需要的外部资源。
2. 理解和回应
从另外一个维度,对话系统又可以分为两大块:如何理解、如何应答。
如何理解?主要有两种方式:语义解析、语义匹配(前面已经讲过就不再重复了)。
如何应答?应答才是交流中最直观的表现方式,能不能更加接近人的交流方式,就需要在应答上表现了。应答主要又分为:词槽澄清、回复、引导。
词槽澄清:
假设用户问:詹皇今天得了多少分?
机器人听不懂“詹皇”是谁,它就会问:詹皇是谁?。这就是词槽澄清。
回复:
即机器理解了用户意图之后的答复。但这里需要注意的是,触发这个答复的条件是什么?比如说订机票就需要知道时间、出发地和目的地这3个条件。回复话术又是怎样的?可爱点的回复,还是严肃点的回复,或者是要二次确认等等。
引导:
引导是指完成了当前的任务之后,机器人可以引导用户做其他的事情。比如说订完机票,机器人可以问,需要给你订酒店吗?这样是不是显的更加的接近人的交流了。
当然引导也需要主要几个点:
- 什么时候才会触发引导?当前任务执行完还是怎样。
- 引导做什么?是引导去订酒店还是引导去订外卖?
- 引导的话术是什么?我还可以为你订酒店、你需要订酒店吗。
五、实现一个对话系统的主要步骤
下面以一个订机票对话系统为例,串联实现一个对话系统的整体步骤。
1. 定义对话系统
确定场景和边界,目标是什么,需要哪些功能,需要哪些信息和资源,还有确定不做什么。
订机票对话系统的定义:
2. 富集数据资源
所需信息资源:
穷举完成这个系统所需要的信息和字段。
词槽词典:
设置词槽的属性,必填或非必填,列举所有词槽的词典。
从上图我们列举了一些订机票的词槽:日期、出发地、目的地、特征词等。
词典是什么呢?词典就是词槽下所有有可能的槽值,比如出发地词槽的词典就是所有的城市。
语料:
收集尽可能多的语料,语料越多,系统效果越好。
下面就以请求预定机票的为例,列举了一下语料。
3. 写故事线
我们先写一条愉悦的故事线,中途没有异常的情况。
然后再在各个环节补充异常情况,比如说:
- 听不清用户的话,需要澄清;
- 中途用户转换了其他任务,需要记忆相应的信息;
- 用户突然改变行程,比如说:不了,还是帮我订后天的机票;
- 等等各种异常情况的处理方案。
4. 抽取对话流程
根据故事线,抽取出主要的对话流程。
当然,这只是愉悦路径的流程,你还可以根据出现异常情况,不断的加入各种分支,完成整个流程。
5. 开发/训练调优
在前面定义好系统,收集完所需信息和资源,确定好对话流程后,接下来就可以进入开发了。
当然如果你没有这么强大的开发能力,现在也有一些开放的平台可以快速的实现你的对话系统。比如说百度的UNIT开放平台,讯飞的AIUI开放平台等,都支持快速的实现你的对话系统,可以去体验一下。
开发完之后,就开始用数据去训练,不断调优,完善你的系统。
5. 上线后不断优化迭代
优化其实是一个持续的过程,上线后我们需要根据用户的反馈或日志的分析,找出问题不断优化。
对话系统常见的优化思路:
- 找出机器识别错误的意图,分析错误的原因;
- 找出机器没有覆盖的意图,分析是否属于定义的功能范围内,若是则后续需要添加;
- 对于高频使用的意图,不断完善体验;等等。
本文主要是参考了百度云智学院的教学内容。
时间:2019-08-13 12:03 来源: 转发量:次
声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。
相关文章:
相关推荐:
网友评论: