跳到主要内容

第4章 上线与运营优化

4.1机器人优化

4.1.1意图召回逻辑简析

当用户提出问题后,机器人需要对用户的问题进行语义理解,并从知识库中找到对应的答案回复给用户。可以把知识库看作对话的大脑,知识库的质量对对话的效果至关重要。

知识库是由不同分类下的多个知识点组成的。当用户的消息与库内问题经过一系列算法模型的计算相似度达到某个临界值——阈(yù)值后,就可以触发知识点了。对相似度处理之后我们得到一个0到1的值,这个值我们称作置信度。

通过置信度,我们可以对这个相似程度给与一定的评估。置信度越高,那么基本可以认为用户语句和这个知识点越相似。

那我们想想,如果用户语句和知识点越相似,那么感觉上正确的概率也就越高。另外一方面,如果用户语句和所有知识点的置信度都不高,那么可能需要承认机器人暂时不知道用户的意思,回答不知道。

所以这时,置信度的高低可以帮我们区分是回复知识点还是回复不知道;如果要回复,可以根据置信度来排序,要回复的是哪一个知识点。

如果回复,我们称作召回,相应地,召回次数/用户提问次数,就是召回率;如果回复的准确,我们算一次准确,准确次数/召回次数,就是准确率。

这里有个例子,我们来模拟一下。

假设女票在过去10年(我们先不考虑还没修成正果的问题)里,每年都会送一份生日礼物给她男票,有一天,她突然问男票: “记得这十年里你生日我都送过什么吗?”

“男友机器人”回答了8个答案其中有6个对的,那么这样回答,我们的召回率是( ),准确率是( )

A.100%,75%

B.80%,60%

C.80%,75%

D.100%,60%

解析:召回率是8/10=80%,准确率是6/8=75%,选C。

对于机器人的效果,在系统中,我们可以通过阈(yù)值来控制,有效避免机器人在置信度低的情况下回复。

阈值就相当于给机器人划的回复控制线,如果对应用户提问所有知识点置信度低于阈值,那么这时不回复用户知识点答案。

这时为了让机器人有个回复,以免用户觉得机器人坏了,我们需要加个兜底回复,兜底回复通常在用户提问,没有满足阈值的知识点时回复。

兜底相当于机器人承认自己不知道的一种状态,在机器人策略下设置,这时我们的话术也可以有各种玩法。比如,“这个问题我还不知道,请您提问XXX”,“抱歉,这个问题为您转接人工”,“我还没学会,稍等我去请教一下老师”。

4.1.2准召率评估

在机器人平台模型测评页面,可以利用模型评测功能快速的验证结果是否正确。

可以选择从测试集离线上传,或者从语料库中抽取数据进行测试,点击上传测试集下载模板后,其填写格式如下:

测试问题(必填)应该召回的正确知识点(必填)

测试问题即为收集到的用户问题,应该召回的正确知识点只要填写对应知识点标准问题就可以了。如果用户问题通过模型实际召回的知识点和填写的知识点一致,那么对应的评分是TRUE,如果不一致则返回FALSE。

虽然这里说回错的多了要调高阈值,库内兜底多了要调低阈值,其实阈值的确定也是有方法的,就是评测后看什么阈值下知识点的准确率和召回率能达到一个平衡又能接受的状态。

如果使用了多个不同的机器人模块,也要考虑各个模块之间如何协调和配合。

Tips:因为不断的从知识库切换到文档比较慢,第一次标注,大家可以先参照模型测评给出的三个知识点标注,不确定的地方待后面统一进知识库查找以提高标注速度。

模型测评的校验方法是比较召回的知识点标准问题是否和填写的知识点标准问题是否完全一致进行的,注意要在知识点标准问题改变后及时改进标注的结果。

说明:一般而言,随着阈值的提升,准确率是上升的,但是在TOP2,TOP3准确率来说,这个经验并不完全生效。因为随着阈值的上升,可能原本正确的第二顺位知识点评分未达到阈值,所以会在分子分母上减少相应数量。

我们推荐在计算召回率的时候,分子分母全部都去除无意图召回了。

经常有客户问我们为什么机器人不能自己计算准确率。机器人如果知道自己答错了,那理论上也能百分百答对,这是目前实现不了的。

要评估机器人的准确率还是得真人老师去批卷子。一方面大家升级了可以使用效果优化里的在线标注功能,另一方面也可以自己下载会话日志里的消息记录进行标注。

4.1.3知识库健康度优化

如果大家有多几次标注调整的经验就会发现,用户经常出现误召,错召主要是由于两种问题,一个是相似说法缺失,另一个情况是相似问题不小心放错了位置,但是成熟的知识库往往有成千上万个相似说法,这么多的相似说法怎么能够快速的找到放错的那部分相似问题呢?

我们有一个知识库健康度来协助我们检查,在效果优化-知识库优化菜单下。

点击“发起检测”就可以对已生效知识点进行检测了,注意检测的时间里,知识库是不允许修改的哦~

检测结束后,如果健康度存在比较大的问题,一般会造成得分低,相似问正确度和知识点清晰度下有部分需要处理的相似问,可以点击进去进行处理。

那这些问题的产生,有以下几种情况;

序号可能情况问题表现解决方案
1相似问题归类错误到了其他知识点A甲问题本来应该就是B知识点的相似问题,结果在知识库搭建或维护的时候错误的被放到了A知识点中,将此问题抽出后,库内的算法召回了正确的知识点将此问题转移到正确的知识点(或者此相似问应该属于一个新的未建立知识点,就去新建知识点)
2相似问法过少即A甲问题本身在知识库中就比较少见,所以没能找到对应知识点中和其比较相似的说法忽略这种情况或者在知识点中添加相关相似问
3知识点质量不高A甲问题里面包含了大量的错别字等错误,因为这些错别字导致和其他知识点的词相似度比较高改正相似问中的错别字
4相似问包含歧义即A甲问题本身包含一个以上意图,由于其中包含的另一个意图造成了知识点的误召将此相似问拆到两个不同的知识点中
5知识点中包含歧义或知识点颗粒度太小由于其他知识点中错误的包含了一个本来属于A的相似问,这个相似问和A甲特别相似导致A甲被误召将其他知识点中错误的问题转移至A,若两个知识点在业务角度可以合并,可以考虑合并
6系统切词错误由于系统没能正确的切词导致算法没能正确的计算出对应的知识点维护专有词汇及其同义词

优化小案例

用户提问了“机器人回复策略”是什么,知识点是正确的,但是返回的答案不是十分正确,因为我们可以根据回复中的名称判断出答案比较陈旧,需要修改,第二个是用调试机器人查看的时候,发现有两个知识点都可以进行回答。

有两个同一语义的知识点,应该用合并的方法,将其中一个意图里的对应相似问批量转移至另一个意图,而后删除对应不需要的意图。知识点答案优化时,需要重新进行答案添加。

另外,通过人工回复答案之后,用户又提了新的问题,“智能回复是什么”,我们发现了另一个问题,智能回复是什么错召了,原因是当时智能回复是一个新上的产品功能,知识点和答案都还没添加,所以有较大的概率召回其他已有知识点。这个后期添加上这个知识点并泛化就可以了。

4.1.4相似说法学习

我们前两天说了数据统计与计算,如果大家有经验的话,会发现很多机器人答错的问题很可能召回的top2,或top3的知识点里有正确的知识点,并且一般来说这部分问题在机器人中评出的置信度会比较低。

这部分问题,总结一下,得分不是太低或者太高的很有可能在top3里就能找到正确的知识点,并且是知识点/知识库中缺少的说法。

将这部分用户问题汇集在一起,集中处理,就是相似说法学习。

问答对话的新知识学习途径之一是通过相似说法学习来完成,接入在线环境后,新的用户问题过来之后,机器人无法确认相似的问题会被放入相似说法学习,机器自动推荐最接近的知识点1-3个。

Tips:如果在问题入库的时间和正式开始标注时期的知识库结构差距比较大,可以点击刷新按钮,系统会重新推荐最接近的知识点。

点击“与该知识点进行合并”这个问题会作为对应知识点的一个相似问进入到知识库中,如果要对问题进行修改,可以点击上方的修改按钮。

如果知道这个问题属于哪个其他的知识点,可以“合并到现有知识点”。

如果现有知识库内没有对应知识点可以点击“新建知识点”进行增加。如果问题不可用,可以直接“删除”;不能回答的问题选择合并到现有知识点中的无意图知识点即可。在无意图知识点内的相似问将不会再次出现在相似说法学习列表。如果判定所有相似问价值不大,也可以点击“清空待审核问题”按钮,小心操作,注意点击后不可恢复。

在搭建知识库时,我们也可以将之前的语料导入待审核,以便快速覆盖已有知识点的其他问法。也可以按照添加相似问时间,相似度分数,知识点来筛选对应相似问。

也可以利用按知识点查看和按意图查看批量快速添加用户的问题,可操作部分一致。

4.1.5专有名词

如果发现机器人对于某一词汇的识别效果不够好,可以添加专有名词来教授机器人如何正确识别这类词汇,例如在专业领域下,我们可以添加波尔多,以提高机器人对波尔多红酒的识别效果。

如果一个词汇有已知的同义说法也能添加进去,例如,在银行业务场景下,中国农业银行也会被称作,农行,农业银行等。可以点击“添加专有名词”,也可以点击新增同义词右方向下的三角,批量上传同义词。

4.2机器人配置指南

在实际搭建过程中,我们要关注的不仅仅是知识库的实际效果,一些客户体验方面的配置我们也需要了解,这部分配置我们可以在 对话搭建-回复策略 找到;

4.2.1体验版网页

体验版网页是一个供体验的真实正式渠道,可以支持吾来的所有能力,重点是给客户一个开箱即用并且完整的体验,不展示机器人运行的细节。

所有体验机器人的测试情况会计入消息统计,任务收集等统计指标,这方便的给我们一个方法来体验所有的机器人能力。

在某些简单的场景下,使用体验版网页就能完成我们想要的结果,甚至如果大家希望用户扫码或点击链接就能进来对话,那就可以将体验版网页直接当做一个渠道分享给用户。

体验版网页支持修改“机器人名称”、主题颜色、自定义机器人头像、用户头像、入口图标、入口图标大小、头像形状、对话气泡样式、会话窗口高度等。

体验版网页支持的能力有满意度收集,图文、卡片、视频、音频、图文等各种形式答案的展示,通过事件消息一进入就能给与用户对应的回复。

如果是其他需求,就需要定制前端页面的展示和能力来实现了。

4.2.2体验优化配置

1.欢迎语配置,其实公众号关注回复,客服自动的欢迎语也是类似这样的作用。

我们创建一个欢迎语知识点放在寒暄分类下,通过【对话搭建-个性化体验-用户事件-进入事件】即可配置;

2.输入联想,可以让用户提问更轻松,设置要去【渠道设置-webSDK-功能设置】找到输入联想进行设置;

3.相似知识点设置,让机器人给出想询问问题的更多相关问题,在【对话搭建-回复策略-机器人策略】可以找到;

有些知识点不想推荐出来,不配置为推荐的分类就可以了。

4.针对回答是否人机协作,可以看下一节转人工方案;

5.机器人难免有回答不上来的时候,这个时候我们应该怎么得体的表达机器人无法给出一个准确回复呢?这个时候我们需要兜底回复(托底回复),来应对这种情况;

兜底话术一般有这几个考虑的点:

晚间机器人,白天人工:这个我还不知道呢,08:00-18:00有人工客服,到时候再来问问吧~

机器人回复,人工每天定时处理兜底:这个我记下来了,你留下你的联系方式好不好,后面会有工作人员回复你。

全部机器人值守,无人工:这个问题我还不会,不如你过几天再来问问?如果着急的话,请打我们的人工服务热线400-XXX-XXXX。

5.开启相似知识点设置,这样,会在给答案一些配合的知识点推荐,增加命中正确知识点的概率,提升用户满意;

6.增加必要的寒暄回复,照顾用户体验。

当然,机器人还有很多其他配置,比如延迟发送,可以适当减慢机器人发送消息的速度,我们可以按需选择。

4.2.3 转人工方案

很明显目前的机器人还处在追赶人工的阶段,为了更好的用户体验,有些时候我们可以需要在合适的时候转到人工进行处理,这时我们就要安排合适的转人工策略(也有可能是日夜协作,白天人工,晚上机器人);

大部分项目很可能有人工和机器人的配合,所以我们在搭建的过程中一定要注意究竟人工和机器人是怎么配合的,整体的业务引导思路是什么样子的。

  • 全部使用机器人

纯机器人回复就是机器人的默认配置(智能回复/指定优先/全回复,自动转人工关闭),一般要记得配置兜底回复;当然这个时候就需要考虑机器人问题用户如何反馈,是否要配合一个问题收集任务对话场景。

  • 机器人+人工

是倾向于客户说转人工才能转人工还是当置信度较低时主动转人工?

转人工具体怎么实现的,做转人工的测试是否通过?

如果使用吾来的即时沟通模块,那么是在机器人兜底时转人工,需要在回复策略开启自动转人工,这时就能通过即时沟通页面接入兜底的用户了。需要考虑转人工时,是不是需要机器人回复。

  • 机器人辅助人工回答

怎么推荐答案?

是否支持客服侧输入问题调起答案?

如果是使用吾来即时沟通模块全部人工回复,机器人只提醒,那就需要在回复策略里选自定义模式,回复方式选择不回复。

需要注意的是,如需人工回复,我们需要配置左下角的人员设置,配置在线和提示,这样才能成功接入用户。如果是客服岗位使用,需要打开并保持在即时沟通页面,这样能及时的听到提示音,接待用户。

根据搭建后的不同阶段和应用的要求不同,我们可以选择不同的转人工方案,例如:

在母婴场景下,对回复的准确性要求高,本身服务也主打人工服务,这个时候通常使用机器人辅助人工的方案比较合适。

如果希望以少量的搭建就能起步智能化服务,也可以以机器人辅助人工模式先上线,这样上线有一些优点比如,在搭建的过程中,服务人员可以借助机器人自动提示的答案点击后直接发送,减少了人工搜索、回译、输入答案的过程,效率会提高很多;如果机器人回复错误,应该使用其他知识点进行回复,可以输入对应的知识点名称,由机器人自动带出答案。也可以点击答案对答案进行编辑再进行发送,这种情况下,我们可以比较机器人内置的答案和人工编辑的答案有什么区别,以便更好地优化机器人的回复效果。

更多的项目选择了兜底时和部分知识点、任务转人工,这个是机器人+人工共同服务的典型模式。有时也会加一些其他转人工条件提升用户体验,比如,用户连续提问三次同一知识点需要转人工等等。

部分完全没有客服岗位的项目,或者晚上没有客服接待的会使用纯机器人接待模式,部分会选择次日来优化前一日兜底的回复,以保证答案上线的相对即时性。

4.2.4特殊消息类型实际体验

如果配置了图片,文章,视频等其他类型回复消息,还需要测试渠道下,图片和文字的发送顺序,能否实现预期的效果?有以下需要注意的点:

图片和文字的发送顺序;

图片是否能放大缩小,体验是否合格;

视频,文章等回复形式是否能正常播放;

4.2.5上线渠道针对性优化

机器人上线策略我们可能有很多种方式,比如按比例切流量适应,或者是按渠道分别上线,当然也有厂商采用按地区上线的策略,针对这种比较有渠道特色的上线策略,我们为了更好的效果可以再做一些检查。

1.是否有渠道知识点差异,如果之前有对应渠道的客服人员可以专门请他们对用户的常见问题做些提问以及取前期对应渠道的原始语料做小规模的问答测试,可能会有部分渠道特性的知识点掩盖了;

2.测试一些方言对于机器人的影响,部分场景下用户的说法可能会对机器人的识别效果有影响,比如未装修的新房子,北方叫毛坯房,南方部分城市叫清水房。

特色专题4:自定义答案模板

在对话消息中,机器人除了会发送文本、图片等几种平台预置好的消息类型外,也可能需要有更多丰富的响应,如不同渠道中支持的小卡片等组件:

私有部署版本中,为了提供更加个性化的定制内容,有答案模板功能可以使用,在使用的过程中也支持词槽属性的引用。

自定义答案 类似上述组件,当对话中需要机器人回复一个特殊的消息时(非文本、图片等预置的消息类型),训练师可以使用平台提供JSON格式编辑的自定义答案类型来配置回复内容。机器人会直接将自定义答案的内容发送出去。

答案模版 每一类自定义答案,都有一个格式统一的模版。平台提供自定义答案的模版的维护和编辑能力。维护好各类组件的自定义答案模版后,训练师只需引用模版并更改关键字段,即可完成自定义答案配置。

4.2.6机器人人设和寒暄

在机器人上线前,我们要在测试功能的情况下也要适当照顾用户体验,可以适当添加一部分寒暄,如你好,你是谁,谢谢这样的知识点。如果有强烈需求也可以进一步丰富,这一块内容也非常丰富,所需要的知识需要结合品牌形象来配置,在此就不单独叙述了。

4.3机器人上线

4.3.1功能完备性测试

功能完备性测试实际上指上线前的联调测试也未有人称作UAT测试,联调时需要把所有渠道,所有用户角色,所有操作都问一下,看一下是否返回符合预期。

测试完成,签字确认后即可正式上线。

4.3.2上线期间一些常见问题的解决方法

在这里我们还是综合的来强调一些大家再上线之后可能会发现的问题,在什么时候,这些问题都还是很常见的,当然,其实在前面的讲述中,我们也全部都讲过了,这里做一个集中的讲授。

  1. 欢迎语,手动设置推荐关联问题,自动推荐相似问,转人工,兜底回复,输入提示,满意度等部分的配置情况如果出现问题,请及时在相应的配置部分调整;
  2. 及时观察上线初期用户反应和反馈是否一致,及时调整,主要有以下几个方面:
  3. 高频的提问未覆盖→新增知识点或相似问,在上线前用历史语料测试充分
  4. 用户喜欢用关键词来提问→增加关键词或知识点
  5. 特定渠道的问题覆盖度→新增知识点或相似问
  6. 用户相关问题相互之间混淆出错概率高→检查相似问归置情况,如仍有问题,通过句式或者关联实体来解决

除此之外,上线后还要及时做相似问题学习和问答,任务评测工作,及时对发现的问题予以处理。更多的运营问题,请关注吾来机器人运营指南。

4.3.3 知识库的转移

吾来基础版和专业版支持一键复制机器人,管理员可以在机器人管理设置机器人时可以一键复制。这个功能在创建测试环境的时候非常有用,我们可以很方便的利用这个功能在创建出来一个可用的测试环境机器人。

在转移到私有部署回去其他情况需要对知识库进行迁移时,可以从新增知识点出的下拉三角导出知识库。

你还需要参考以下清单来进行转移。

项目注意事项
知识库注意知识点标准问题和相似问题长度不超过100个字符,标准问题中不要包含“\”等特殊字符,导入时会自动去除知识点内部的重复相似问。(另需注意答案图片,生效状态,关联实体,关联相似问,待审核,无意图)
分类任意两个不能重复,文字中不能包含“/”,分类前后的空格会去除
关键词规则触发词,时间段,回复语句,触发优先级
设置自己设置的实体信息,专有名词

转移的时候需要注意事项:

其一,导出最大限制为一个知识库单个知识点的相似问最多4000条相似问,但Excel导出时对字数有限制,也即Excel本身不支持单个单元格超过一定字数,所以超过限制字数的相似问会被截断,建议相似问不要超过1000个相似问。

其二,线上项目由A知识库向B知识库转移参照以下步骤:

第一步,清空B项目中原来的知识库,可能由于压测等情况残留一些非业务知识库内容都需要清除干净,清空参照上面的转移事项查验;

第二步,将A项目知识库的未生效部分导出,导入到B项目知识库中,将被导入的知识库按照分类设置未生效状态;

第三步,将A知识库中已生效的部分导出,导入到B项目知识库中;

第四步,参照转移事项转移其他部分;

4.4测试统计简述

4.4.1整体指标

在客户需要数据的时候,我们经常被问的会话是什么意思?为什么会话和消息不一致?

会话,即用户与服务人员(人工或机器人)一段完整上下文关系的对话记录,如果用户方连续15分钟没有说话就算一个会话了。

所以说会话是按照这段时间统计的用户消息。自然地,会话量因为统计时期和消息不一致,自然也谈不上一致。另外,会话机器人领域里,一轮对话通常是指用户对机器人说了一句话。

总会话和有效会话有什么区别呢?

通常情况下,我们不需要分析用户没有说话的会话,这种会话就是非有效会话,总会话数排除这部分就是有效会话了。但是用户没有说话是什么会话呢?

在浏览网站时,我们会发现有些网页是有弹窗的,弹窗展开这个对话的同时,是给了机器人一个进入事件的。机器人接收到进入事件这个动作,就开始准备响应,但往往100个人只有两三个人会和机器人对话。那这两三个是算有效对话的,其他的会计入总会话但是不计入有效会话。

如果统计数据出现异常,要及时关注,通常来说可能是运营做了活动促销等。

会话的我们可以在会话日志查看,操作很简单,要多用用消息记录里的搜索。

4.4.2问答指标

知识点使用情况中,最简单的我们可以看到语句的召回情况~~

通常情况下,我们会设置问答对话是其他所有对话最后的可承接部分,如果问答也不能回复,那么整个机器人就兜底。这个时候,针对问答来说,如果没有召回其他机器人或者其他机器人引用了问答,都算问答的收到消息数。这个收到消息数,是出现在消息记录里用户说话的数量,不包含事件消息。

我们来看一下指标的说明:

召回知识点次数:请求问答机器人并给出回复的次数。

触发无意图次数:触发知识库中无意图知识点的次数。

召回率= 召回知识点次数 / 收到消息数-触发无意图次数。

所以,召回率的计算里,分子分母全都去除了触发的无意图次数。

在这里,我们重点关注知识点的召回率指标,在召回率出现比较大的波动时要及时予以关注,这很有可能是因为新上活动等造成的召回波动,要及时干预。

其次关注热门知识点的情况,尤其是这些知识点的答案情况。

关键词使用情况我们的关注点类似。

4.4.3任务指标

任务指标中,主要有意图的触发情况,单元情况和转化率分析,这里我们重点关注转化率分析。通过转化率分析,我们及时找到对用户回复影响大的节点,及时对任务转化做出干预。

任务的评估指标

任务评估我们在业务中根据关注点的不同,也会细化出不同的方向,指定出各种不同的指标,比如,任务完成率,意图识别准确率,走到指定流程的比率。

综合各种指标之后,和问答的深层次评价方法一致,可以分为两块,一个是机器人本身识别流转的准确性,另一块是任务的逻辑话术水平足够完善,可以引导用户自主完成业务目标。

在这里,初期主要看识别和流转的准确性,任务逻辑话术的完善性主要在前期意图规划时一起制定,当然后期可以根据运营中发现的问题进行进一步的优化和上线。

识别流转的准确性评估可以将意图划分成一轮一轮单轮对话,再结合任务特性进行评估。

首先是触发,触发是说,能不能正确的识别用户想要进的是这个任务而不是问答,评估策略和问答的意图准确率评估一致。如果遇到了触发错误,也是一样的检查是否是相似说法归错了意图,是否这个说法很特殊所以没被识别,或者不想某句说法触发意图,我们可以分别使用调整触发器中相似说法所属的意图或知识点,新增相似说法或专有词汇。

进入任务之后,首先评估是否正确的填上了词槽,填槽的逻辑又和问答识别比较一致,可以参照进行测试和调优。

任务的特殊性在于上一次的对话可能对本次的流转过程造成影响,所以会造成分支不同后话术也不一致。

任务的测试逻辑

任务测试时,针对任务逻辑方面首先就是要走通主要流程,简单高频流程要测试到每一个分支,甚至可以考虑通过批量化测试的方法走遍任务。

其次,要尽可能模拟真实场景,正式环境,自主的进行测试,通过自己的体会来发现任务流程中是否有不合理的地方及时改正。

常见的任务流程问题在我们事件过程中有,是否考虑让用户能退出,是否允许任务中穿插问答,是否允许用户多次提问等等。

自动化测试任务的方式

来也在长期实践过程中也积累了可以批量快速测试任务的能力,可以根据流程分支情况,自动生成用例,进行测试。下图是一个测试环境中的流程测试结果示意。如有需要使用相关能力,也可以向工作人员咨询。

具体来说可以测试不同的分支,每轮使用不同的说法看是否能正常运行,也支持自动定时或手动运行前期的测试任务,让测试可以自动化。

特色专题5:通用知识库

通用知识库功能,像公司公用信息可以建设到一个通用库中,统一维护,后期一键同步到所有关联的机器人。像吾来的产品知识和来也的企业知识,就有可能需要在售前,售后,运营等不同部门的对应机器人中使用,那这些知识我们可以统一在通用库中维护。答案可以使用通用库的,也可以使用自己的,也可以个性化追加相似问。

相关操作主要有三步:

1.新建机器人的时候选择类型为“通用”;

2.机器人设置里关联对应的要同步到的机器人;

3.进入通用知识库右上角点击“推送知识库”;

可选步骤:关闭回复答案中的通用库同步,保留自定义答案

推送后,通用的知识库内容就能加到子库里啦,修改答案,补充相似问题等都非常方便。

注意事项:

  1. 标准问,分类,通用相似问题跟随通用库变动,每次同步都会对应更新,除通用库答案同步外,其余可配置部分和普通知识点一致。
  2. 初次同步时,接受推送机器人,对应的推送知识点会处于未生效状态,再次同步时不改变其生效状态。
  3. 接受推送的知识库,可以增加仅在本知识库生效的句式和相似问。
  4. 如答案想保留自己编辑后的,需要关闭回复答案中的通用库同步按钮。

上线之后我们就正式进入了机器人运营阶段,作为一个机器人,与其他工具一样需要我们适时进行检查和维护,才能保障机器人运行的安全,准确,符合业务需求。

那我们如何进行检查呢?和我们经营过程中常见的方法一样需要定期观察和评估,从这个角度说,你可以将机器人当做你的下属。

4.6 机器人的长期运营

按照时间线分类

和我们常见的向下管理类似,我们将机器人检查的最小频次设为周,其次为月度,周度,季度,半年度,年度检查。如果有专人负责,可用适当加大检查频次,及时优化。

对应的运营策略分为年度运营策略,半年度运营策略,季度运营策略等。

人们的入职阶段往往需要我们对新人的更加关心,入职前新人往往只能根据公司的岗位介绍和一些有限的回答了解公司的要求,并做入职前的准备;入职后,则是要观察新员工的入职表现,对其工作当中的问题予以及时解惑。

同人类入职一样,我们也需要在机器人刚上线时,对机器人着重关注,观察机器人的表现;与人类不同的点则是,我们需要手把手的告诉机器人遇到的问题究竟该怎么做,因为机器人至今也不能同人类一样真正的明白事情发展背后的原因并主动思考解决方法。机器人表现的智慧,仅仅是人类教与机器人的。

补充了解:

智慧金字塔

数据是最原始的素材,未被加工解释,没有回答特定的问题,没有任何意义;信息是已经被处理、具有逻辑关系的数据;知识则是从相关信息中过滤、提炼及加工而得到的有用资料;智慧则是为达成目的运用知识的能力。

其实我们搭建机器人的过程,也就是将数据整理成信息,从信息中提取知识。再结合人类智慧予以解答和工作。

所以说机器人所拥有的都是我们教授的智慧。要想让你的机器人更聪明,拥有更多的“智慧”,可得好好教它哦!

那如何查看机器人的情况呢?我们可以有这样的分析框架:

按照目的分类

  • 机器人运行效果角度

    机器人应用成果角度统计问答机器人效果:召回率,准确率等

根据搭建时期对于机器人的要求,召回率和准确率依然是需要关注的指标,我们再来回顾一下这两个指标是如何计算的:

召回率=召回次数/用户提问次数*100%

准确率=准确次数/召回次数*100%

  • 统计任务机器人效果及解决方案:任务触发率等

任务触发率=实际触发此任务的次数/(用户语句想要进入任务而触发的次数+误触发的次数)*100%

  • 机器人应用成果角度

满意度

满意度是用户对机器人客服的服务的评价,但是光用户的主观评价可能是不足够的,我们还需要考虑机器人客服对外的表现,而这个表现首先要提出的是用户的问题是不是被识别对了,也就是召回率和准确率。如果既召回也准确,那么剩下的与客户交互的部分就是提现在答案内容,页面布局,交互体验等方面了。在这里我们要注重的就是召回,准确和答案内容。

转人工率

转人工率=用户转接到人工的数量/总会话数*100%

这里面转接到人工可能会有多种情况,用户主动转人工,用户提问被一次或多次兜底后客户主动或被动转人工,以及客户的问题不适合于机器人解决,所以需要人工接入解决。

用户主动转人工又分为几种情况,用户进入客服系统后直接表达了转人工,用户点击界面上的转人工按钮,用户尝试提问机器人之后未得到想要的回复所以不满意了转人工。

解决率

通常情况下解决率是这么计算的:

解决率=1-转人工率

所以降低转人工率能提升解决率。

所以根据这些指标拆解之后,我们会发现,主要可以从三个方面来优化我们的机器人,一个是机器人的准确率和召回率,二是我们对于机器人回复的设置,三是人机交互方面对于界面,转人工,回复引导,等方面的设置。

4.7问答标注与优化

我们可以简单地认为,NLP最开始的环节就是识别用户意图,用户意图识别不对,很有可能出现,回复的答案出现错误,答案方向偏离用户需求等问题,所以首先我们先要对机器人召回率和准确率进行评估,评估的方法我们称之为标注。

在标注过程中,我们会按照标注规则对机器人回复的不同情况进行分类,之后分别分析回复错误的原因,这样有助于我们了解知识库现存的问题,能够更有针对性地进行优化。

在来也内部,我们将规范且正式的标注称之为黄金标注,因为这种标注和黄金一样宝贵,正式的标注动作我们要求有至少两个人员同时互不参考的进行标注,如果标注出现差异,则引入第三人进行共同评估。

问答和任务的标注稍有不同,本章里讲的标注都是主要针对问答的标注方法和经验。

4.7.1标注方法

第一步首先区分机器人是否召回,机器人是否召回很容易评估,就是用户语句经过和知识库内的知识点匹配之后是否能给与对应回复,只要置信度算出来超过设定的阈值,我们就能得到机器人的回复,就是一次召回。

第二步是针对召回后准确或不准确的区分,我们主要分为这样几个情况:

1、正确召回:机器人回复了正确的知识点答案,如果召回无意图知识点,则回复兜底;

2、知识库范围内错召或者错误兜底:用户消息在知识库内有对应知识点,但是机器人回复了其他知识点的答案或兜底;

3、知识库范围外:用户消息属于业务范围内,但在知识库内没有对应知识点,机器人回复了某个知识点的答案或兜底;

4、语义不明:用户发送了语义不明的消息,但是机器人回复了某个知识点的答案或兜底;

我们可以很容易理解什么是召回正确的知识点,就是用户提问与所召回知识点的语义一致,但是我们这里新提出了两个概念,知识库范围和语义不明;

知识库范围:

用户消息在知识库内有对应的知识点,即为在知识库范围内;

与业务场景相关,但是在知识库中没有对应知识点的消息,则算知识库范围外;

在这里我们要辨明知识库范围和业务范围的关系,这两个并不是等同的,一个是要不要客服人员回答,另一个是是否已在机器人内维护相关知识点。

语义不明:

纯数字、字母、表情、符号、无法理解文字含义的句子以及与业务无关的消息;

无意图 V.S. 语义不明

无意图放的是我们不希望机器人回复的问题,简单来说,无意图是黑名单;语义不明则不一定是机器人不需要回复的内容,我们可以通过一定的引导将用户的部分不能识别语义意图引导为完整的提问,从而回复用户。

通常来说,用户问了业务领域内的关键词,如果没有对应的配置,那么则算语义不明,如果我们有相应的配置,那么这个问题就能被机器人回答上来了。

比如,人事场景询问了“五险一金”,如果关键词配置了“五险一金”,那么我们应该回复“五险一金”这个关键词的答案,一般来说这个答案可以是针对五险一金的答案和关联知识点提示。

但是在这个例子中,将“五险一金”维护成无意图是不合适的。

结合机器人的回复情况,我们可以将用户消息的语义结合机器人反应分为以下几种类型:

机器人召回:

1、正确召回:机器人回复了正确的知识点答案;

2、误召回-知识库范围内:用户消息在知识库内有对应知识点,但是机器人回复了其他知识点的答案;

3、误召回-知识库范围外:用户消息属于业务范围内,但在知识库内没有对应知识点,机器人回复了某个知识点的答案;

4、误召回-语义不明:用户发送了语义不明的消息,但是机器人回复了某个知识点的答案;

机器人兜底:

5、未召回-知识库范围内:用户消息在知识库内有对应知识点,但是机器人回复了兜底;

6、未召回-知识库范围外:用户消息属于业务范围内,但在知识库内没有对应知识点,机器人回复了兜底;

7、未召回-语义不明:用户发送了语义不明的消息,机器人回复了兜底;

8、无意图:通过人为设置无意图知识点,使机器人回复兜底;

根据上面的分类标准整理出来的各种类别的标注结果数量分别可以用N1,N2……N8代表。

4.7.2问答效果指标

标注消息数:本次标注的全部消息数量(即N1+N2+……+N8)

库内消息数:在知识库内有对应知识点的用户消息数量(即N1+N2+N5)

库内召回数:在知识库范围内,机器人能够召回的消息数(即N1+N2)

库内准确数:在知识库范围内,机器人能够召回的消息中,回复正确知识点答案的数量(即N1)

覆盖率:知识库范围内的消息数在全部有意义消息数中的占比

即 库内消息数 / (标注消息数 - 语义不明 - 无意图)

\=(N1+N2+N5)/(N1+N2+N3+N5+N6)

库内召回率:知识库范围内,机器人能够召回的消息数,在库内消息数中的占比

即 库内召回数 / 库内消息数

\=(N1+N2)/(N1+N2+N5)

库内准确率:知识库范围内,机器人能够正确回答的消息数,在召回消息数中的占比

即 库内准确数 / 库内召回数

\=(N1)/(N1+N2)

4.7.3标注实操指导

1、导出某一时间段线上的真实用户消息。路径:数据分析——会话日志——消息日志

2、将导出的数据,通过公式模板算出是否召回,而后人工判断,需要判断出:

  1. 正常召回/无意图
  2. 知识库范围内但错误
  3. 知识库范围外
  4. 语义不明

根据这些我们可以制作标注模板,标注模板可以在标注后自动计算是否召回等情况。

3、根据完成标注的数据,针对覆盖范围内漏召回,召回错误的情况进行修复。

4、根据完成标注的数据,发现知识库内缺失的业务场景下的知识点,通过添加知识点梳理答案后补充入库生效。

我们建议每次标注至少200条数据,如果条件允许尽量要达到400-500左右的标注量,因为当标注数量过少的时候,往往因为机器人正确的回答过多会掩盖机器人存在的问题,只有很少错误的情况下,容易忽视这些问题,认为其不重要,不需要改进。

消息数据中,可以导出历史消息记录,能在线通过时间内容等信息找到对应的消息,值得一提的是,吾来的消息记录搜索支持一定的模糊查询能力。

导出消息记录中我们详细记载了用户的消息详情和当时召回的知识点,分数等信息,方便我们查看用户的消息和回答是否对应,以及如何去改进。

但是正如我们前面说的,置信度越高,机器人回答对的概率越大,置信度越低,用户所说语义一般与知识库中的知识点也就越不相近。

由此我们可以推断,机器人评估的置信度非常高的部分有很大概率正确,我们有个经验值后,我们就可以确认,我们尽量补充得分偏低的句子进知识库,能够有效的提高机器人回答的准确性。怎么快速将这部分句子补充到知识库中呢?就是使用我们前面介绍的新知识点审核功能,新知识点审核目前分数值定在0.5-0.75分。

而用户所说句子和知识库不同时,往往是一个不存在目前知识库中的新知识点,我们可以优先使用待挖掘。将这部分得分比较低,但用户的表达可以归类成语义相似的簇时,通过待挖掘,将这部分新知识点入库。

4.7.4问答准召优化

机器人运营无疑分为很多个阶段,但是我们更加深入的运营之前还是需要将准召率至少提升到一个比较高的阶段才能谈其他的体验,我们建议至少覆盖率,召回率,准确率都要达到90%以上。当然这并不是说其他比较明显的问题比如答案不需要一起优化。

1、正确召回

理想状态,无需进行优化;

2、误召回-知识库范围内

可能是由于相似问错放、不同知识点存在语义交叉、或知识点颗粒度不合理导致;

需要梳理对应知识点内的相似问题,或新增专有词汇等操作来进行调优;

3、误召回-知识库范围外

查看误召回的知识点是否与该问题存在语义上的交叉,并进行调整;

将该问题作为新知识点加入知识库中,并注意与已有知识点的语义进行区别;

4、误召回-语义不明

查看误召回的知识点是否与该问题存在语义上的交叉,也可通过调整阈值的方式来进行解决;

如该问题与知识库无关,可加入无意图知识点中;

5、漏召回-知识库范围内

对应知识点中可能缺少类似问法,需要添加相似问题;

6、未召回-知识库范围外

需要将该问题作为新知识点加入知识库中,并注意与已有知识点的语义进行区别;

7、未召回-语义不明

如该消息与知识库内容有关,可通过欢迎语及兜底话术,或设置关键词机器人对用户提问方式进行引导;

如该消息与知识库无关,可不做处理;

8、无意图

正常效果,可不进行调整;

可以看出来,我们用的并不是一般的准确率、召回率指标,在这里面引入了无意图,语义不明,知识库范围等概念,无意图的增加主要是对黑名单语句的处理措施,语义不明和知识库范围,是我们在实际业务工作中总结出来的概念,我们需要正确的平衡什么是有效的用户提问,尽量给与用户有效的指引以及平衡知识库的现状和理想情况。

补充知识

我们说到了一般的准确率、召回率指标这个指标,这个指标主要是工程上用来评估准确率和召回率的指标,在这个指标假定的情况下,所有样本或者测试集都是可以划分的十分清楚明白的,但是对于业务场景来说,这个指标并不能完全反应业务实际,对于优化的帮助也非常模糊,通过语义不明和知识库范围的概念补充,可以有效平衡这种情况,在有理想指标作为目标的情况下,也能正确的评价知识库的现状。

详情可以参考以下链接:

https://www.cnblogs.com/sddai/p/5696870.html

https://mp.weixin.qq.com/s/zppOFHmwW_4pA8EX4dM_2g

4.7.5知识库健康度评价

一个好的知识库是什么样子呢?

  • 相似问题没有错放
  • 相似问题说法不要冗余
  • 相似问题说法自然,贴近用户的表达
  • 知识点相似问题分布均衡
  • 知识点颗粒度咸淡适中(注1),既不粗又不细
  • 知识点抽象程度一致
  • 专有词汇覆盖全面

对应的,我们可以拆解成以下指标:

相似问正确度

相似问精炼度

相似问自然度

知识点平衡度

知识点清晰度

知识点抽象度

概念完整度

目前吾来系统内的知识库健康度上线了相似问正确度和知识点健康度两个评价指标。

相似问正确度主要解决的是在搭建知识库的时候,经常会犯的一类错误是将原本属于知识点A的相似问错误地放置到了知识点B中。这个指标用来衡量整个知识库下的所有相似问,放置在正确的知识点下的程度,是0-100之间的分数。直观上,相似问正确度分数越高,代表被错放的相似问的数量就越少。

知识点清晰度主要解决的是开发者在搭建知识库的时候,经常会犯的另一类错误是知识库中多个知识点之间边界不清晰,导致知识点之间“你中有我,我中有你”。这种知识点的交叉,经常会导致机器人上线后效果比较差。

知识点清晰度用来衡量整个知识库下的所有知识点两两之间的边界是否“清晰”,是0-100之间的分数。同样的,知识点清晰度分数越高,两个知识点边界越清晰。

知识点健康度分数就是相似问正确度和知识点清晰度的平均数。

对应的下方我们也给出了相应的重点需要关注案例,大家可以检查后做出相应的更改。

除此之外,知识库检查还要检查这样几个方面:

(1)看分类是否清晰易懂,分类规则如果不清晰,会造成维护人员自身都不知道相似问或者新的知识点需要新增在哪里。

(2)看相似问数量少(少于10-20个)的知识点占比,如果用户问的问题所属知识点连10个相似问都不到,很有可能出现召回不了这个知识点的问题。

(3)3.28和之前的私有部署版本还可以查看LOO结果,是否有大量问题存在事实误召。

注1:颗粒度咸淡适中在原文中是说sweet,本来想翻译成酸甜可口,感觉缺失了中文的韵味,咸淡适中是一个更符合中文语境的译法。

4.7.6巧用问答对话统计

问答对话的问答统计页面可以展示一些近期的统计数据,如昨日关键指标,历史数据统计。这些指标能够将帮助我们在没有标注的时间里大致了解机器人的运行情况。重点要观察数据有无异常情况,即从短期来看和长期来看数据指标有无异常波动。

历史数据下的日期可以点击后自行选取时间跨度,最长支持选择过去90天的数据。

在页面下方有知识点召回数据统计,可以看到对应时间段知识点的召回情况,“查看趋势图”可以看到热点问题的使用变化情况,“查看知识点”可以看知识点的详情等有没有编写正确,支持实时编辑,操作和编辑知识点一致。

在运营期间重大事件发生的同时,用户因为受到影响向机器人提问的表现也会有所不同,2020年春节期间,因为新冠病毒疫情影响,很多后台很多在线服务类公众号出现了爆发式的增长,我们的客户中咨询量甚至能比前期高10倍左右,提问题的分类也与往常大有不同,会比较集中的在受疫情影响比较大的物流等方面。

我们想给大家说一点重要经验,就是机器人能很好的帮助大家应对短期大流量的提问,因此,越是提问频次高,越是要在机器人上做好维护,尽量减轻客服的压力。

通过我们客户实际的表现,原本维护机器人比较好的客户,比较正常平稳的度过了这次流量爆发。如果对机器人理解不深刻则会出现的一种思考表现是,新冠疫情这么多年才会发生一次,物流问题机器人都应对不了(不可能加快物流的速度),那就删掉对应的知识点让用户直接转人工好了。但是,没有深入思考的是转人工后,人工客服能解决对应的问题吗?人工客服实际上执行的仍然是安抚等动作,如果安抚就能解决用户的问题,实际上机器人也是可以执行安抚的动作的,即使仍有部分用户寻根究底的要人工服务,那人工服务的工作量和阻力也会少很多。

4.8任务优化指南

4.8.1任务对话效果指标

针对任务对话的效果,目前尚无通用的评价指标和优化方法,但是从整个对话的过程,参考问答的评价指标和方法,一样地,也能进行逐步的拆解从而考虑如何优化。

用户开始对话时,我们要能正确的分类用户的对话,这个用户问题对应的究竟是问答,关键词,还是任务对话。

所以在实践中,常用的指标首先就是触发准确率。

触发准确率=正确触发任务的次数/触发任务的总次数

这里面有一个非常容易被忽视问题,就是在搭建和优化机器人的时候正确的划分问答和任务处理范围的界限。

问答和关键词对话基本上都是聚焦在一轮对话中,不考虑前文对后续对话的影响;但是进入任务对话后的每一轮对话我们都要考虑是否识别正确,流程是否应对正确,话术是否友好等等。以下我们就从触发、填槽、任务逻辑和话术角度来分别看看任务应该如何优化。

4.8.2任务对话触发优化

触发是识别用户意图的关键,只有正确的触发了相应的任务意图,我们才能正确的对用户的需求进行满足。

触发角度我们常见的优化方法和问答优化比较类似,但是与问答区别的是,任务对话会更多的有一些祈使句,陈述句甚至并列句等。

此外,任务对话可能比一般的问答更加依赖句式触发填槽的情况。大家可以看下面这些例子:

句式用户话语
从@出发地 到@目的地 的@出行类型票据帮我订从北京到上海的机票
@手机号帮忙查一下138XXXXXXXX的话费
@城市 有哪些岗位深圳有哪些岗位呢
找@岗位我想找产品运营的工作
@产品型号 的产品说明书有吗A123的产品说明书有吗
@城市 天气怎么样北京天气怎么样
@食物 @人群 能不能吃琵琶孕妇可以吃吗

4.8.3实体与填槽优化

当机器人进入任务之后,或者使用句式触发任务时,就需要着重考虑怎么拿到用户说的关键信息。一般来说我们会添加用户针对同一事物的多种说法,毕竟用户很有可能为服务或产品起很多昵称或者简称。

首先可以通过分析消息记录发现这些句子,重点可以看询问单元后的用户回复。

除了查看用户的消息记录之外,还可以通过短语挖掘功能来补充实体、专有词汇和多种说法。

也可以根据业务上的其他积累进行梳理,毕竟完善的企业业务线中,像产品型号这类是有提前积累的。

4.8.4常见的处理逻辑

姓名、用户名如何收集

使用正则“ ^.{3,20}$”作为吾来的正则实体使用,或放置于“跳转条件-符合正则”规则下。

4.8.5任务逻辑优化

完善分支跳转

对于任务对话,尽量在规划及搭建过程中,除用户的成功用例、失败用例,还要多考虑其他情况的分支。

很多客户会拿吾来使用一步步进行澄清从而给出一个答案,有时,是因为需要填入很多个不同的词槽,这些词槽之间都是平级的,都需要收集,而另外一些情况下,我们可能涉及有层级的引导填槽,在这种场景下我们就需要考虑在已经有末级词槽的结果时,就不需要上面几层再重复填槽了。

这时推荐的做法是将这些带层级的词槽都可以用句式来填槽,而后在意图里通过隐藏单元或者运算单元的赋值模式进行判断或跳转就可以了。

在将吾来作为语音场景对话管理平台时尤其要注意延迟发送、静默、未理解、挂机、侮辱性话语、在忙等处理逻辑。在使用读写表单元、属性读写单元、接口单元时多注意失败(异常)分支的跳转关系配置。

延迟发送、静默、未理解常见配合处理逻辑

静默、未理解常见的处理方法都是对上次发送话术进行的说明,提醒或者重复。常规情况下我们一般用延迟发送或者依次发送配置就能解决。如果有其他需求,我们可以在对接机器人的时候做特殊处理,比如固定发送最后一句回复等。

挂机或者结束对话,在话务处理或者对话处理模块可以给机器人一个特殊的

完善任务运行记录

在任务运行期间,我们可以使用词槽记录单元或接口单元及时记录下来用户的选择或者回复,以便后期统计相关数据。

常见的统计情况有以下几种:

用户信息记录,留取用户资料,需要记录用户的姓名、办理业务等信息;

询问问题记录,如故障收集机器人,可以收集用户每次报的故障,为后期做汇总分析记录;

任务执行情况记录,例如预定会议室情况,课程学习进度,考试模块和分数等。

完善任务异常处理

在任务运行过程中,在有些情况下可能出现配置问题不容易发现的情况,此时可以将运行失败的分支连接到异常通知模块,通过接口单元我们可以通过发邮件,通过企业微信群bot通知等方式提醒异常信息和详情。

任务和问答穿插

通常情况下,将任务开启允许触发问答知识点,就能比较理想的开启任务和问答的配合,这个配置会在不能填槽并且询问次数有剩余的情况下去调用问答先给出一个回复,然后再继续询问任务的话术。

另外一些情况,也会出现任务和问答穿插回复的情况。

  1. 比如我们将对应的任务分支未连接,同时没有其他发消息的消息单元、询问单元或接口单元回复消息,这时也会出现处在任务状态但是任务无回复,机器人会主动去问答获取结果进行回复。如果后期在闲置等待时长内,用户说的话能改变任务运行分支,用户还可以返回对应任务执行;

  2. 通过机器人回复策略设置里将回复设置改为全回复,这样问答和任务就会一起回复了;

  3. 通过接口调用问答,与任务配合使用,实践过程中,又常通过以下两种方式处理:

  • 将问答单独出来用作意图,每次经过这个意图通过接口返回问答答案;
  • 在预处理中使用接口单元,每次用户提问会优先经过预处理,调用问答,问答回复之后再执行任务流程,这种使用方式效果其实与全回复策略区别不大;