实现人机对话场景的产品梳理
人机对话场景梳理的基本流程
image.png-
第1阶段:需求分析。当前阶段需要有熟悉业务的人员参加,例如:产品经理、业务负责人等。先分析业务,明确业务中哪里需要通过和用户的对话来完成;再确认相关对话逻辑。最后基于之前的分析,从之前沉淀的数据中提取有价值信息,用于后续技能创建与训练;如果是新业务或之前没有准备,也先不用着急,我们可以先完成其他部分,但综合来看,业务中的真实数据是训练技能时最理想的“知识”。
-
第2阶段,创建&训练技能。当前阶段就是要赋予技能模型对话能力了。赋予技能模型对话能力和教小朋友说话一样,要先确认教他的知识点,而这些知识点就是技能的意图。基本定义灌输完成后,就需要通过大量的练习题来帮助技能模型理解、巩固与记忆。最后,可以通过考试,来检测技能模型的学习成果。当考试合格后,就可以用于实战了,即接入到业务中(API、SDK等)。
-
第3阶段,持续优化。因着业务程度复杂、用户画像变化等因素,技能之前掌握的只是知识可能不足以应对新市场,这时我们需要通过更多的“练习”与“考试”来帮助技能提高能力。目前技能还无法完全自主学习并提高自己,还需要训练人员辅助。
需求分析
需求分析是训练智能对话技能举足轻重的一步,需要基于自身业务场景进行深入透彻的思考,从而明确整个对话技能的架构,后续的技能创建与训练工作全部在此架构的基础上展开。这一步在训练智能对话技能时很容易被忽视,但草率分析需求即着手训练的技能往往后续需要投入更多的时间和精力进行调整,甚至需要推翻重来。
挖掘需求,确定边界
首先是对业务场景进行分析,以酒店服务这一场景为例,存在很多酒店助手“可以做”的业务,我们应当从用户需求和用户体验入手,思考在该场景下用户的刚需,以及如何通过引入对话交互来大幅提升用户体验,从而在大范围的可以做
的业务中找到其中必须做
和应该做
的业务。
在酒店服务这一场景下,用户主要的活动空间是在酒店房间内,因此酒店助手的首要目标为尽可能优化用户在酒店房间内的体验,像联系前台、呼叫客房服务这些都是需要优先满足的需求;而设置日程提醒、控制房间内的家电,这些功能通过语音交互来实现可以使用户进一步感受到智能化酒店的舒适和创新;意见反馈有助于收集用户的反馈以不断优化酒店的服务,通过酒店助手的对话来完成可以获得比纸质调查表更高的反馈率。
而关于酒店的常见问题的咨询,也是酒店助手应当实现的功能之一:一方面这些问题对于新入住的顾客而言是切实需要获得解答的,另一方面直接通过对话方式获得问题的解答比传统的从宣传单中查找或是致电询问前台都更加简单便捷。
对于一些超出酒店基本服务以外的拓展服务,如新闻播报、城市导览等功能,可以对用户体验起到一定的提升,但并非强需求,同时需要对接大量的资源库;而我们的目标是首先搭建最小可用技能,因此这部分功能可以先不去开发或低优先级开发。
明确目标,确定任务类型
在确定了业务场景的边界之后,我们就需要明确这些功能的目标,从而确定任务的类型,不同的任务类型对应着不同的配置方式;首先我们来了解一下任务类型的分类:
image.png可以看出,任务类型区分的关键在于任务目标的有无以及是否需要把请求参数化;了解了这一点后,我们不难将之前梳理的功能进行分类:
image.png功能定义:确定优先级及关键信息要素
在确定边界和目标后,我们就可以动手对功能进行定义了,在这一阶段,我们需要确定各功能的优先级,并确定每个功能的实体要素。
- 首先是优先级的确定,其实在确定边界的过程中,我们已经对功能的重要程度和实现难度进行了分析,在此基础上不难确定出功能的优先级:
- 关键信息要素的分析。任务型的对话需要将请求参数化,相应的我们就需要分析要完成每个对话都需要将哪些实体要素参数化,而这些实体要素所对应的正是技能的对话意图及其词槽。我们以酒店房间内场景下P0优先级的功能为例进行分析,可以梳理出如下的关键信息要素:
可以发现标红部分因为其关键信息要素的重合而产生了意图的合并,具体如何处理相似功能间意图的拆解与合并,我们在下节对话逻辑梳理中展开讲解。
对话逻辑梳理:任务型对话的常规与异常情况、问答型的知识分类
任务型对话的意图梳理
任务型对话因具有将请求参数化的这一特点,在配置到对话意图时需整体考虑该场景下的相似任务和相关任务,在这一阶段将对话任务与意图间的映射关系梳理清晰,可以在后续的配置中达到事半功倍的效果。
以上节中进行了关键信息要素分析的功能为例,在物品需求类型的功能间和智能家电的开关控制中出现了功能的关键信息要素重合的情况,下面我们分别针对这两类功能进行分析:
- 物品需求类型功能
在实际的酒店场景中顾客可能产生远比本文列出的示例更多的物品需求,在物品需求与意图之间建立一一映射关系不仅会浪费大量的人力,而且存在拓展性差、不同意图间的query相似性强相互干扰影响效果的缺点。因此我们采取合并意图、通过词槽来区分具体物品的方式,这种方式前期工作量小,后期拓展性强(只需调整词槽词典即可增删物品)。但也不可不管三七二十一将所有物品需求合并为同一意图,需要从实际场景出发进行合理的意图合并与区分。
image.png-
家电控制类型功能
家电控制类型的功能在意图的梳理上与物品需求类型的功能基本相同,在上节的梳理中考虑方便未来的拓展,把只有开关指令的设备汇总到一个意图中。
注意:本例中假设灯具只有开关两种指令,若存在更复杂的指令如(柔和模式、工作模式……),则需单独设立意图不可合并。
问答型对话的意图梳理
问答型对话没有需要参数化的内容,往往具有固定的标准答案;这类型的对话逻辑梳理其实就是要对问题进行分类,或者叫知识分类。比如酒店的问题咨询可以如下分类:
image.png场景数据收集:在真实场景下用户会怎么问?
人工智能实现语义理解的过程,和教牙牙学语的小朋友讲话的过程是相似的:最初他只能懂你教他的一模一样的内容(训练数据量少时泛化能力差),等到教的内容多了之后就可以理解这个意思的不同表达方式(基于大量的训练数据产生泛化能力)。
因此我们在收集场景数据时,需要尽可能贴近真实场景下用户的表达方式,最好是从实际业务场景中沉淀下来的真实数据,全面覆盖用户在该场景下可能出现的表达方式。
配置对话模板
对话模板是基于用户的表达方式归纳出的匹配规则,归纳得当的对话模板配置起来简单快速,可以识别多种表达方式,适合短时间内使技能达到可用的对话效果。同时对话模板的优先级高于对话样本,可用于对对话样本训练结果的优化。
在开始配置对话模板之前,我们来明确几个概念:
-
特征词
:特征词通常是具有一类特征的词,可用于在对话模板中匹配这一类词。举例:对于“缝补衣服”意图,用户可能会说“我想缝衣服”、“我想补衣服”、“找谁缝补衣服”,那么对应的模板中,可以设置表示缝补的特征词:缝衣服、补衣服、缝补衣服……这些词不需要作为词槽被提取出来提供给业务,仅用于约束模板的匹配,因此使用特征词而非词槽。 -
口语化词
:口语化词将在语义解析时会被自动忽略掉,以此来提高解析的精准率。比如通用场景下:嗯我看一下明天的天气吧 --> 明天天气,这里把"嗯、我、看一下、的、吧"等口语化词都去掉了。又比如特定场景里:预定如家酒店 --> 预订如家,在定酒店的场景里省略了 “酒店”, 可以将“酒店”配置为口语化的词。 -
模板片段
:多个模板片段组成一个对话模板,每个模板片段都可以由词槽、特征词、特定文本单独或组合而成,而且多个模板片段可以是无序的,也可以是有序的。顺序设为0就表示这个模板片段可以出现在用户query中的任意位置。而非0的,必须按照数字顺序在query中出现。此外还可以设置一个模板片段是否必须在用户query中出现。 -
阈值
:它是说当前模板配置的词槽、特征词占用户query的长度比例,当只有这个比例达到这个阈值的时候,我们才会判定用户的query就是这个模板所表示的意图。
理解了这些概念后,我们就可以从真实场景的数据中提炼相应的对话模板了。以需确认数量物品这一意图为例:
image.png--- 参考 ---
http://ai.baidu.com/forum/topic/show/892294
https://ai.baidu.com/docs#/UNIT-v2-sample/top