如何搭建一个智能客服:从NLP到多轮对话与多流程设计


如何搭建一个智能客服:从NLP到多轮对话与多流程设计

文章插图
作者介绍
@一个圆圈儿
SaaS公司产品经理;
擅长AI、搜索、数据分析、商业化;
智能客服系列文章作者;
“数据人创作者联盟”成员 。
 
对话式人工智能产品越来越常见,从Siri到电话客服,不知不觉中它们已在你身边寻觅了一个位置 。笔者的产品是一款去年上线的客服机器人,简单聊聊从0到1的经验 。
 
从交互形式来划分,智能客服包括纯语音(如天猫精灵),纯文本(如小冰),纯可视化界面(如一些电商的客服,完全通过界面交互来完成对话),语音+可视化界面(如Siri等手机助手) 。交互形式没有好坏,这一点同非AI产品一样,根据用户使用场景选择最合适的形式即可 。
 
从产品定义出发,智能客服类产品,最根本的价值在于以低成本取代人工客服工作中大量重复性的部分,再基于这个前提,去挖掘更多商业变现的可能性 。人工客服的工作大致分为两种,一种是咨询类的,客服只需回答问题;另一种是申请类的,客服要帮客户完成一些业务办理 。
 
因此,从可实现的功能来划分,智能客服可分为问答式和业务办理式,再细分为单轮/多轮问答与单轮/多轮业务申请 。首先什么叫单轮对话呢?
 “吃了吗您呐?”“吃了”那么多轮对话的概念呢?
 “吃了吗您呐?”“吃了”“吃了什么呀”“老北京炸酱面”多轮对话的另一个名字,叫作基于上下文关系的对话 。单轮与多轮申请也是同理,一句话就能解决的为单轮,需要反复几次的是为多轮 。
【如何搭建一个智能客服:从NLP到多轮对话与多流程设计】 
无论是问答还是申请业务,作为一个智能客服,它就离不开NLP,NLP就离不开语料 。在如上的例子中,通常的工作方法是,我们定义一个用户意图叫“吃了吗”,然后把相似的语料(吃了么?吃饭了吗?吃了没?你有没有吃饭?……)喂给机器人,之后写一些用例来测试它识别的准确率,如果识别率较低,就继续喂它语料,直到我们对识别率满意为止 。用同样的方法,我们就可以让机器人学会理解很多种用户意图了 。
 
多说一嘴,其实这里就是机器学习中样本集与测试集的概念 。样本集用来学习,测试集用来测试学习的效果 。另外由于机器学习的本质还是数学与统计,并没有真正的理解,所以学习效果非常依赖语料的质量 。直观的表现是,不同的意图中,语料差异越大,识别的准确率越高 。比如,“吃了吗”和“吃了没”是相似的,“吃了吗”和“看星星看月亮从诗词歌赋谈到人生哲学”是不相似的,那么后者作为两种意图去做识别,就是容易分开的,而前者两个说法过于相近,可能会得到很差的识别结果 。所以训练师需要了解基本的机器学习原理,才能够检查和调整样本集的质量 。
现在我们的机器人已经能够听懂一些人话了,下一步只要定义好回复的内容,比如给“吃了吗”回复“吃了”,给“睡了吗”回复“没睡”,再把这些需求交给可爱的开发同学,一个支持单轮问答的机器人就完成了!(好的这是做一个PM最愉快的时刻了)
 
多轮对话设计的本质,是定义场景和将多个单轮对话进行组合 。对于前面提到的例子来说,在“吃了”后面问“吃了什么呀”是正常的结合语境的问法,而脱离语境问这一句的话,就会让听者感到困惑 。所以这部分的需求是这样写:
 当用户表达“吃了吗”的意图,机器人应回复“吃了”;当用户上一个表达是“吃了吗”and机器人回复是“吃了”and用户这一个表达是“吃了什么呀”,机器人应回复“老北京炸酱面”;当用户上一个表达是“睡了吗”and机器人回复是“没睡”and用户这一个表达是“吃了什么呀”,机器人应回复“亲您想问什么呢?”再次把需求交给开发,我们就得到了一个支持两轮对话的机器人 。如果需要增加轮次或新的场景,那么在此基础上添加相应的逻辑即可 。
 
再说到业务办理,本质是在问答的基础上增加与用户相关的数据交互,比如当用户说“帮我订个车去人民广场”,那么机器人应该回复“好的”的同时,拿用户的手机号和“人民广场”等信息去完成订车这一操作 。大部分时候,业务办理和多轮对话是交叉的,比如订车的场景下,机器人可能需要再问一下什么时间出发,对车辆是否有要求,那么这至少要用三轮对话来完成 。


推荐阅读