一站式客服机器人应用架构

一、“一站式”客服机器人架构

“一站式”客服机器人相比于目前的客服体系有着很大的优势,但同时也存在着巨大的挑战。

由于用户进入“一站式”客服入口时,不同于各业务线的咨询入口带有明确的情境,我们需要通过自然语言理解的算法来获知用户的服务需求。另外,“一站式”客服入口具有的众多技能也需要在合适的时候被激活,因此我们需要一个对话管理的模块来控制这些技能的激活,同时对话管理模块也会与自然语言理解模块共同使用,更精准地解析用户的真实需求。

图4是“一站式”客服机器人在算法端的完整架构,服务端的接口调用以及前端的展现逻辑在该架构中省略。自然语言理解的模块主要包含三个子模块,领域分类、意图分类以及槽位解析,该模块的结果输出到对话管理模块。对话管理模块更新当前的对话状态,并根据解析出的用户意图选择合适的机器回复。最终的回复生成模块负责调用各类问答、推荐以及技能类服务,并使用自然语言对用户的需求做出回复。

图4 一站式客服机器人算法端架构

在对“一站式”客服机器人的架构有了初步的了解后,我们再重新回顾第一部分的两个例子。

在图5中用户进入该入口并发起咨询,“我取消了机票订单但还没收到退款”,自然语言理解模块解析出领域为机票,意图为机票领域的问答。对话管理模块选择机票问答对应的Action,调用机票业务线的业务常见问题服务(FAQ)回答用户的问题。用户的需求得到满足后,进一步地咨询酒店的退款,自然语言理解模块识别到用户的意图为酒店领域的问答,对话管理模块选择酒店问答对应的Action,调用酒店业务线的业务常见问题服务(FAQ),从而满足了用户完整的服务需求,达到“一站式”客服的目标。

图5 一站式客服机器人完成用户跨业务线的服务需求

我们再看图6的另一个例子,用户在酒店预订的过程中咨询某家酒店是否有游泳池,自然语言理解模块解析出用户的意图是酒店领域的问答,并且解析出酒店和酒店设施的槽位,对话管理模块填入酒店和酒店设施的槽位,并请求酒店的KBQA服务,获知该酒店无游泳池。用户进一步询问附近是否有其他的酒店是有游泳池的,自然语言理解模块解析出用户意图是酒店领域下的推荐,并且解析出酒店设施的槽位。对话管理模块更新酒店设施的槽位,并把中心地标和酒店设施带入接口,查询满足相应条件的酒店。

图6 一站式客服机器人完成用户酒店咨询和酒店推荐的需求

二、自然语言理解算法

我们在第一部分描述了建立“一站式”客服机器人的动机,并对比了其与目前各业务线咨询入口的异同点。在第二部分,我们给出了“一站式”客服机器人的算法端架构,并结合两个例子具体描述了其工作流程。从机器人的架构来看,自然语言理解是其中的第一步,也是非常重要的一个模块。只有正确的理解了用户Query的含义,机器人才能通过对话管理和自身具备的各项技能来服务用户。

自然语言理解模块对用户Query的解析主要包括两个部分,意图识别和槽位解析,其中意图识别又被细分为领域分类和领域下的意图分类,主要使用分类算法,槽位解析主要使用实体识别和实体链接的一些算法。在此我们着重介绍意图识别中使用到的分类算法。

考虑到我们的场景下领域和意图有着级联的关系,即每个意图都是某个领域下的一种意图,因此我们在设计算法时充分体现了这种级联性的关系。如图7所示,我们使用词表把用户的输入转换成one-hot的形式,通过Embedding层转换为连续型的向量,这里用户的输入可以是字级别或词级别的,也可以将字级别的结果通过CNN或Highway Network的方式与词级别的Embedding结合。

然后我们使用LSTM或GRU的RNN类序列表征层学习序列的表征。通过一个全连接层以及softmax激活函数,得到领域的预测结果。领域的预测结果一方面会与真实的领域标签作为损失函数的一部分,另外也会与一个随机初始化的领域Embedding矩阵进行点乘操作,得到句子相关的领域向量。该领域向量与之前的序列表征共同构成意图分类的输入,我们使用另一个LSTM或GRU的RNN类序列表征层来进一步表达序列,再次引入领域向量对序列结果做Attention操作得到最终的句子表征。通过一个全连接层以及softmax激活函数,得到意图的预测结果。

图7 领域及意图分类算法

展开阅读全文

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java