智能会话机器人:SaaS平台设计与思考

1. 前言 随着自然语言处理和智能语音识别技术的发展,智能会话机器人开始部分替代人工客服。 网上关于 NLP 算法的文章有很多,但关于 Chatbot 架构的却很少,关于 Chatbot SaaS 平台架构的则更少。我是一名对机器学习感兴趣的程序员,更关注如何设计实现一个架构良好的 Chatbot SaaS 平台,因此写下了这篇文章。 2. Chatbot架构 2.1. 智能会话机器人的分类 智能会话机器人按照对话轮次来划分,可以分为单轮对话机器人和多轮对话机器人;按照知识领域来划分,可以分为限定域机器人和开放域机器人;按照任务类型来划分,可以分为任务型机器人、问答型机器人、闲聊型机器人和融合型机器人。 任务型:根据用户给出的信息完成指定的任务。一般限定于某个垂直领域,常采用多轮对话的形式。如订餐、订票等服务。 问答型:为用户提出的事实型、布尔型、计算型、推理型等类型的问题自动给出答案,进一步还可以再划分为常见问题解答(FAQ)和知识图谱问答(KBQA),一般限定于某个特定知识领域。 闲聊型:与用户进行开放式聊天,满足用户的情感陪护需求。一般不限定话题范围,但有可能偏向于某个领域。 融合型:一般以任务型或问答型为主,融合闲聊功能。如对于电商客服机器人来说,能完成商品推荐购买任务,能回答保修政策问题,还能陪客户闲聊天,融合型是应用场景越来越复杂的产物。 从应用的发展趋势来看:单轮对话——>多轮对话,以获得更多更完整的信息;单领域——>多领域,以满足用户更多层面的需求。 2.2. 任务型机器人交互模型 企业应用中最常见的需求是任务型机器人,上图是任务型机器人经典的交互模型。其中红色框为文字语音转换部分,这里暂不作讨论。 2.2.1. 自然语言理解(NLU) 领域识别(Domain Identification) 检测用户输入内容所涉及的领域概念。 意图识别(Intent Detection) 检测用户在特定领域下表述内容所代表的意图。 词槽填充(Slots Filling) 收集用户在对话过程中任务所必需的关键信息。 2.2.2. 对话管理(DM) 对话状态追踪(Dialogue State Tracking,DST) 记录和判断当前会话处于任务的何种状态。 对话策略(Dialogue Policy,DP) 根据对话状态决定下一步的系统行为。 2.2.3. 自然语言生成(NLG) 自然语言生成主要有两种方法:基于模板生成和基于模型生成。 基于模板生成:调用设计人员预先设计的回复模板,根据前置阶段获取到的状态和关键信息生成自然语言回复给用户。优点是响应速度较快,缺点是语言表达不够丰富,需要人工定义模板规则。因此比较适合在响应动作较少时使用,或是在系统冷启动时使用。 基于模型生成:通常使用seq2seq模型学习大量交互语料数据,根据用户输入直接生成相关自然语言回复给用户。优点是不需要人工定义模板规则,语言表达较为丰富;缺点是回复结果不太可控,响应速度较慢,需要学习大量的交互语料数据。因此比较适合系统资源充足且有大量交互数据时采用。 2.3. 组件集成(pipeline) 任务型机器人的系统设计中,通常采用pipeline方式来集成各个组件。 pipeline的组件构成根据采用的方法不同而不同。有可能整个pipeline由三个组件构成,NLU、DM、NLG分别为一个模型;也可能整个pipeline由两个组件构成,NLU + DM 为一个模型,NLG 是一个模型;也有可能整体仅有一个组件,NLU + DM + NLG 是一个整体的模型(end2end)。 某些情况下,为了提高响应速度,还可能是一个并行流(如下图所示)。 ...

2021-05-06 10:00:00 · 刘涛