开发者学堂课程【3节课带你走进云小蜜产品 :简单对话场景搭建与云小蜜接口集成(一)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/739/detail/13115
简单对话场景搭建与云小蜜接口集成(一)
内容介绍:
一.对话机器人的基本架构
二.多轮对话的概念
三.云小蜜会话接口的使用讲解
四.用云小蜜来搭建一个对话场景
五.用函数能力来扩展机器人对话能力
六.总结
前言
主讲的题目是简单对话场景搭建与云小蜜接口集成,内容主要包括两个部分。第一个部分是如何使用云小密进行一个简单的对话场景搭建,也就是如何使用小米的对话开发平台的开发功能。第二个部分是关于如何集成云小蜜的会话接口,这里会详细介绍如何将开发者自己的应用与云小蜜的应用结合起来。
课程大纲主要包括这么几个部分,首先会介绍一下对话机器人的基本架构,让开发者能够从总体上有一个感官,自己要开发一个什么价格的应用。然后第二个部分,会介绍一下什么叫做多轮对话,让大家有一个简单的初步的了解。第三个部分,会介绍云小蜜会话接口的使用,包括一些讲解。第四个部分就会引导大家来使用林小蜜的产品,用这个对话开发平台来开发一个简单的对话场景。第五个部分,讲解如何使用云小蜜里自带的函数的能力来扩展机器人的对话能力。最后会做一个总结,总结讲的内容,以及引导大家如何利用自己的想象力来赋予对话机器人更多的能力。
一.对话机器人的基本架构
首先,讲解一下对话机器人的基本架构,一般常用的对话机器人基本架构如图所示:
假设是用户发起语音请求,首先,我们请求 ASR 系统,将用户的语音转成文本,然后我们将文本内容再发给Chatbot,Chatbot 这里会做用户语言的理解,然后做一个答案的生成。然后再将生成回复的文本转给 TTS 系统,TTS会做一个语音合成,然后将最终合成的语音返回给用户。
其实我们可以看到在 Chatbot 里,通常也会有三个步骤,分别是 NLU、DM、NLG,就是自然云理解、对话管理及自然云生成。
也就是说,当用户的请求从语音转成文本之后给 Chatbot ,Chatbot 首先会试图理解这句话是什么意思,然后做一个对话管理,来决定他下一步要采取什么样的措施,采取什么样的动作。然后第三步根据这个动作来生成一个回复,最后将回复的文本给 TTS,再交由语音,再转成语音交回给用户。
所以如果开发者开发一个,比如说类似对话机器人小程序或者 H5 页面的时候,可能开发的页面是在这个层次,然后用户语音的请求。在 H5 页面输入一个云请求,这时语音的信号,无论是流逝的,还是一个短文件传给系统,然后转成文本,再将文本作为输入请求输入给 Chatbot 的这个系统。这个系统接收到之后,在内部做一个处理,然后它的输出也是一段答案的文本,然后你再调用 TTS 系统生成语音转给用户,这个就是一整个的机器人架构。
然后,云小蜜这里所扮的角色其实就是这个 Chatbot 的角色,云小蜜内部会包含 NLU、DM、NLG 的步骤,它的输入输出分别是以文本形式的用户请求,以及以文本形式的机器人的答案,所以在整个的这次训练营要做的这个系统当中,云小蜜所扮演的角色就是 Chatbot 的部分。
二.多轮对话的概念
什么是多轮对话?首先看这个截图,
黄色部分是人说的话,白色部分是机器人的回复。
如果用户说“买火车票”,机器人就会问“亲从哪儿出发”
然后用户回答“北京”,机器人就会继续问“你想从哪天出发”
用户说“明天”,机器人提前继续问“亲想坐火车从北京到哪里呀”
如果说“杭州”,这时机器人就为他找到了从北京到杭州明天出发的火车票。
这个其实就是一个典型的多轮对话。
1. 对话上下文
多轮对话的典型特征区别于普通的单轮对话,在于它是多轮的。它能使对话的双方都能基于对话的上下文来做一个理解。
比如说,这里当用户说“北京”这两个字的时候,然后机器人就能知道用户说的“北京”是在回答上一个问题的“从哪儿出发”,因为这是一个多轮对话。如果是一个单轮对话,用户说了一个“北京”,机器人可能会不理解。其实作为一个人也是这样的,如果两个人,一个人上来就说“北京”,那么很难理解“北京”是什么意思,但是如果是带着上下文,就知道这是在继续买火车票的对话。并且是在回答“从哪儿出发”这个问题。
所以多轮对话当中很重要的一个概念,就是对话上下文的概念。
这个对话上下文包含我们对话双方的对话历史,以及当前对话进行到哪一个状态。
⑴对话的历史
⑵当前对话的状态什么叫进行到哪一个状态?比如说,我现在问你“哪儿出发”从,然后你回答了“北京”。那么这个步骤的状态就相当于是我在问你一个一个信息,而你在回答我这个信息。当你回答我这个信息之后,我根据当前的对话状态,我会判断出来你已经回答了“从哪儿出发”这个问题,那么当前状态就是告诉我应该问你下一个问题了,下一个问题是什么,也就是“你哪天出发”。所以这就是对话上下文中保留的一些信息。
但是在多轮段当中,我们用什么作为标识来维护和区分当前的对话上下文,这个时候就要介绍一个 session 的概念。
2.通过 Session 来维护对话上下文· Sessionld 作为标识 Session 可以理解为区分人际对话的的一个标识、一个单位。
假如我们用 Session 来描述多轮的上下文的一个对话。然后,我们赋予它一个 Sessionld,也就是当这个 Sessionld 保持不变的情况下,那么你和机器人就一直处于这一个多轮对话当中,也就是机器人会一直记着你在 Session 当中的上下文。这就是一个多轮对话当中 Session 的概念,有了 Sessionld 我们才能让机器人知道,当前用户说话是在哪一个 Session 当中。然后又该用什么样的上下文去理解用户这一轮的对话。