连载 | 2.3 对话系统话术设计注意事项
欢迎大家来学习我们第二章的第三节,对话系统话术设计的注意事项。
- 简洁明了
首先是简洁明了,我们来对比这两个话术。
如果你想要再听一遍可以说“重复”;
如果想要做出回答可以说“回答”;
如果要继续到下一个,可以说“下一个”;
这是一个对话系统里面常见的话术,完全照搬了之前GUI的的做法,每个模块都罗列上去,而正常人交流会说:你是要重复回答,还是要去到下一个。
借此,给大家介绍一个法则:格里斯法则。
- Gricean 语言准则
格里斯是一个非常有名的语言哲学家,他有四个法则:
质量准则:只说确认的真实的内容;
数量准则:所说的话必须要满足交流所需要的信息量,但不应该超出所要求的信息量。换句话说就是不多也不能少;
相关法则:只说和主题相关的内容;
态度法则:说话要清晰明了,避免模棱两可;
- Gricean 语言准则反例
给大家举一些反例:
质量法则:宣传一些你根本做不到的事,比如你明明是一个订机票的机器人,你却去问用户:“我能帮你做什么吗?”,用户自然就会说:“你能帮我点个餐吗,能帮我叫个车吗?”,机器人做不到或者是直接理解成订机票的意图就会让用户失望;
第二个是数量准则:有人经常会说:“请您注意听,因为我们的选项已经变了”,实际上这句话并没有任何的意义;
第三个是相关准则:给了用户一些当前用不到的知识,比如在用户还没下单的时候,就开始解释退货的策略,这是没有必要的。应该要追踪用户每一步,他要什么你再给,他不要就不要往上硬塞;
最后是态度准则:很多人愿意给机器人罗列很多晦涩难懂的专业术语,以为这样能显得自己高大上,实际上用户只会觉得你很傻;
- 对话语句要自然
第二个需要注意的事项是对话的语句要自然,经常会看到很多的机器人,用刻板的对话脚本教导用户,希望用户按照他们希望的台词去说话。
处理的办法很简单,大家注意以下这三点:
首先,大声朗读你写的内容,使用随机化的表达,使对话听起来更自然。只有你把你写出来的读出来,你才会发现哪里有问题;
第二,用人正常说话的方法去写对话脚本,很多人做对话机器人会很懒,直接去官网或app上把内容原封不动的复制黏贴。这样对开发者简单了,对用户反而觉得不好理解;
第三,需要给用户明确的上下文暗示,而不是一个模糊的陈述,让用户不知所措;
- 处理新手用户&老手用户
第三点要处理的是新手用户和老手用户。
这是一个医疗保健的助理,你第一次使用的时候,机器人会说:“让我们来测量血压,请确保血压计的袖带已经打开。将袖带卷到你的手臂上,并使用蓝色箭头指向你的手掌。请保持坐姿双脚平方在地上,当你准备就绪时按下按钮”。
对于一个新用户,机器人用非常详细的去跟他交流是没有问题的。但当一个用户使用一周之后,机器人依然说这么多废话,用户会逐渐变得不耐烦。所以这个时候,你只要跟他说:“到测量血压的时间了,请带上袖带并按下“继续”按钮”,就可以了。
很多时候,也不能只依靠次数来确认模式,因为一个人可能使用了多次,但一两个月只使用一次。在这种情况下,应该继续保持新手提示。要注意你的目标不是简单的训练你的用户,而是适应用户的行为,不是用已有命令让用户感到厌烦。
我们再来看第四个要注意的事项,适当的使用问候语和结束语。
- 适当使用问候语&结束语
首先,你要告诉你的用户是谁,用户要知道他在和机器人说话,还是在和真人说话,让用户有一个明确的预知,当你进行转换的时候你也要告诉他:“我刚刚是机器人,现在我转到了人工。我是人工的小芮,在这儿为你回答问题。”
第二,对话包含的信息要合适,新接触的用户和老用户需要的内容是不一样的。这是在设计对话的时候是要考虑的。
第三,是要采用合适的方式来结束对话,当用户完成目标的时候,比如用户说:“好的,谢谢”“不需要了,谢谢”,你是否知道它是完成?你是否知道它代表着什么?然后你能不能够去快速退出。还是说你会不停的在问:“还有什么需要帮助您的吗?”,或者是说:“你还是需要订机票吗?”,这样的话也会显得你的机器人非常的弱智。
- 积极确认
第五个可能会讲的稍微多一点,关于确认这一块,当用户提出一些请求,机器人必须要给用户以回应,就像人和人的交流一样,你需要给对方以回应。你说:“我知道你在说什么了”,这样对方才会继续有跟你沟通下去的欲望,确认上我们做了三个区分:
第一个叫显性确认;
第二个叫隐形确认;
第三个叫置信度综合的显性确认和隐形确认;
那这三个有什么区别,接下来会给大家详细的去讲解。
同时注意两件事:
应答用于话题更换前,表示拒绝、接受、二次确认和更正。这个就是一个确认;
第二个是对重复信息需要谨慎,不要滥用;
- 显性确认
我们来看一下这三个确认,什么情况下我们要用到显性确认。
有三种情况:
第一种情况这种场景非常难撤销,一般是在用于订单最后跟用户来确认的,你是不是要订这张机票,你是不是要交这笔钱,它是用于什么。
第二个就是对于购买者的消费协议或者法律法规。比如说我一些免责协议,要明确的确认好。
第三个系统性能不好的时候,右边就给大家展示了一个很明确的最终的订单的确认的这种话术。它会很明确的告诉你:“请您确认”,它有这个很明确的说法,是这个东西吗?它是在做明显的确认。
- 隐性确认
隐性确认,根据名字我们就可以看的出来,它是在暗示你,不是在明确的说请您确认。
给大家举两个例子,我们看第一个例子:
用户说:“今天天气怎么样”;
机器人说:“北京今天的天气晴转多云”;
其实这个就是隐性确认,它也是在偷偷的跟你确认,你是不是在问我北京的天气。如果你说不是,上海的天气怎么样?那机器人也会说:“上海的天气小雨加雪”或者类似怎么样。所以这个时候你要让用户知道,我已经识别到你的信息。
再比如说第二个再给大家举个例子 :
- 世界上最高的山峰是什么?
如果机器人没有识别的很好的时候,那它就可以说:“世界上最高山峰珠穆朗玛峰”,说明我知道你的意思是什么,在问我世界上最高的山峰,我识别到了,那世界上最高的山峰珠穆朗玛峰,这种回答远比回答说:“珠穆朗玛峰”,要更舒服,贴切和智能。
一般隐性确认的场景,则是在对获取信息的识别度,识别准确度较高的时候,为了减少出错进行确认的。
- 置信度综合的显性确认和隐形确认
以上是给大家举的例子,是置信度综合的显性确认和隐性确认,这个是看情况而定的。
简单说是看情况而定,比如这是一个智能音响的例子,你跟机器人说再买一些纸巾,那么机器人根据对你话术的识别有一个置信度。技术里面叫confidedce,也可以理解为概率。
当它觉得你80% 的概率会再买一些纸巾,它会直接说:“好的,已经为您订购了更多纸巾”。
如果因为声音较远或者背景嘈杂,他觉得你只有45%-79% 的概率是说在买纸巾的时候,它就会去问你:“你是想再订购一些纸巾吗?”。
如果杂音更多或者它听到了其它的东西,低于45%的概率觉得你在买纸巾,它可以直接问:“对不起,我没有听清你说的话,你想要买什么?”。
当然,80,45也都是一个在现实的场景中迭代总结的数据,任何一个系统不会有一个统一的标准数据的。
- 确认策略话术对比
最后再给大家做一个对比,那么左边是我没有放任何的确认话术:
帮我日历上加个备忘
哪一天?
星期六
几点?
下午2点
什么事?
张三的生日聚会
最后说已保存,然后张三的生日聚会,星期六下午2点
这个时候用户的感知是非常硬冷的,总觉得机器人的信息不一定是准确信息。这是缺少隐性确认的话术进行引导的原因,会让用户会觉得很困扰。
以下是修改后的案例:
用户说:“帮我在日历上加个备忘录”;
“好的什么时候?”,机器人说好的就是我知道我要给你加备忘录了;
“星期六下午2点”;
“收到,我知道了,星期六下午2点,活动名称是什么?”;
“张三的生日聚会”;
这个时候你有没有觉得更踏实一点了呢。
- 随机策略
随机策略是很简单的,因为机器人是我们去设计的,我们希望机器人更加的贴近人,所以回答的时候,尽量加一些随机的策略,避免应答的单调或套路化。
比如说好的,没问题,收到,OK都可以这么说。只要用户觉得机器人好像还满聪明的,不会很刻板。
- 使用对话时标识
第七个是使用对话式标识。什么叫对话式标识?
对话式标识是让用户了解交谈进展,以及进展情况的重要方式。当系统在对话中使用了一些基本的对话礼仪以后,用户的参与度会更高,并且会以同样的方式进行回复,就像胶水一样将各个部分连接在一起。
比如说时间线:
首先;
完成一半了;
最后;
比如说我有三个问题想问你:
首先您是要买车吗?
好的,我知道了;
请问您洗车的频率是多少?
最后想问一下,你是不是接受我这家公司呀?
类似这样的一个调研问卷,远比你直接抛给他三个问题要好。
第二个是接受回应时段
谢谢;
知道了;
好的;
不好意思;
这个之前就有例子给大家介绍了。
积极反馈:
干得好;
很高兴听到这个消息;
类似这样比较适合做医疗助理,那么比如说用户已经按你的要求测量了血压等,这个时候你可以给用户一个积极的反馈,用户会更愿意按照你接下来的操作去往下进行。
这是一个医疗的例子,左边:
“你昨晚睡了几个小时?”;
“你昨天吃了几份水果?”;
“你吃药了吗?”;
“再见!”;
感觉非常生硬,冷冰冰的。
但我们看另外一种话术设计:
“我会问你几个有关你身体健康的问题,第一个问题,你昨晚睡了几个小时?”;
“然后不错,我收到你的回答了,你昨天吃了几份水果”;
“我们说四份”;
“那我了解了,最后一个问题”;
用户就知道自己走到哪一步了,他知道我跟你说吃完了,基本上我可以跟你结束对话了,所以它最后也说:“暂时就这些了,我以后再问你,再见”。
希望大家通过这种对话式标识,让你的机器人看起来更舒服。
- 异常处理
再有一个是加入异常处理,比如说可以主动询问:
- 很抱歉,我没有听懂您的意思;
第二类是增强错误提示信息,比如机器人说:
- 请告诉我您的航班号码,我来帮您查询预约信息;
用户随便说一个数字,机器人说:
- 我没有识别到,您的航班号应该是四个数字,而且是在CA之后;
机器人很快就反应过来了。
- 哦,那是这个,1807;
然后这样的话,会通过这种对话去告诉它,你应该去引导他给出一个正确答案。
最后实在没有办法了,我们可以把他转交给人工。
- 设计对话通用模块
还有一块是设计对话通用的模块,比如说主菜单。这一块是想跟大家说CUI和GUI是有一些共同的地方的。
GUI里边有的主菜单、帮助健或退出键,我们CUI中或者对话的这种交互中一定要有的,只不过它可能代表的是一种意图。你要去设计这种意图,用户说什么样的话会触发。
比如用户说:“桔小秘,你能做什么呢?”,这是一种意图触发主菜单;
“接下来我该怎么办”,这是一种意图,触发帮助;
“再见”,这也是一种意图,触发的是退出;
那么很多人会只顾着设计自己的故事线,设计自己的愉悦路径,就把这些最基本的GUI里面要注意的点忘记了。
- 设计延迟话术
再给大家最后再讲几个设计延迟的话术。
其实很多时候,查询的过程是需要一些时间的,或者说我们去买一张机票,可能需要等代理商确认以后才能出票,你都要明确告知你的用户:“请稍等,我在查询相关记录”或“请稍等,我正在订票”,让用户知道我需要等待多久,远比你等三分钟之后再跟他说:“您好,给您做好了”。用户为着三分钟等着就很焦躁,你不如先告诉他,再让他等三分钟。
- 设计歧义消除话术
还有一个就是设计歧义的消除话术,也是一个例子吧:
给Linda打一个电话;
好的手机还是座机?
用户说:“手机”;
正在拨打Linda的手机号。
这也是通过一些隐性确认的方式,去做了歧义的消除。
- 主动学习
最后再给大家举一个例子,也是希望大家能够有这个意识,人的表达会存在各种各样的情况,不管用户说什么,不要把它当场一个错误来处理,而是去寻找如何把它变成一个主动学习的机会。
那么举一个例子就是:
- 梅球王在小组赛中最后进了几个球?
其实机器人根本就不知道梅球王是谁,那你不要把它当成一个错误,你可以问他
请问梅球王是谁?是里奥内尔·梅西吗?
用户说:“是”;
那机器人就可以说:“梅西进了一个球”;
把每一种对话的交互都转变成一种提供价值的互动机会,机器像人一样在交流中学习。
这就是我们在对话系统设计话术中的一些例子和注意事项,希望大家能够有所收获,我们下期再见。