机器人是如何实现对话的?

对话机器人作为近年来愈发普遍的产品,以各种各样的形态出现我们的生活中:电话客服、文本客服、超市里的导购机器人等;那这些机器人如何实现和我们人类的智能对话的呢?本文将用显浅易懂的文字讲述机器人的对话原理与产品设计要点。

机器人是如何实现对话的?_第1张图片

一、你都见过什么样的对话机器人

在正式开始接受设计原理前,我们一下来回顾下生活中,常见的对话机器人包括哪些类型:

1. 文本型智能客服

这种类型的对话机器人大多出现在app中或者网站上,以文字为主要的交互方式,旨在为顾客提供常见的问题解答与简单任务的处理(如退货,换货等);常见的有:

  • 阿里小蜜
  • 京东JIMI
  • 唯品客服

2. 话务型智能客服

这种类型的对话机器人常见于银行与大型企业(如家电)的话务咨询上,以语音为交互方式,同样也是为了解答顾客的常见问题与处理简单任务(如查询余额、充值等);常见的有:

  • 工行工小智
  • 中行智能客服
  • 海尔智能客服

3. 个人助手

这种的对话机器人现阶段基本已经渗透到了每一台智能手机,进入大多数人的日常生活,旨在为用户提供一种语音交互的手段来提高操作的效率(如闹钟设置,日程提醒);常见的有:

  • Siri
  • Google Assistant
  • Alexa
  • 小爱同学

4. 工作助手

这种类型的对话机器人主要用于以文本或者语音对话的形式帮助员工进行假期申请,事务提醒等日常工作事项,起到办公事项的整合(各种办公事项都可以通过工作助手对话来实现)与效率的提高;常见的有:

  • slack
  • 钉钉

二、对话机器人的价值

1. 售后接待

在这个场景下,对话机器人最大的价值在于问题的拦截,即100个顾客来咨询,最终需要人工客服解答的顾客只有10个——大大降低客服成本。

2. 售前接待

这种场景下,对话机器人最大的价值在于接待的及时性;想象下,淘宝里询问掌柜问题,若是掌柜隔了五分钟再回复,那基本就不会在这家店买东西了。因此,这类机器人在顾客到来的第一时间由机器人接待,同时机器人也在通知掌柜的抓紧上线,接管会话。

对于企业服务来说,这类机器人还会判断顾客的意向程度,针对高意向的顾客会引导留下联系方式,方便后续客户经理的跟进。

3. 个人助手

这种场景下的机器人,最大的价值在于以语音交互的方式提高用户操作效率。例如在晚上在床上准备睡了,忘了设闹钟,而手机在桌子上,这时候一句话就能完成闹钟设置想必是一个很爽的体验。

三、问答型文本对话机器人

这类型最典型的代表就是文本智能客服,这类客服常见于各种app中,以文本的形式为用户排忧解惑。

1. 工作流程

下面我们来看下一个文本型智能客服的完整工作流程:

1)用户发送消息:用户以文本的形式输入自己的问题。

2)NLU:NLU单元收到用户的文本消息后,进行自然语言理解,识别用户的问题,输出识别结果

3)对话管理:对话管理单元收到NLU的识别结果后,找到该识别结果对应的回复内容,进而以文本的形式输出回复内容给到用户

2. NLU到底做了什么

在整个工作流程中,NLU作为核心环节之一,想必是许多朋友们希望能够了解的,那我们接下来就讲讲,在这一个环节里面,机器到底是如何理解人类的语言的。

如果用一句话来概括NLU的工作的话:根据用户的问题,在知识库中寻找对应的问题。

这里涉及了一个概念,知识库:所有用户常见问题的集合(包含同一个问题的多种问法与回答)。

这就好比一个行军打仗的将领,面临大敌的时候,拿出仙人给的锦囊,从锦囊里掏出一条退敌的妙计。知识库在这里就好比是锦囊,而挑选出锦囊中的妙计这一过程就好比NLU的工作。

2.1 基于统计学的自然语言理解

实际应用中,NLU常用的技术是基于统计学的自然语言理解,即:通俗的说就是把用户的问题经过简单处理后,和知识库中的所有问题进行相似度计算,找到相似度最高的问题,然后把该问题的答案返还给用户。

用一句话来概括就是:找相似。

而在这个过程中,又可以详细的拆分为以下几个环节:

  • 分词:顾名思义,把一句话,进行分词处理,这也是中文自然语言理解领域最痛的一点,一旦分错,后面的工作都白费了。而英文不一样,英文本就是每个词都用空格隔开的,不存在这个问题。
  • 去除停用词:把一些没有用的词去掉,例如【的】【呢】语气词、副词等,精简句子,输出最简表达。
  • 词性标注与命名实体识别(时间,货币):针对最简表达中的词性进行标注,同时针对一些专有名词名次进行识别,我们叫命名实体识别,如时间、货币、楼盘名称、人名等领域知识的识别。
  • 向量化(word2vec):想要计算机处理这些数据,向量化是一个不错的方法,利用word2vec等算法把文本向量化。
  • 计算相似度(BM25算法,TFIDF,分类与检索):完成了文本向量化之后,我们就需要计算用户的这个问题和知识库中每一个问题的相似度了,并从中找出相似度最高的一个知识库问题,并把该问题对应的答案返还给到用户。其实整个过程又可以分为两个过程:召回与排序;通过分类算法(如Bert)找出知识库中用户最有可能问的几个问题,进而通过检索算法(如BM25)计算这几个候选问题的相似度。

2.2 其他NLU技术

1)基于模版标注的语言理解

基于模版标注的自然语言理解也是常用一种技术,人工标注知识库每个问题的最简表达、关键实体、同义词标注。这样做的最大好处就是识别的准确率高,因为系统通过标注数据,已经知道了知识库问题的最简表达,以及每个问题的关键词,以及同义词;进而利用这部分数据去解析用户的问题,往往能够得到更加准确的识别结果。但是,缺点也是同样明显,需要针对每一个问题的每一个文法进行标注,典型的有多少人工,就有多少智能的做法。

2)基于知识图谱的问答(KBQA)

另外的话,基于知识图谱的知识问答也逐渐走上舞台。通过知识图谱来对问题进行语义解析。例如姚明的老婆的国籍这样一个问题,知识图谱先找到姚明,然后找到姚明的老婆叶莉,最后找到叶莉的国籍中国。这项技术的准确率一般很高,但是能够覆盖多少问题,就要看这个知识图谱建设的好不好,够不够广;而知识图谱的搭建,本身就是有多少人工,有多少智能的工作。

3. 知识库的构建

讲了NLU之后,不得不讲的就是知识库了,顾名思义,就是【知识的宝库】,里面收集了所有希望机器人能够回答的问题,对应问题的N种文法(如价格这个问题:多少钱?怎么卖?价格怎样?),以及问题的对应答案。

构建一个知识库的步骤也很简单(简单,但不代表很快,它需要多次调整和补充):

  • 收集问题:收集我们希望机器人能够回答的所有问题,一般客服中心都有这种知识库,没有的话可通过相关部门人员结合日常工作内容进行总结整合。
  • 填写问法:即一个问题对应的多个文法,这个需要穷举(如价格这个问题,问法可能有:怎么卖?多少钱?等),可利用同义词和句式的改变来进行思考,一般这是传统客服知识库没有的内容,需要重新整理。
  • 补充答案:即该问题对应的答案,这块内容也是传统的客服知识库就会有的内容,但是一般建议对每一个问题最少填写两个答案,为的就是在用户提出同一个问题的时候,可以对同一个问题有不同的回答方式(但意思相同),让用户体验更好。
  • 知识库模型发布:每一个知识库就是一个NLU模型,因此每一次的知识库更新也就意味着NLU模型的更新:系统把知识库中的内容(问题与问法)输入到模型中进行训练,得到一个专门针对该知识库的NLU模型。

四、闲聊机器人:做个有温度的机器人

除却问答型的机器人外,市面上常见的还有闲聊机器人,最典型的代表就是微软小冰:无聊了,寂寞了,都可以找小冰说说话,而小冰一般也能给出不错的对话内容。

要满足机器人的闲聊场景,做法和问答型机器人大同小异,就是加入一个闲聊的语料库,这个语料库一般都可以从网上找到,但语料的覆盖范围和提供者所从事的服务有很大的关系,例如阿里云小蜜的闲聊就满满的都是淘宝味,毕竟那些训练的语料大都来自于淘宝体系内用户和掌柜的聊天内容。

而一般的智能客服厂商,为了更好的衔接对话,也为了让用户有一个更好的对话体验,一般也会加入一定量级的闲聊语料库,但这个库一般却是不允许编辑的,里面涉及一些敏感词的管理,以及运营成本的考虑。

而这个闲聊语料库,厂商必定也是在服务客户的过程中,根据对话记录去不断丰富和完善的。

五、任务型机器人:做一个能够解决问题的机器人

图片中是一个物业报修机器人的对话截图,一个用户通过和机器人的多轮对话,完成了问题的描述并成功报修。

类似的场景逐渐得到了越来越多的应用,例如海尔的家电安装预约已经实现了全量的机器人接待和预约,一方面大大的节省了企业的人力成本,另一方面也解决了及时响应消费者的问题。

1. 什么是任务型对话机器人

在开始讲任务型对话机器人设计之前,我们先明确下任务型对话机器人的定义:

  • 任务型机器人指特定条件下提供信息或服务的机器人
  • 场景案例:查天气,设闹钟,订餐,订票,播歌
  • 通常需分多轮互动,用户在对话过程中不断修改与完善需求,任务型机器人通过询问、澄清和确认来帮助用户明确目的

结合以上定义,我们就不难理解,完成一个任务型对话,需要进行以下三个关键点的设置:

  • 意图识别设置:即设置一个意图(一个意图一般对应一个任务与操作),以及用户如何发问才能触发该意图,如示例中的物业维修就是一个意图。
  • 词槽设置:即需要执行该意图任务所需收集的关键信息,如示例中的物业报修,需要知道用户具体是什么问题才能生成物业维修工单。
  • 回复设置:即当机器人完成了所有关键信息的收集且执行了意图任务之后,对用户的回复,可能是一句话,如示例中的【收到,回头会有物业维修的师傅联系您】;也可能是一个执行结果,如示例中的工单接受通知。

2. 意图设置

意图,就是用户想要达到的目标。上图的示例讲的是一个早餐预定的例子。

对于机器人来说,我们得先告诉它,用户输入了哪些内容之后,即可认为用户想要达成的就是该意图。而这个设置,一般有以下几种常见的方法:

1)对话样本集

例如示例这里的意图是早餐预定,那么当用户输入:预定早餐、订一份早餐等语句的时候,即可认为用户想要达成的就是早餐预定这个意图。

而这个设置的基本原理和方法与知识库中的问题设置基本一样,就是把用户表达该意图时常用的对话样本进行收集和录入。后续用户只要表达了相近的输入后,系统就会按照该意图来执行对话。

2)关键词

这个很好理解,就是对用户表达某个意图时的关键词进行识别,只要用户的表达中含有这些关键词,系统就会按照该意图执行对话。例如订火车票这个意图,只要用户提及【订火车票】这个词时,即可让机器人进入订火车票这个意图的多轮对话。

3)句式模版

句式模版这种方法,其实就是把某个意图的语言表达进行规则化的抽象。例如订火车票这个意图,一般的表达就有:订一下从广州到长沙的火车票。像这种表达就可以抽象成这样的句式模版:【发起预定】+【出发城市】+【到大城市】+【票类】

3. 词槽设置

词槽是多轮对话过程中将初步用户意图转化为明确用户指令所需要补全的信息。例如说,示例中的早餐预定,我们识别到了这个意图之后,还需要知道顾客想要吃什么,什么时候来拿——这两个关键信息就是机器人在执行这个意图前需要完成收集的。

而词槽设置一般包含以下几个关键环节:

  • 词槽设置
  • 词典设置
  • 澄清话术设置

1)词槽设置

词槽设置的核心在于明确执行该意图过程中,需要明晰哪些关键信息。例如示例的早餐预定,那【时间】和【吃什么】则是两个必须明确的信息。

当然,除了必须要明晰的信息外,我们也可以让机器人去记录一些非必要因素(例如是否加辣),如果用户有表达这个信息,机器人则会记录相关信息;若用户没有表达该信息,机器人也不回去追问。

2)词典

词典,即告诉机器人,那些关键信息都有哪些枚举值。例如示例的早餐预定,【吃什么】这个词槽的词典,就包含了:饺子、牛肉丸、萝卜糕等词。

而机器人只要能够完成这些词的识别,即可完成【吃什么】这个词槽的填写。

至于词典的设置,一般分为两部分:

  • 系统预置词典:对于像时间、货币、地点、城市这些信息,系统一般会提供预置词典,用户只需要自己选择即可。
  • 用户自定义词典:而对于一些特定领域的专有名词,则需要用户自己去定义,例如楼盘的名称,菜单的名称等;只有设置了这些词典,机器人在遇到这些特殊领域的专有名词时才能够更好的识别和完成关键信息的提取。

3)澄清话术

既然一个意图中设置了若干的关键信息(词槽)需要用户填写,自然就会存在用户在表达意图过程中没有一次性表达清楚所有的关键信息,这时候机器人就需要针对一些必要的关键信息做追问,并根据用户的回答完成关键信息的识别和提取。

而这个追问的话术,正是这里的澄清话术,即我们告诉机器人关于某个具体的关键信息,机器人应该如何发问。且一般针对同一个关键信息,会设置多个澄清话术,为的是在追问用户同一个关键信息的时候,机器人能够用不同的化询问同一个信息,让用户能有更好的体验。

4、回复设置

当机器人完成用户意图的识别,且完成了关键信息的收集后,即可进行意图的执行。而意图的执行后,机器人需要给用户一个回复(总得告诉人家做得怎么样嘛),这个回复可以是一句话,也可以是一个操作的执行入口,又或者是意图执行之后的模版消息,也可是一个h5页面等等,这个要具体场景,具体而论,没有太多的限制。

六、综合型对话机器人

当前市面上的机器人,更多的是综合型的对话机器人,即同一个机器人,挂载了问答知识库、闲聊语料库以及多个任务技能。只是每个机器人根据自身具体的服务场景,在知识问答、闲聊、任务对话三者上面有所倾向罢了。

也正是因为综合型对话机器人的出现,让我们现在的生活更加多彩,我们才可以在深夜十二点进行物业报修预约,才可以夜深人静的时候有个倾诉的对象,才可以在懒癌发作的时候通过一把声音控制家里的电器。

那是不是只要一个综合型对话机器人做到了以上的内容,就可以高枕无忧,和我们人类畅通对话了呢?显然不是的!上面这些内容如果形容为游戏中的核心装备的话,那要做好一个对话机器人,还需要针对不同的服务场景增加不同的辅助装备——这方面我们下回分解!

 

你可能感兴趣的:(机器人是如何实现对话的?)