接下来的五篇博客会从对话系统搭建五个步骤上仔细进行学习。

2020.12.23插入: 这篇博客确实让我从整体上领会了对话系统搭建的流程。
2020.12.26插入;解决了排版乱的问题。



文章目录


一、定义对话系统的方法

以下方法论其实就是在定义对话系统,后面的

  • 确定场景边界
  • 梳理业务要素和知识库
  • 撰写故事线
  • 抽取对话流程
    都是下面方法论的具体展开。
    智能客服搭建(5)——5步骤之一定义对话系统_数据

二、确定场景边界

1.创建机器人定位(机器人的性格定位)

智能客服搭建(5)——5步骤之一定义对话系统_数据_02

2.明确机器人的产品场景

  1. 明确产品的目标人群。
    比方说:懂球帝是为了球迷提供的
  2. 搞清楚产品给目标人群带来了哪些服务/提供哪些产品。
    比方说:携程提供在线票务购买服务,懂球帝提供最新的足球咨询也可以购买足球装备等
  3. 了解用户是什么类型的人,了解我们产品带给他们带来哪些服务,解决什么痛点,那么整个逻辑就是这款机器人。

example:
火车票预订的Chatbot 应该做&不应该做
智能客服搭建(5)——5步骤之一定义对话系统_人工智能_03
回顾:机器人分类
智能客服搭建(5)——5步骤之一定义对话系统_流程图_04

案例:

智能客服搭建(5)——5步骤之一定义对话系统_对话系统_05

三、梳理业务要素和知识库

1.确定优先级(首先要实现的功能)和关键信息要素(实现功能所需要的信息)

智能客服搭建(5)——5步骤之一定义对话系统_数据_06

  • 关键信息尽量多而全
    智能客服搭建(5)——5步骤之一定义对话系统_人工智能_07

2.任务要素梳理(定义变量)

根据前面的状态图梳理任务要素
智能客服搭建(5)——5步骤之一定义对话系统_人工智能_08
智能客服搭建(5)——5步骤之一定义对话系统_数据_09

四、撰写故事线

  • 一个建议:不要先画流程图

任务型故事线

错误做法

凭借自己的想象和仅有的逻辑构想如下图所示的对话逻辑。

智能客服搭建(5)——5步骤之一定义对话系统_人工智能_10

正确做法

撰写一个任务的完整对话,我们称之为“愉悦路径”,然后再“添油加醋”。
个人认为,类似于你设计一个主线任务,得先考虑理想情况下的任务完成路径,然后再一步步设置难度,比如说加个打怪,比如说加个等级限制等等,我称之为添油加醋。

智能客服搭建(5)——5步骤之一定义对话系统_流程图_11

总结:最大可能的模拟各种情况,通过自己的想象力构建不同的问答情况并作出解答,然后就是美化我们的对话系统,比如加个UI,比如更为合适的对话用词。

问答型故事线

这个比较贴切我们的智能客服系统

一个法宝:尽可能罗列出所有可能的问答对。因为问答型就是这种问题和答案匹配的问题,问答对越全,也就是我们的知识库越全,越容易体现智能。

智能客服搭建(5)——5步骤之一定义对话系统_数据_12

注意

所有的故事线要保证真实性,尽可能还原真实场景对话,不能为了写故事线而写故事线。

五、抽取对话流程

方式一:流程图

简答来说就是绘制流程图

一个法宝:有点类似于面向过程程序设计,即将对话流程化。任务型和问答型机器人都有这种特点,但我感觉问答型要比知识型简单。毕竟不需要过多的信息也不用接入第三方服务。

以订票流程图为例:
智能客服搭建(5)——5步骤之一定义对话系统_人工智能_13

其中的黄色模块非常笼统,可以更加细化

智能客服搭建(5)——5步骤之一定义对话系统_数据_14

总结:业务流程图描述的是完整的业务流程,以业务处理过程为中心,一般没有数据的概念。流程图以动作推进业务,更加关注的是业务需要完成哪些操作。每一个动作基本上是“动词加名词”或者“动词”的形式。

方式二:泳道图

泳道图又称跨职能流程图=流程图+动作执行的对象

智能客服搭建(5)——5步骤之一定义对话系统_人工智能_15

泳道图后面也可以加上流程描述,更好地描述流程。

业务线合并汇总(类似于第三步)

存在的价值:便于更好地设计/梳理流图

智能客服搭建(5)——5步骤之一定义对话系统_对话系统_16

流程图绘制工具

  1. ProcessOn
  2. 百度脑图

智能客服搭建(5)——5步骤之一定义对话系统_流程图_17

六、设计UNIT对话逻辑

1.梳理业务逻辑

简单来说就是考虑真实场景下会有哪些情况出现,然后抽象出来给BOT

智能客服搭建(5)——5步骤之一定义对话系统_数据_18

2.配置技能的对话意图/问答意图

目标:把业务逻辑教给对话系统
==》每个技能都由相关的意图组成
==》根据上述1的业务逻辑拆解完成技能下每个对话意图、问答意图的具体配置

在这个环节中,对话系统需要学会:

  1. 用户的意图是什么?
  2. 要完成用户的意图,需要理解哪些关键信息?
  3. 对话系统应该怎样回应用户?
  4. 有哪些规则需要遵守?

#以订票为例:
PS:澄清话术是怎么问用户
智能客服搭建(5)——5步骤之一定义对话系统_流程图_19
总结:配置技能的对话意图/问答意图步骤:

  1. 新建对话意图(eg:意图名称:BOOK_TICKET,意图别名:订票)
  2. 添加词槽
  3. 设置BOT回应(有三种回应方式:【答复】、【引导至对话意图】、【引导至问答意图】)

注意:

1.实际落地的时候需要在自己的业务代码里判断当前BOT解析的用户意图为订票,且用户提供了出发时间、出发站点、到达站点,这时你用这三个词槽值去火车票系统中找出符合条件的火车票, 并生成一个火车 票list返回给用户,供用户选择, 并完成支付。(任务型机器人)

2.引导至对话意图:是当前对话满足一定条件时把当前意图引导到另-一个对话意图,让用户进入另一个意图的对话中。

3.引导至问答意图:是当前对话满足一定条件时把当前意图引导到另一个问答意图,让用户直接在目标问答意图下提问并获取答案。(问答型机器人)

  1. 新建问答意图
  2. 设置预制技能(闲聊、问候、指令等)

3.标注对话数据

在【效果优化--训练数据】里尽可能多地添加对话模板、对话样本。其中对话样本不要是我们想象出来的句子,而是要贴切真实的业务场景(故事线设计的真实性,同 四、设置故事线部分)。对话BOT就像个儿童,教的越多越聪明。

具体方法:
1.配置对话模板

对话模板是对用户需求表达的一种规则抽象、配置好对话模板,可以快速识别不同表达方式的用户需求。
比如:“我想订餐” ==》订餐就可以形成一个对话模板

2.标注对话样本

需求分析最后一个阶段收集到的对话数据导入UNIT平台,然后给它们逐条标注意图、词槽。这部分数据可以用于后续的样本学习,让对话机器人更加智能,获得更好的对话理解泛化能力。

3.添加问答对

在需求分析阶段(主要集中在梳理业务要素和确定故事线阶段)就收集整理的问答对数据集中导入UNIT平台。

问题解答:
简单来说,有啥加啥,都有最好。
智能客服搭建(5)——5步骤之一定义对话系统_数据_20

4.训练/体验

将BOT技能配置、对话模板、对话样本等在系统里训练形成模型,然后将模型放到沙盒里就可以试着体验自己的对话系统了。

值得注意:UNIT背后的深度学习等技术会帮我们解决训练系统这个问题,但也需要我们反复验证发现问题并优化配置并不断补充对话样本,然后再训练模型。这是一个反复优化的过程。

体验展示(终于看到结果):

智能客服搭建(5)——5步骤之一定义对话系统_人工智能_21

5.应用调用

与真实的业务联动起来。

在【发布上线- -沙盒/生产环境】可以前往百度云创建应用,获取调用BOT的API Key/Secret Key。这部分可参考UNIT的API文档。UNIT已经与百度其他AI技术打通了 ,创建一个应用后,就可以方便的调用到百度AI的语音、图像识别等所有能力!