定义对话系统
一、定义对话系统的方法
以下方法论其实就是在定义对话系统,后面的
确定场景边界
梳理业务要素和知识库
撰写故事线
抽取对话流程
都是下面方法论的具体展开。
二、确定场景边界
1.创建机器人定位(机器人的性格定位)
2.明确机器人的产品场景
明确产品的目标人群。
比方说:懂球帝是为了球迷提供的
搞清楚产品给目标人群带来了哪些服务/提供哪些产品。
比方说:携程提供在线票务购买服务,懂球帝提供最新的足球咨询也可以购买足球装备等
了解用户是什么类型的人,了解我们产品带给他们带来哪些服务,解决什么痛点,那么整个逻辑就是这款机器人。
example:
火车票预订的Chatbot 应该做&不应该做
回顾:机器人分类
三、梳理业务要素和知识库
1.确定优先级(首先要实现的功能)和关键信息要素(实现功能所需要的信息)
关键信息尽量多而全
2.任务要素梳理(定义变量)
根据前面的状态图梳理任务要素
四、撰写故事线
一个建议:不要先画流程图
任务型故事线
错误做法
凭借自己的想象和仅有的逻辑构想如下图所示的对话逻辑。
正确做法
撰写一个任务的完整对话,我们称之为“愉悦路径”,然后再“添油加醋”。
个人认为,类似于你设计一个主线任务,得先考虑理想情况下的任务完成路径,然后再一步步设置难度,比如说加个打怪,比如说加个等级限制等等,我称之为添油加醋。
总结:最大可能的模拟各种情况,通过自己的想象力构建不同的问答情况并作出解答,然后就是美化我们的对话系统,比如加个UI,比如更为合适的对话用词。
问答型故事线
这个比较贴切我们的智能客服系统
一个法宝:尽可能罗列出所有可能的问答对。因为问答型就是这种问题和答案匹配的问题,问答对越全,也就是我们的知识库越全,越容易体现智能。
所有的故事线要保证真实性,尽可能还原真实场景对话,不能为了写故事线而写故事线。
五、抽取对话流程
方式一:流程图
简答来说就是绘制流程图
一个法宝:有点类似于面向过程程序设计,即将对话流程化。任务型和问答型机器人都有这种特点,但我感觉问答型要比知识型简单。毕竟不需要过多的信息也不用接入第三方服务。
其中的黄色模块非常笼统,可以更加细化
总结:业务流程图描述的是完整的业务流程,以业务处理过程为中心,一般没有数据的概念。流程图以动作推进业务,更加关注的是业务需要完成哪些操作。每一个动作基本上是“动词加名词”或者“动词”的形式。
方式二:泳道图
泳道图又称跨职能流程图=流程图+动作执行的对象```

泳道图后面也可以加上流程描述,更好地描述流程。
**业务线合并汇总(类似于第三步)**
存在的价值:便于更好地设计/梳理流图

**设计UNIT对话逻辑**
1.梳理业务逻辑
简单来说就是考虑真实场景下会有哪些情况出现,然后抽象出来给BOT

2.配置技能的对话意图/问答意图
目标:把业务逻辑教给对话系统
==》每个技能都由相关的意图组成
==》根据上述1的业务逻辑拆解完成技能下每个对话意图、问答意图的具体配置
在这个环节中,对话系统需要学会:
用户的意图是什么?
要完成用户的意图,需要理解哪些关键信息?
对话系统应该怎样回应用户?
有哪些规则需要遵守?
#以订票为例:
PS:澄清话术是怎么问用户

总结:配置技能的对话意图/问答意图步骤:
新建对话意图(eg:意图名称:BOOK_TICKET,意图别名:订票)
添加词槽
设置BOT回应(有三种回应方式:【答复】、【引导至对话意图】、【引导至问答意图】)
注意:
1.实际落地的时候需要在自己的业务代码里判断当前BOT解析的用户意图为订票,且用户提供了出发时间、出发站点、到达站点,这时你用这三个词槽值去火车票系统中找出符合条件的火车票, 并生成一个火车 票list返回给用户,供用户选择, 并完成支付。(任务型机器人)
注意:
1.实际落地的时候需要在自己的业务代码里判断当前BOT解析的用户意图为订票,且用户提供了出发时间、出发站点、到达站点,这时你用这三个词槽值去火车票系统中找出符合条件的火车票, 并生成一个火车 票list返回给用户,供用户选择, 并完成支付。(任务型机器人)
2.引导至对话意图:是当前对话满足一定条件时把当前意图引导到另-一个对话意图,让用户进入另一个意图的对话中。
3.引导至问答意图:是当前对话满足一定条件时把当前意图引导到另一个问答意图,让用户直接在目标问答意图下提问并获取答案。(问答型机器人)
新建问答意图
设置预制技能(闲聊、问候、指令等)
**3.标注对话数据**
在【效果优化--训练数据】里尽可能多地添加对话模板、对话样本。其中对话样本不要是我们想象出来的句子,而是要贴切真实的业务场景(故事线设计的真实性,同 四、设置故事线部分)。对话BOT就像个儿童,教的越多越聪明。
具体方法:
1.配置对话模板
对话模板是对用户需求表达的一种规则抽象、配置好对话模板,可以快速识别不同表达方式的用户需求。
比如:“我想订餐” ==》订餐就可以形成一个对话模板
2.标注对话样本
需求分析最后一个阶段收集到的对话数据导入UNIT平台,然后给它们逐条标注意图、词槽。这部分数据可以用于后续的样本学习,让对话机器人更加智能,获得更好的对话理解泛化能力。
3.添加问答对
在需求分析阶段(主要集中在梳理业务要素和确定故事线阶段)就收集整理的问答对数据集中导入UNIT平台。
4.训练/体验
将BOT技能配置、对话模板、对话样本等在系统里训练形成模型,然后将模型放到沙盒里就可以试着体验自己的对话系统了。
值得注意:UNIT背后的深度学习等技术会帮我们解决训练系统这个问题,但也需要我们反复验证发现问题并优化配置并不断补充对话样本,然后
5.应用调用
与真实的业务联动起来。
在【发布上线- -沙盒/生产环境】可以前往百度云创建应用,获取调用BOT的API Key/Secret Key。这部分可参考UNIT的API文档。UNIT已经与百度其他AI技术打通了 ,创建一个应用后,就可以方便的调用到百度AI的语音、图像识别等所有能力!