15年研发经验博士手把手教学:从零开始搭建智能客服

2018-04-13 08:00:00 InfoQ


作者 | 邢少敏
编辑 | Vincent
近年来,伴随着消费升级和企业服务意识强化,大量人工客服需求应运而生。第四范式不久前对外免费开放智能客服平台(链接:https://bot.4paradigm.com) , 帮助各行各业的开发者都能上手使用上智能客服技术。本次课程将全面讲解这套智能客服系统的底层算法与开发实践,其技术实现原理和细节,将对希望用智能客服来解决业务问题的用户有一定指导意义。更多干货内容请关注微信公众号“AI 前线”,(ID:ai-front)

视频时长约 1小时,声音较小,请佩戴耳机观看

大家晚上好,首先非常感谢大家来参加本次的讨论。今天给大家带来的题目是怎么样去构建一个智能客服系统。也很感谢极客邦提供的这次机会,让大家可以一起探讨一下这样的一个问题。

我是来自第四范式的邢少敏,首先允许我花一点时间介绍一下第四范式是一家什么样的公司。第四范式是一家人工智能技术与服务的提供商,主要是基于机器学习为企业找到一些业绩的增长点,已经为银行、保险、互联网等领域上百多家企业打造了人工智能产品及解决方案。

第四范式成立以来一直致力于降低人工智能的应用门槛,我们的企业愿景是让 AI for everyone,让每一个人都能拥有驾驭人工智能的能力,正是基于这样的一个企业愿景,我们在不久前对外免费开放了我们的智能客服平台(https://bot.4paradigm.com) ,这是业界首个免费的智能客服平台,仅需 2 分半钟即可完成接入。自免费对外发布以来,半个月时间已经有上千家客户在使用。今天这个话题也是围绕智能客服的技术来展开。

其次是做一个简单的自我介绍。

我在第四范式做智能客服的研发,毕业于北京航空航天大学,大约有 15 年左右的研发经验,涉猎的领域也比较广泛:有对话系统、智能客服、自然语言处理、机器学习等。我最早是在 IBM Jazz 技术平台上的工程师,后来去了环信做智能客服的负责人,曾经带领团队研发了环信的智能客服系统。目前我在第四范式主持智能客服的研发工作,带领团队研发了智能客服开放平台。

今天分享的提纲主要是分为四个部分,希望通过分享我在智能客服领域的经验,对各位开发者对理解和应用这个技术有一定帮助。

  • 第一部分是简单的描述一下智能客服产生的背景、历史、应用场景、发展现状等;

  • 第二部分介绍一下智能客服的一般的工作流程,主要的技术模块和工作原理等;

  • 第三部分跟大家分享一下整个智能客服的研发过程中所遇到的一些技术难点;

  • 第四部分分享一下第四范式在智能客服的研发过程中所做的一些工作,以及遇到的一些问题,我们的技术特点,产品特点,研发现状和未来的方向等。

智能客服技术概述

我们首先开始第一个部分的分享,第一部分是智能客服技术概述。

首先是智能客服产生的背景:为什么要有智能客服这样的一个产品,或者说研究方向呢?主要有以下这几个原因:

  • 我们日常生活中会遇到大量的客服问题,比如说你打电话给联通、移动等,或者说在淘宝上买东西,这些问题大部分都是一些重复的问题,而且频率也特别高,非常的耗人工;

  • 对于一个客服密集型的企业来说,大量的人工客服,造成了企业的客服成本非常的高;

  • 人工客服是没有办法做到 24 小时全天候的服务;

  • 在客户和客服的对话的过程中产生了大量的有价值的数据,这些数据也没有被很好的利用起来。

基于以上的这些原因,我们就会产生一个想法:能不能有一个机器人来回答这些重复的问题,它能 24 小时的工作不用休息,降低客户成本,还能挖掘聊天记录里面的一些有价值的知识点。这就是智能客服产生的背景。

那智能客服的这个市场规模大致有多大呢?我们没有办法知道一个准确的估计,但是我们可以从一些第三方的调研报告里面得出一些大致的判断,估算一下它的市场规模:

这是一个第三方在 2016 年做的 2017 年 SaaS 客服的一个市场规模预测,它预测 2017 年 SaaS 客服的市场规模将达到 680 亿人民币。SaaS 客服只是客服中一种,除了 SaaS 客服之外还有企业自建的客服,还有私有部署的客服等等。假如说智能客服可以解决 30% 的客服的问题,这还只是一个非常保守的估计,智能客服的市场规模也是非常大的。

接下来我们看一下如果说要做一个智能客服,那做智能客服的一个基本的目标,或者说它的技术目标是要做到什么样的程度呢?它是要完全的替代人工,还是要部分的替代人工呢?

一般情况下,一个智能客服的目标就是我们这张图里描述的这些:一个客服的机器人负责回答客户的一些高频简单问题,将疑难问题交给人工客服团队来回答。那这个一定比例是多大比例呢?我这边写了一个百分之 X,也就是说这个比例不太确定,它是根据不同的场景以及不同的技术条件,不同厂商的技术能力而不同的,有的厂商是 80%,有的是 90%,有的甚至 95%,这都是不确定的。

总之智能客服做的一个技术目标就是:一定比例的解决客服的简单的高频问题,将疑难问题仍然交给人工客服团队。这是目前智能客服一个基本的技术目标,是一个比较现实的目标。那么想让客服的机器人来完全取代人工客服,这个目标到目前为止,在绝大部分场景下还是没有办法实现的。

不过到现在为止,整个智能客服系统的发展非常快,应用也划分了很多的细分领域。这个不一定是一个完全准确的分类,只是说从我个人角度来讲,它可能是大致能分为这么几类。

第一大类是对话操作系统级别的系统。那么这一类系统比较有代表性的有亚马逊的 Alexa,这些系统都希望做操作系统级别的人机对话,就是把人机对话直接做成一个操作系统,那在这个系统上开发各种各样不同的智能硬件、软件等等这些应用。

第二大类,就是智能客服,智能客服里面又细分成两类:一类是企业内部的智能客服,为了企业自身的业务发展需要研发的智能客户系统;还有一类是对外服务的智能客服,并且以 SaaS 的方式对外服务。

第三大类就是个人助理类,最有名的就是苹果的 Siri,还有微软的 Cortana 等。智能家居现在做得比较火热的就是一些智能音箱,比如说亚马逊 Echo 等。还有些公司是做一些智能交互的服务,这些智能交互服务主要是自然语言处理和意图识别方面的服务,其他的厂商可以基于这些智能交互服务做一些自己的应用。

另外还有一些教育类的教育机器人,知识问答类的机器人和开放领域聊天类的机器人。

最后一类是开放平台,这个开放平台也可以叫 Bot Factory,比较有代表性的,有 Google 的 API.AI、Facebook 的 Wit.AI、还有微软的 Luis.AI 等等。这些开放平台主要是做任务对话方面的一些定制。

在以上多个细分领域的应用中,智能客服系统最常见的功能有哪些?目前最常见的形式是在人工客服系统基础上,扩展出智能客服的功能,最常见的功能有 单轮问答、功能对话和人机协作。

单轮问答,单轮问答就是说,一问一答,但是没有记录上下文,每一次问答和下一次问答都没有任何的关系;

多轮对话,意思是说,是带着上下文来问答,每个问答可能跟它的上文是有一定关系,或者是它记录了上文的一些信息;

人机协作,人机协作是一种比较有效的一种智能客服功能,现有的方式主要有两大类:一类是机器人加人工进行问答,另外一大类是机器人推荐答案,人工选择回答 。

那么机器人和人工如何进行协作呢?我们这里举几个例子:比如说上班的时候人工来回答,下班的时候机器人来回答;普通的客户机器人来回答,VIP 客户人工来回答;或者是说分渠道来选择,比如说微信渠道来的机器人回答,手机渠道来的人工回答;还有就是机器人优先,机器人答不出来,转给人工回答。

当然并不限于我们在这里举出的这几个例子,还可以根据业务需求,定制复杂策略:机器人推荐答案给人工,人工客服来选择和编辑答案、或者给出另外一个答案,机器人在这里起到了一个人工客服小助理的角色,这也是最常见的人机协作方式。

智能客服工作原理

刚才我们是给智能客服做了一个概述。接下来,我们介绍一下智能客服的工作原理。

一个常见的智能客服,就包括以下这些模块并且按照一个类似的流程进行工作。

首先可能会有一个 ASR(语音识别)模块,也可能没有,这取决于具体厂商的一个选择,这个语音识别模块会把语音转换成文字。

如果没有语音识别模块,直接就是文字,会首先对这个文字做一个问句的理解,或者说做一个查询的理解,理解完以后,再对意图做一个识别;最后,我们把这个问句的理解和意图识别的结果带到对话管理系统里边,对话管理系统会决定到底是给哪一种机器人发过去,这些机器人最后给出答案,将答案返回。

对话管理系统可以选择一个机器人将问题发过去,也可以同时将问题发给所有的机器人,当它们都回复答案时,进行答案选择再返回,使用哪种方式取决于厂商自己的一个选择。

上图中这四种机器人分别对应了四种不同的模块:

第一种是任务管理类的模块,比如说订机票,它属于一个特定的任务,这种机器人就类似苹果的 Siri,是任务处理类;

第二种是知识库问答,也就是咨询问答类的,只是做一些咨询类的工作,一般情况下,它并不处理实际的一些任务;

第三类是知识图谱问答,知识图谱是知识库常见的是提供一个问答对结构和一个树型结构,知识图谱提供一个图结构,可以认为是一个广义上的知识库问答。

第四类是聊天机器人的技术,聊天并不是客服的首要功能,客服主要是解决问题的,不是来聊天的,为什么在一个智能客服系统里面会有聊天这么一个功能呢?原因在于,一是在用户没有输入知识库内容的时候,这个聊天机器人会被客户当成是测试厂商机器人技术能力的评测对象;二是在某些场景下,会让整个客服对话没那么单调。在实际的智能客服系统里面,一般也可以选择让用户可以关闭聊天功能。

接下来我们把这张图展开,一个模块一个模块的讲,因为一般很多客户主要还是使用文字客服,语音识别属于另外的一个领域了,所以我们这里暂时不展开语音识别的内容。

自然语言理解主要做一些什么事情呢?比如说用户的问题如果是多句话,那么我们做一个“分句”,对每一句话来寻找答案,最后呢,将答案组合起来,发给用户;“分词”很常见,分词后才能理解,才能进行标注,进行实体识别,这是常规的一些处理,然后就是句法分析、指代消解,再有就是词权重、语义相似度等等,做这些分析都是为后面的算法做准备,这是第一部分的预处理工作,就是自然语言理解或者自然语言处理的内容。

第二部分的预处理工作就是意图识别。意图识别主要是用户的这句话暴露了用户什么样的意图,比如说我们这个例子里:“今天天气怎么样”,这个意图实际上就是用户要问天气。那么如果用户说“帮我定一张去上海的机票”,这个意思就是用户要订机票。

那么意图识别一般是怎么实现的?就是有模板和分类器两种方式。模板的方式,比如说:“北京今天天气怎么样?”我们会建一个叫“city”的词典,这里面会有北京、上海、天津等城市;我们会把今天、明天、后天等等也做一个词典,词典名字叫做“date”。这样如果满足刚开始有一个“city”,中间有任意字符串,然后再有一个“date”,然后再有“天气”这个词,就满足了一个模板,那么我们基本上可以认为它是一个询问天气怎么样的意图,这是模板的方法。

分类器的方法很容易理解,我们在某一个特定领域里面收集大量语料,人工去标注这些语料是属于哪种意图的,用分类器模型来做一些二分类或者多分类的分类器,用来判断意图。但是分类器方法需要大量人工标注的数据,以及如何去收集多个领域里面的语料的问题。

接下来整个系统里面就进入了功能模块。我们先看功能模块的第一个最常见的模块,这也是智能客服系统里面常见的一个功能,就是知识库问答的功能。

知识库问答的技术本质也是用一些跟搜索引擎相似的技术,分为两个阶段:第一个阶段是侯选集召回,第二个阶段是重排序。

首先是侯选集,侯选集召回有很多种方式,和搜索引擎相比,相对简单,原因是搜索引擎要召回的量特别的大,但是知识库,因为是人工导入的,它的召回的就没有那么复杂。

第二是重排序,其实我们可以用文本相似度、检索相关度,如果有足够数据的话,还可以用神经网络的语义相似度等,来做重排序工作。这些工作也可以用多模型融合的方式来做,将多个模型的结果综合考虑得到最终结果。这些都跟搜索引擎的技术没有特别本质的区别,也会有些微小的差别,这是知识库这块的工作。

接下来是跟知识库比较相关的一种工作,知识图谱问答。

知识图谱问答最难的一点在于数据的整理,其次是工具方面。有很多开源的工具,我们列出来这几种(见上图),大家也可以自己去研发一些知识图谱的工具。

假设我们解决了数据来源和更新的问题,同时也有了工具,接下来要做的事情就是查询转换的工作。

因为一般的知识图谱工具都会有一些自己的查询语言,那么我们所要做的工作实际上就是把自然语言通过某种方式转换成知识图谱的工具所支持的查询语言。

查询转换也有常见的两种方式,一种是可以用模板,做一些查询转换的工作;如果有足够多的数据,也可以用机器翻译的方式来做。

这里还有一些我们自己的系统支持的知识图谱问答的例子。我们现在的系统已经具备了通用知识图谱的能力,行业知识图谱或者自定义的知识图谱很快会上线。大家就可以看到,这是第二个模块,知识库和知识图谱可以整合成一个模块来做,统称为知识库问答。

那么第三大块就是对话技术。对话技术就是我们前面所说的任务对话等等,比较典型的有三大类:

第一大类是一种用状态机,或者和状态机类似的填槽方式。这种方式的主要特点是将整个的对话过程抽象成一个有限状态机,每一轮对话,或者每几轮作为一种状态,随着对话状态的进行,这个状态机在不断的迁移,最终对话结束,状态机也结束。这里面的所有状态,以及所要执行的动作都是事先约定好的,所以状态机它比较适合一些场景简单的对话,对于场景复杂的对话,状态机这种方式就已经不太适应了。

第二大类就是马可夫决策过程(Markov Decision Process, MDP)的方式,它和状态机的区别在于它里面增加了动作,状态机里面的动作是我们事先约定好的,是固定的动作,已经事先知道对话到了那时候,于是就固定的采取这样的动作,但是 MDP 这种方式,状态不确定,动作也不确定,所以说我的状态和动作是需要根据我的上一个状态和将要采用的动作做了以后的回馈(Reward)来进行决策的,所以说这个决策过程在特定领域里有足够的语料的时候可以做出很好的效果,但是我们得想办法去找到合适的领域,以及找到足够的语料才能做这样的事情。

最后一类是端到端的模型。端到端的模型主要出发点是:我有一个问题,把问题输入到一个模型里面之后,这个模型是帮我解决了我们之前整个对话过程所有流程的所有问题,而这个模型是需要从数据里面去学习,包括自然语言处理、意图识别,包括整个系统里面方方面面的各种东西都要学习到。这个模型对于我们来说它是个黑盒,我给它一个问题,它也能给我答案,我并不需要仔细的去研究里面是怎么做得,我只需要设计训练这么一个模型就行了。

那么这三种方式是现在的比较常见的三类对话技术,第一大类,像状态机和填槽这一类是商用系统的主流;第二大类是学术界的主流,但是工业界也在积极的尝试,有的也已经落地,或者接近落地;端到端这种模型,主要还是停留在学术界的研究阶段,我并没有看到哪一个商业系统已经做到了端到端的模型的产品化,还没有成为商用主流的技术。

左上角是一个状态机示意图,右下角是一个 MDP 模型示意图。

最后一个模块,就是聊天机器人。

在智能客服系统里面通常都会有聊天机器人的模块。这个模块主要有两种做法:

第一种就是检索式,比如答案是事先编辑好的,并不会随便生成,在检索式里面又会分为两大类:第一类是用大量的语料和模型来训练,收集大量的语料,把问题和答案给一个神经网络的模型,用这个模型帮我去找到问题和答案之间的相关度,这样的话,就能够用大量的语料训练出聊天机器人模型,这是最常见的一种方式;

第二种方式是基于规则来做,使用类似于之前介绍过的 Alice 机器人所用到的 AIML 标记语言,写大量的 pattern,以及在这个 pattern 下所需要的答案,写大量这样的人工规则就可以做一个检索式的机器人,但是这仅限于少量的小规模应用,如果需要编辑大量的规则,规则之间可能会有冲突等问题,所以主流的这种聊天机器人的方式是我们说到的第一种,用统计模型和大量的语料来训练聊天机器人。

第二种是生成式的聊天机器人,我需要把我的答案直接生成出来,这种方式是需要限定在一定的领域里面。开放领域里直接生成式的聊天机器人会有一些敏感词的问题,因为语料一般是网上收集的,想做到所有语料都人工审核成本是巨大的。所以说生成式需要把它限定在一个特定的领域里面,生成式分为两种:一种是纯粹的生成,一种是基于一些模板来生成。

基于一些模板来生成,是说对答案事先定制好一些模板,生成的答案只是在模板里填空,这样的话就能控制答案;第二种生成是纯粹的生成式,但是只能把它用在特定的一些场景下,并不用它来做全开放的聊天机器人答案的生成,只能够用它来做一些限定领域的,比如对联的生成、古诗词的生成等,这些风险相对较小。

讲到这里,我们基本上已经把最开始的那张流程图里的所有的技术点讲的差不多了。

智能客服的技术难点


第三部分就是跟大家一起探讨一下智能客服的技术难点:我们在做智能客服这样的一个系统的时候,可能会遇到哪些的技术难点?主要有这么几类:

第一个难点是:数据冷启动的问题。

数据冷启动就是说在绝大多数情况下,我们实际上是没有足够的数据来训练模型的,这个时候,我们怎么做?

在面对这种数据冷启动的问题,很多模块的设计里面都会考虑怎么样去在缺少数据的情况下把这个事情做起来,大致有两种办法:一是先用一个通用的模型,等到数据足够多的时候优化这个模型;第二种是先用规则的方法做,先把这个模块做起来,等到数据足够多的时候,再来启用模型的方法,这两种方法都可以走的通,但是要根据具体的情况来具体分析。

第二个难点是:多轮对话的问题。

尤其是多领域的对话,多领域的多轮对话仍然是一个难题。在一个单领域里面,我可以把对话技术做得很好,比如说像最简单的订机票可以做得很好。但是如果说在很多不同的领域里面,这边是订机票、查物流、那边又是去做一些其他的什么电商相关的事情,这个多领域的对话怎么办?我们是没有办法在多个领域都拿到足够的数据,在这种情况下多轮对话是一个比较困难的问题。

第三个难点是:人机协作。

人机协作这块现有的方式前面已经提到过了,现有的方式实际上没有办法最大化机器人的价值,也就是说机器人在整个智能客服的系统里面它起的仍然是一个辅助的作用,而不是主要的作用。

为了发挥这个机器人的作用,我们需要去探索一些新的方式,比如说我们能不能做到人为辅助,然后机器人来主要回答这个用户的问题呢?这也是我们现在正在研究的一个新的方向,对于这些技术难点其实我们也可以共同来讨论有什么样的解决方案。

第四范式智能客服

那刚才我们讲了很多,一个智能客服系统,它是需要什么样的能力呢?总结一下:

  • 首先需要有自然语言处理的能力,一个智能客服系统其本质就是一个自然语言的对话系统。而机器学习、深度学习等都只是实现自然语言对话系统的手段。

  • 其次要有意图识别的能力,要有一些知识库问答、知识图谱问答、任务型对话等能力。一般情况下,还需要对智能客服系统提供聊天的功能,这才是一个比较完整的智能客服系统。

然而对于企业级开发者来说,智能客服的接入是有一定的门槛的。实际上,开发一套智能客服系统,需拥有自然语言处理、意图识别、知识图谱、单轮 / 多轮对话等引擎作为支撑,其中涉及自然语言处理、语义相似度、状态机、高维机器学习、深度学习等诸多底层算法……这样的门槛让很多没有人工智能人才与技术储备的企业难以获得智能客服。此外,现有的很多智能客服系统都是封闭的,你并不了解它里面是怎么工作的,它也不会去向外开放,这就让用户没有办法在它上面做二次开发。

为了改变这种行业困境,第四范式研发了智能客服的开放平台,帮助企业级开发者零成本、零门槛地搭建自己的智能客服系统。

首先看一下第四范式智能客服的一个概念图:

我们会有基础服务层,基础服务层里面会有自然语言理解的各种服务,因为这是我们系统的一个示意图,所以它里面只写了很少的几个部分,实际上我们所做的远远不只这 5 个部分,自然语言理解有很多的事情,我们都做了。第二个是意图识别的服务,这两个作为一个基础服务层为上层的功能模块来服务。

再往上就是四个功能模块:任务对话、知识库、知识图谱,还有聊天机器人。在这之上是全渠道低门槛接入,我们现有五个渠道,后面还会扩展更多的渠道,是一个真正的全渠道接入的智能客服。

还有一点,有一个反馈自学习层,这个反馈自学习是根据客户对答案的反馈,以及人工客服对答案的反馈进行自我学习,一是调整、问答质量,二是对知识库做一些生成。

图中是我们所提供的四个功能模块。我想重点想讲一下我们整个产品有什么样的特点:

第一个特点就是针对之前讲的,客户觉得接入门槛高的问题,我们全渠道都是分钟级接入,现有的渠道(APP、微信公众号、Web 端、微博等),以及未来的一些渠道都可以在几分钟之内快速接入,就是让用户快速的拥有智能的能力;

其次我们有一个自学习的模块,自学习就是我前面所提到的,它在整个过程中会去学习一些反馈,这些反馈达到一定量的时候它会反映在这个问答的结果上,或者说对知识库做一些调整;

再次,我重点想讲一下开放平台,首先我们的智能客服产品是一个免费的 SaaS 服务,它的基础服务是永久免费的,如果一家公司想要使用我们的智能客服系统,并且它的需求在我们的研发计划之内,那么它可以永久免费的使用我们的服务。

那么为什么我们要做这样一个免费的开放平台呢?第四范式的企业愿景是把 AI 的能力赋能给企业客户甚至是个人。因此我们希望做一个开放平台,允许企业的开发者、甚至是第三方的厂商,在这个已经很成熟的基础的技术平台上,做出自己企业需要的智能客服系统,或者做出自己细分领域的解决方案,只有这样,智能客服这个市场需求量极大的技术才能真正遍地开花。

接下来这三张图是通过不同的接入方式接入以后的实例:

下面两张图分别是安卓的手机接入和 IOS 的手机,因为安卓和 IOS 采用的是 SDK。它最典型的场景是集成完以后,在这个手机 APP 上点一个类似于“联系客服”这样一个按钮,就会出现下图中这样的一个聊天窗口,用户就可以和机器人对话。

最后再分享一下第四范式智能客服的开放平台网址:

链接:https://bot.4paradigm.com

建议用 Google 浏览器打开。

今天的分享就到此结束了。非常感谢大家的时间,谢谢。

作者介绍

邢少敏,第四范式智能客服负责人 & 资深数据科学家,毕业于北京航空航天大学,获博士学位。15 年研发经验,对话系统、智能客服领域专家,在自然语言处理、机器学习、深度学习、互联网系统技术架构等领域拥有丰富经验。前 IBM 资深工程师,IBM Jazz 技术平台核心工程师。前环信智能客服技术负责人,从 0 开始带领团队研发了环信智能客服系统。目前主持第四范式智能客服的研发工作,带领团队开发了智能客服开放平台。