从0到1构建一套Chatbot

一、前言

1.1 交互的趋势

让机器去适应人, 人不是人是适应机器

任何产品都需要依赖对话系统为之赋能, 未来, 对话系统将可能成为重要的人机交互窗口. 这一切,都可以从设计一个小的封闭域Chatbot开始——LuQi.

举个例子: “帮我查一下明天或者后天,晚上最便宜的去上海的机票”, 从用户的操作和实际体验来看, 图形交互无法一次给出结果, 用户需要先打开App, 先查一次明天机票再查一次后天机票, 然后手动对比结果. 而对话式交互 “完胜” , 它可以直接给出相关条件的检索结果,前提是人工智能足够优秀.

1.2 职位的变革

“三段论”:   一波科技趋势从兴起到没落,通常会依次经历三个阶段:

  1. 技术>产品;
  2. 产品>技术;
  3. 运营>产品。

现在移动互联网已经走到第三阶段,而AI还在第一阶段.

1.3 对话系统分类

分类 应用领域 技术方案 特点 优化目标
任务型

有任务目标,一般用来解决特定垂直域的复杂问题

如:智能客服助手、智能会议系统、地图导航等

预先构建知识和对话流程配置, 基于意图、实体NLU识别,基于复杂的对话管理DM,完成多轮对话任务

知识图谱推理能力等也可以实现多轮对话

对错误的容忍度低,对质量要求高,

需要通过询问、澄清、确认来帮助用户明确目的

减少复杂的流程配置, 快速流程构建提供端到端解决方案满足用户需求,同时较少对话轮次
问答型

对比任务型,是单轮, 常用在客服场景,解决售前80%的共性基础问题,

回答如: “什么是xx”,”怎么xxx”

构建自知识库检索能力, 简单可控 一问一答, 单轮, 无状态不关注上下文,简单精确可控 在大量的知识数据中提升识别效果, 用最短的对话轮次解决用户问题;
闲聊型

虚拟陪伴, 如“小冰”

兜底补充辅助, 避免冷场

检索式: 类似传统问答知识库检索的过程

生成式:基于知识库数据训练生成模型

开放域, ”聊不死“、不可控 聪明、聊不死、不尬聊, 带上下文.

二、打造Chatbot的正确姿势

chatbot生命周期包括8个模块:

基于落地场景,具体问题具体分析, 而非局限于技术 (数学、概率论、算法、软件架构、工程能力、论文阅读、分析神经元神经网络 高维空间抽象能力等); 

2.1 需求分析

  • 确定chatbot边界
  • 确定chatbot形象与背景故事, 商用、家用、车载、智能客服、个人助手?
  • “六何”分析法 who why where what when how

    2.2 流程设计

  • 明确产品交互形态
  • 基于实际中大量的对话脚本、场景、草稿等梳理出主要功能、对话场景边界、需要的数据资源、核心要素、抽取对话流程等信息.
    1. 确定优先级和关键要素信息, 如订票业务中, 第一优先级是订票、退票、改签、查询等; 第二优先级是各种规章制度等常见问题解答; 第三优先级是天气查询、最后是简单的问候答谢
    2. 多维度展示状态信息,如,出发有时间地点天气,到达同样也有时间地点天气等信息. 与chatbot的对话实际上是状态之间转换的有向图. 
    3. 梳理业务要素**,既定义上下文变量**, 如订机票相关的实体信息收集 time、loacation_from、loacation_to 等.
  • 画出流程分支图/泳道图.

2.3 数据处理

 数据流的处理是对话系统的关键, 包括对话数据、知识数据、第三方随路数据等

  • 数据收集: 主要指实体数据和对话样本数据(语料)
  • 数据扩充: 同义词、反向翻译、生成对抗网络等.
  • 数据清洗: (算法侧去噪、结构化处理、去停用词等)
  • 数据标注: 对语料做聚类, 提升识别效果(贯穿chatbot整个生命周期)

    2.4 对话脚本撰写

    和图形式交互的线性流程不同, 对话脚本必须是实际用户对话内容流程, 用户可能会无视交互顺序

设计原则:

  • 流程引导要简单明了
  • 话术语句要自然拟人, 愉悦路线
  • 话术生成干预(千人千面、随机策略)
  • 有问候语结束语
  • 流程中包含丰富的对话策略: 拒识、连续累计、重述、打断挂断、静默、负面情感态度等
  • 考虑上下文、指代消解等case
  • 控制对话流(主动式、被动式、混合式对话引导推荐)

2.5 对话系统搭建

chatbot=语音识别ASR+自然语言处理NLP(NLU+DM+NLG)+语音合成TTS

其中:

1.NLU: 自然语言理解, 将人的语言转化为机器可以理解的、结构化的、完整的语义表示: 如query中的意图、实体、敏感词、情感态度等识别提取

意图识别:识别用户的意图, 识别模型需要训练大量的数据,这样才能定义并获取准确的意图,最开始的数据获取相对比较难. 没有固定的评价标准,很多时候,用户语句中既有大意图,又有小意图,需要分类和耐心. 常用的技术有文本解析、文本匹配+DeepLearning等

(命名)实体提取:提取文本中的原子信息元素,如人名、组织机构、地理位置、时间等, 常用基于规则和统计学习方法的混合方案;

自然语言处理现阶段面临的5个难点:

  • 语言不规律.语言错综复杂
  • 语言可以自由组合, 组合出各种复杂的表达方式
  • 语言是一个开发集合, 可以发明创造很多新的表达方式
  • 语言有一定的知识依赖性, 一定的知识背景有助于语言的准确理解
  • 语言的使用基于环境和上下文

 涉及的算法引进

  • 分词: nlu中最基础的概念
  • 词袋模型BOW: 信息检索领域常用的文档表示方法, 将句子以向量的方式表示为字典,不保存句子中词的顺序,应用邮件过滤
  • N元模型
  • 词嵌入 Word Embedding:把自然语言中的词转换为计算机可以识别的数字向量的技术, 最简单的是基于词袋的One-hot, 高级词向量表示法: Word2Vec(自动实现词与词之间语义度量和类比)、FastText、BERT等
  • 条件随机场CRF: 用于标注和划分词性标签领域, 如实体抽取;
  • 循环神经网络RNN: 处理序列数据的神经网络,如某个单词的意思会因为上文提到的内容不同而不同, 循环神经网络擅长解决这类问题
  • 序列到序列Seq2Seq: 输入编码为向量,再将向量解码为对应输入那句话的回复,广泛应用于翻译、句法分析、文本摘要等领域;

2.对话管理(DM)是对话系统的大脑,它主要干两件事情:

    2.1)对话状态追踪dialog state tracking(DST)

                  一种将t时刻的对话表示为可供系统选择下一时刻动作信息的数据结构,既:每个槽值的取值分布情况, St=An(当前动作)+Sn-1(前n-1轮的对话状)

  常见的DST分类:

1、基于人工规则:

如有限状态机FSM,人工预先定义好所有的状态和状态转移的条件,

使用分数或概率最高的nlu模块解析结果进行状态更新;

2、基于生成式模型:

是从训练数据中学习相关联合概率密度分布,计算出所有对话状态的条件概率分布作为预测模型;

3、基于判别式模型:

它把DST当作分类任务,结合深度学习等方法进行自动特征提取,从而对对话状态进行精准建模;

    2.2)对话策略生成 dialog policy (DP)

                    对话策略根据DST估计的对话状态St,通过预设的候选动作集,选择系统动作或策略an.

DM-挑战&趋势

人的复杂性(complex)、随机性(random)和非理性化(illogical)的特点下,DM主要挑战与发展趋势:

挑战:
•①多个场景的切换与恢复
•②多轮对话的容错
•③超出领域的话语处理

趋势:
•①高效的混合DM模型(交互)
•②多模态人机DM方法
•③富有情感的DM交互
•④ 较低的交互变更难度

DM交引导交互形式

被动式 主动式 混合式
描述 一问一答,用户主导交互节奏 被动接受, 机器人主导交互节奏 用户和机器人交替主导
案例 服务形对话系统如:坐席助手,智能客服等 如: 房产推销、贷款催收等智能外呼任务 通用,基于业务场景灵活配置
优缺点分析 听话,一问一答保证不会出错 尽力保证传达任务 通用灵活
只有当用户主动提问,才会回复,易造成冰冷的体验, 不够智能化 目的性太强,特定的场景下的主动交互显得不够灵活智能 配置略繁琐, 如,不同流程是否需要不同引导、交互方案

3.自然语言生成(NLG):将DM模块输出的抽象表达转换为句法合法、语义准确的自然语言句子

以上,NLU—>DM–>NLG–>  是一个chatbot循环的数据流转直至完成任务的过程,其中,语义输入就是流转的动力,DM 是阻力(即通过每个对话节点需要补充的信息/付出的代价)

输入携带的语义信息越多,动力就越强;  完成任务需要的信息越多,阻力就越强。

2.6 对话效果测评

任务型 问答型 闲聊型

自然语言理解测评: 意图识别(准确率、召回率、F值)、实体提取、语义容错、同义词转换、逻辑门支持(如:”除了xxx,其他的都可以”,”NOT XXX”)、多任务支持、口语方言支持等能力

对话管理测评: 任务完成率、平均对话轮次、用户满意度、引导能力、槽位补充/修复能力、意图继承能力(实体替换)、指代消解等

自然语言生成测评: 可读性、信息量、冗余度等

准确率、召回率

F值、问题解决率等

线上指标

客观评价

主观评价

整体来讲,对于任务型,在能完成任务的前提下,对话轮次越少说明系统越好; 对于闲聊型,对话轮次越多越好, 除了上述测评方案外, 通过定时分析日志优化测评也是一种手段

2.7 平台渠道集成

用户在哪里Chatbot就集成在哪里.

2.8运营反馈

运营手段的干预是一个对对话系统逆向反哺的过程,提升对话效果,形成良好的正向循环                                                                 ;

流量分析 对话异常分析 对话内容分析 用户分析

对话(会话)流量

平台渠道分析

异常对话记录

热门退出消息

拒识、兜底回复次数

query聚类

意图统计

情感态度分析

消息漏斗转化路径分析

用户评分

词云分析

活跃、总数用户

留存率

活跃度

用户画像

三、商业应用&实战

  • 保险助理
  • 智能营销
  • 内部协同
  • 售后服务

推荐上手平台: 某度智能对话平台

文档: 智能客服对话平台文档中心

四、参考

Build a Chatbot From 0 to 1 - Rui & Huan

任务型对话综述

github行业内关于智能客服、聊天机器人的应用和架构、算法分享和介绍