技术韩伟黄页商家智能聊天助手用户体验深度优化
2021年9月10日-9月13日,2021世界机器人大会在北京举行,本届大会以“共享新成果,共注新动能”为主题,全面展示机器人领域新技术、新产品、新模式、新业态,围绕机器人研究、应用领域及人工智能的创新发展开展高水平交流活动。本届大会包括论坛、博览会、机器人大赛等活动,论坛由3天主论坛、20余场专题论坛组成。大会邀请了300余位国内外顶尖科学家、国际组织代表、企业家代表等共同参会,围绕科技前沿、技术创新与突破、新兴产业应用等巅峰论道,机器人的新发展、新风向、新机遇、新应用和新融合,专题论坛聚焦“专精特新”,钻研细分领域,凝聚行业巅峰。
58同城TEG AI Lab 智能问答部负责人韩伟受邀出席,并做了以«黄页商家智能聊天助手用户体验深度优化»为主题的演讲。
本文根据分享实录整理,欢迎大家阅读分享。
01 背 景**
在58同城生活服务平台上,当用户有保洁、搬家、维修等需求时会通过微聊以文本对话的方式联系58平台上的商家,而商家由于工作繁忙往往无法及时回复用户,造成商机流失 。为了解决该问题,黄页业务线在2020年初推出了微聊代运营模式——构建一支人工客服团队,由人工客服来代替商家接待用户,当人工客服和用户沟通完形成有效商机信息(联系方式、价格、 地点 等)后再转交给商家,以帮助商家提高获客效率。在这样的场景下,我们基于58同城AI Lab灵犀智能语音语义平台的人机对话能力打造了黄页商家智能聊天助手,当用户来联系商家时,先由机器人接待,若机器人能够聊出商机则结束对话,若不能则转接人工客服,这种人机协作的方式可以大大节省客服人力。机器人和人工客服的能力由商机转化率指标来评价,即聊出商机的会话数比接待会话数,当前机器人的能力达到了人工客服的95%水平,共计节省客服人力数十名,黄页商家智能聊天助手已经进行了商业化,以"微聊管家"命名随会员套餐一起打包售卖给商家,折合贡献收入每月达到数百万元。
黄页商家智能聊天助手通过坐席分流、智能问答、商机引导、商机挖掘等功能来提升对话机器人的商机转化率,提升C端用户的对话体验和B端商家的使用体验,本文主要分享我们如何深度优化黄页各类目的智能问答,多轮对话和商机质量识别等,来提升C端用户对话体验和提升B端商家的获客体验,最后做总结和展望。
02 提升C端用户对话体验-提升对话流畅度**
为了提升C端用户的对话体验,我们首先定义了对话流畅度这个指标,对话流畅度是我们评价C端用户体验的重要指标,用来衡量机器人会话的流畅程度。如果在机器人与用户的某一轮对话过程中,机器人产生了错误的回答,我们就认为该轮对话不流畅。常见的不流畅原因包括错答、引导不当、抢答、重复发问等。
在单轮对话流畅定义的基础上,为了评价AI对话机器人的整体会话能力,我们定义了整轮流畅度,整轮会话流畅是指整个会话过程中所有轮对话都流畅,则该会话被认为是整轮流畅,同时,为了评判AI对话机器人的深度会话能力,我们定义了截止第5轮会话流畅度,它是指,针对会话超过5轮以上的对话,我们会考量前5轮会话的流畅程度,如果前5轮会话都是流畅的,那么我们认为其截至第5轮会话流畅。在优化之初,整轮会话流畅度是83%,截止5轮会话流畅度是74%。
AI对话机器人与用户进行对话的核心过程会模拟人工客服,发送两种类型的消息给到C端用户:(1)解答用户问题,比如:用户咨询“你们公司能搬家吗?”,AI对话机器人会回复:“您好,本公司支持各类型的搬家业务。”(2)主动表达询问用户需求,比如机器人会主动咨询用户相关的联系电话/期望获取服务时间等;将上述两个过程拆解对应到AI对话机器人的技术模块,第一部分是AI对话机器人的QABot-自动问答模块;第二部分则是对话机器人的TaskBot-使用任务型对话进行商机引导模块。
对话机器人通过这两个模块与用户进行交互,它们是决定用户体验的主要部分。我们对于流畅度的优化也是从这两部分着手,通过不断提高这两部分的效果来提高用户体验。
优化QABot提升对话流畅度
QABot对用户流畅度的影响主要体现在以下两方面:
第一类:QABot没有正确识别用户问题的意图,回复了错误的答案从而令用户产生困惑,进而影响用户体验;
第二类:QABot没有识别用户的问题,未能对意图进行召回,用户就会发现自己已经提出的需求,对话机器人会再次重复询问,造成体验不佳;
所以,我们重点对QABot正确分类问题的能力,以及对问题的召回能力进行提高以提升用户对话体验。
针对QABot模型效果能力的提高,我们进行过一些尝试,包括浅层网络FastText模型、DSSM模型,以及LSTM-DSSM等。
FastText是Facebook于2016年开源的一个词向量计算和文本分类工具,其特点是训练速度快,同时能够取得一定的效果,它能够在文本分类任务中迅速取得baseline效果,在训练的过程中涉及到两个技巧:n-gram特征的引入以及分层Softmax分类,但是由于FastText的模型相对简单,其效果难以达到要求。
原生DSSM模型出自微软研究院,主要方法是将query和doc通过深度网络映射到相同维度的空间中,通过最大化其余弦相似度来进行训练,从而训练得到隐含语义模型,原生DSSM 采用词袋模型(BOW),因此丧失了语序信息和上下文信息,所以,我们引入LSTM作为句子的表征,LSTM-DSSM用来解决长距离依赖和语序的问题,效果取得了一定的提升。
在预训练模型出现后,我们得以进一步挖掘这些数据的潜力。实践中,BERT模型作为此类半监督模型的代表,在分类任务中取得了良好的效果。其主要特点是预训练掩码语言模型+微调两个步骤的结合,同时为了配合Transformer encoder的使用,使用了位置编码机制。
58微聊场景下积累了大量的无监督数据,存在大量的无标签数据,在知识库数据有限时,可使用无监督预训练语言模型提升匹配模型的效果。参考BERT预训练过程,2019年4月我们开发了SPTM模型(项目地址: https://github.com/wuba/qa_match),该模型相对于BERT主要改进了几方面的改进:一是去掉了效果不明显的NSP(Next Sentence Prediction),二是为了提高线上推理性能将Transformer替换成了LSTM,三是我们同时引入了共享参数的Transformer Encoder结构作为模型主体,提升模型的表达能力,在机器资源有限情况下让预训练变得容易。推理耗时方面,CPU场景下SPTM耗时十几毫秒,相比BERT能大大减少预测耗时,达到线上预测要求。具体参考文章:《 开源|qa_match:一款基于深度学习的层级问答匹配工具》《 开源|qa_match更新啦——支持轻量级预训练、提高问答通用性》
除了优化模型提升模型的正确分类能力之外,对问题的召回能力同样重要,当线上QABot有结果率小于真实有结果率的时候,也就意味着问答模型的召回能力不足,真实线上用户的好多问题得不到答案,从而影响了C端用户体验,因此,为了进一步提升QABot对问题的召回识别能力,我们引入检索式问答模型。检索问答模型分为离线构建索引和线上预测两个步骤:第一步,在离线构建索引阶段,我们首先利用已有数据训练得到一个表征模型,利用该表征模型对标注数据进行编码得到对应的文本向量表示,建立向量检索库;第二步,在线上预测的时候,首先利用表征模型对用户query进行编码,得到用户query的向量表示,之后利用Faiss向量检索工具检索离线向量库召回topK问题,最后通过阈值比较等一些Rank策略筛选符合要求的结果,得到最终的答案给到用户。
所以,表征模型是决定效果优劣的关键,对于表征模型主要对比SPTM、BERT、SentenceBert以及ContrastiveBert四种类型,这里主要介绍一下对比学习SentenceBert以及ContrastiveBert。
SentenceBERT的训练主要是基于已有标注数据集进行的,首先对已有标注数据集按照标注标签进行聚类,接下来对聚类之后的数据进行划分,相同标签下两个数据之间标签设定为1,不同标签下两个数据之间标签设定为0,之后基于划分之后的数据训练SentenceBert分类模型并保存最优模型;最后我们将SentenceBERT模型最后一层的输出进行mean pooling作为文本的向量表示;ContrastiveBert模型主要是将对比学习策略引入文本表示中,具体做法是:首先对已有标注数据按照标注标签进行聚类;接下来对数据进行处理,从每一个簇中任意筛选两个数据互为正例,从其他簇中随机筛选一条数据作为简单负例,在进行对比学习训练过程中,对于batch中的每一条数据除其对应的正例以外其他数据均作为负例;同时为了进一步提升文本表示模型的编码能力,利用BM25算法从拒识数据集中筛选一条数据作为难负例。
实验证明,单独引入检索模块ContrastiveBert效果达到最优,从而验证引入对比学习策略能够增强文本表示编码能力;在分类+检索效果对比中,引入SentenceBert或ContrastiveBert文本表示相较于进行单纯分类均有较大提升。
优化TaskBot商机引导提升流畅度
通过QABot回答完用户的问题后,接下来对话机器人通过TaskBot(任务型对话)来对用户进行商机引导。
通常任务型对话系统(TaskBot)由自然语言理解(NLU)、对话状态追踪(DST)、对话策略(DP)和自然语言生成(NLG)四个模块构成。在我们的对话系统架构中,将对话状态追踪与对话策略两个模块一起建模为对话管理(DM)模块。对话管理模块经历了两个主要版本的迭代,在初始版本我们实现了基于有限状态机(FSM)的节点配置的对话管理系统,将对话配置抽象为四种节点,可以高速快捷的配置对话流;由于配置有局限性,后续我们在部分类目上采用强化学习(RL)构建对话管理器,并取得了不错的效果。上图展示了整个对话系统的架构:
基于节点配置的对话管理(V1)基于有限状态机(FSM)原理,本质上是把我们的对话过程抽象为基于对话状态的跳转图。其主要是通过不同功能节点(Trigger、Slot、Response、Function等)的组合,实现管理对话流程。首先是开始节点,是多轮对话的入口;其次是触发节点,主要是根据意图和槽位控制对话走不同的会话流程;然后是Slot节点则是控制要问哪些槽位信息,与用户进行不断交互;再有回复节点是如何回复用户的问题;最后是结束节点,代表本次会话结束。状态对话管理器会综合考虑用户的上下文信息,这些信息存储在Redis中,在跳转图,决定用户的下一次跳转,输出对应的回复。其优点是能够快速响应业务,线上问题能快速解决,但其固定死板,自然度不够,需要人工编写,耗时耗力。
鉴于节点配置的对话管理存在上述缺陷,我们引入了基于强化学习的对话管理模型(V2版本,架构如下图)。强化学习/增强学习是机器学习的范式和方法论之一,主要用于描述、解决智能体与环境的交互,通过学习策略以达到回报最大化,实现特定目标的问题。强化学习主要有以下元素,环境是智能体存在的世界,能够与它进行交互,可以理解为特征空间。状态和动作是指,在每次交互中,智能体能够看到环境的一个观察,并决定采取哪个动作。环境会通过观察高速智能体当前的状态,状态可以理解为特征,动作集则可以分为离散和连续。奖赏则是智能体交互中会得到环境的一个信号,告诉智能体当前环境状态的好坏。策略则是在当前状态下采取的动作,策略分为确定与随机两种。轨迹则是状态和动作的一个序列,由state、action与reward构成三元组。强化学习的目标是智能体与环境进行交互时选择一个能够获得最大化期望回报的策略。基于上下文的分类是用DQN进行的,当前网络作为表征网络后接softmax分类,目前基于上下文的分类模型+强化学习模型进行联合训练。上述联合训练的目标便是选择最适合本轮的回复内容,即商机引导的内容。
通过上述,包括QABot、TaskBot等相关模块的优化,C端用户对话流畅度取得了显著的提升,其中整轮流畅度达到了93.5%,截止5轮流畅度也达到了90%左右。
03 提升B端商家获客体验-商机质量分层和提升
在2020年我们重点优化了AI的商机转化率,使之达到了人工水平的90%,其重点在于“增加商机量”,当商机量达到了一定程度后,商家转换为更为关注商机的“质”。于是,在优化C端用户体验(对话流畅度)的同时,我们同时开展了提升B端商家体验的相关优化工作。
用户在与AI机器人完成对话后,我们需要提取对话中的关键信息(商机关键信息,比如:电话/地址/服务类目等)给到商户,使得商户能够给用户提供更为优质的服务,商机主要是通过商机中心给到商家,为了给商户提供更高质量的商机,提升B端商家的体验,我们将其拆解为两个步骤:第一步:商机质量识别,我们将商机分为高质量商机、中等质量商机、普通商机,并且识别出哪些商机是广告等情况,从而指导商户进行使用;第二步:商机槽位丰富度的提升,我们将对话中更多的关键槽位信息抽取出来(如电话、地点、时间、需求详情等),同时也通过话术引导给商户提供更详细的商机信息,使商家能够提前了解到商机详情,提供更为匹配和高质量的服务,从而提升商家成单体验;构建商机质量评价体系
首先,我们从0到1构建了商机质量评价体系(如上图),通过“灵犀”语音分析平台对录入商机中心的商机电话录音数据进行语音质检,以评估商机成单质量情况;另一方面我们构建了商机质量分析模型,对低质量商机(诸如广告合作类)进行识别打标。从而形成了AI对话->商机获取->商机质量分析->语音质检的闭环优化路径。
针对低质量商机中的广告合作类商机,我们构建了广告合作会话识别模型。该模型基于已开源的SPTM模型,该模型采用类似Bert的block堆叠结构,区别在于采用更简单的Bi-LSTM。模型将输入的会话分为广告、合作、招聘、正常四种类型,在该任务构建中前三种标签均为低质量商机,对商家而言意义不大,我们将这部分识别出来告知商家,商家会过滤这部分商机,从而提升了商家获客和成单效率。
由于广告会话在整体中占比偏小,因此存在较为严重的数据匮乏与不均衡问题。为了处理上述数据不均衡问题,我们首先考虑从优化层面来缓解数据分布的不均衡问题。针对CV目标检测任务中存在的数据不均衡问题,FAIR在2017年提出了Focal Loss,该论文获得了ICCV 2017的最佳学生论文。虽然是在CV任务上被提出的,但在NLP任务上,这一方法同样有效。在广告合作会话识别任务中,由于数据分布的极端不均衡,正常会话相当于检测背景,这一点与目标检测场景很是相似,故而我们尝试了Focal Loss损失函数。经过试验,取得了不错的实际效果。
通过详实的数据分析我们发现,除了广告类商机,部分商机由于用户需求不紧迫或者无需求也严重影响着商机质量。于是,为了进一步明确用户需求,在收集完成用户商机后,我们设计弹出“探需”卡片,获取用户的服务需求迫切程度,整合广告商机识别和商机“探需”信息,从而,识别高质量商机。
最终,在B端用户体验上,我们初步构建了商机质量评价体系,实现商机分层,高质量商机挖掘准确率95%,召回率77%,从而,提升了B端商家体验。
提升商机槽位丰富度
根据商机槽位的丰富度,我们做了如下定义:包含联系方式及4个丰富度槽位的商机为高质量商机,包含联系方式及2-3个丰富度槽位的商机为中等质量商机,包含联系方式及1个丰富度槽位的商机为普通商机。通过实验发现(如下图),商家更倾向于使用数据丰富的商机,体验更好,因此,为了提升商家使用率的提升,我们需要对本地服务不同的类目增加识别槽位。
本地服务中槽位识别任务具有如下特点:
1、槽位类型数量庞大:
由于黄页的业务线较多,每个业务线都有自己的关键信息类别,当前共需要识别50种左右的槽位,相对于经典的NER场景,其实体数量较为庞大;
2、领域相关性:
实体识别与业务线特点高度相关,不同业务线对于槽位有各自不同的定义;
3、高优槽位准确率要求高:
对于如联系方式这样的槽位,准确率要求较高,如果出错将严重影响商户的使用体验;
在对话中的诸多信息中,联系方式、时间、地点是较为通用和核心的槽位,因此我们在技术实现上优先对其进行了优化。与此同时,为了提高B端商机体验,我们深入各个类目,对于各个类目中的独特商机进行了识别,先后共新增了40+类商机,例如:我们在搬家类目中增加了搬家地址、到达地址、电梯情况、搬家楼层、搬家物品等槽位;在家电维修类目中增加了家电类型、家电品牌、维修位置、新旧程度等槽位。通过识别这些各个类目丰富度商机,可以给商户提高更高质量的商机,从而提升B端商户的使用体验。
针对五八黄页槽位识别的任务特点,在技术选型上采用了“实体词典匹配+规则匹配+模型预测”的架构(如下图)。
1、 实体词典:
a、实体词典对于高频实体可以准确而快速的进行识别;
b、可以快速接入新业务场景;
c、词典的性能好,在算法实现合适的情况下,可以达到非常快的响应速度,对于一些调用量较大、性能要求较高的场景,词典匹配是一个较好的实现方案;
d、对于强领域相关的实体,通过业务知识、离线挖掘获取强业务相关的实体,词典匹配可以发挥较好的作用。
2、 模型预测:
虽然实体词典有上述的优点,但其存在泛化能力差,无法解决歧义的问题,且如果词典加入不当,很容易造成误召回的问题。因此,模型在解决长尾问题、解决实体歧义以及解决部分槽位(如地点)不适合使用词典的问题上,发挥着不可替代的作用。
3、 规则库:
对于强规则的槽位(如联系方式),规则可以准确的抽取相对应槽位,而只使用模型则存在更多的不确定性。
在模型选择上,我们尝试了几种业界通用的基于深度学习的NER模型,如BiLSTM+CRF、IDCNN+CRF、BERT等模型,并在此基础上进行了一些对比实验,最终选取IDCNN+CRF作为我们核心槽位识别(联系方式、时间、地点)的线上模型,丰富度槽位识别则采用了ALBert-Tiny+GlobalPointer的方式作为线上模型。
BiLSTM是NLP任务中常见的深度学习模型,它具备强大的捕获句子全局信息的能力,同时通过各种门机制的添加,有效避免了原生RNN模型存在的梯度消失问题,但其对局部信息的感知也不强。将BiLSTM应用于NER当中,采用BiLSTM模型提供表征能力,在其后添加CRF层,以防止出现非法的序列标记结果,从而构成了BiLSTM+CRF这一经典命名实体识别架构。
在IDCNN+CRF模型结构中,待识别query先经过Embedding层获取向量表示;然后经过空洞卷积层(IDCNN),IDCNN通过空洞卷积增大模型的感受野, 相较于传统的CNN,IDCNN能够捕捉更长的上下文信息,更适合序列标注这类需要全局信息的任务;在IDCNN之后经过一层全连接神经网络(FF层)后引入CRF,同样CRF的目的在于防止非法槽位标记(BIO)的出现。
NER任务中的解码器主要有Softmax与CRF,Softmax与CRF的主要区别在于他们对问题的设定不一样。在上述模型中,在NER任务上,我们看到很多深度学习之后都会接上一层CRF,那么CRF在整个过程中到底发挥着什么样的作用呢?通常我们直接使用逐帧softmax时,是将序列标注过程作为n个k分类问题,相当于每个token相互独立的进行分类(假设深度模型内部交互不明显的话),而采用CRF实质上是在进行一个k^n分类,相当于直接从所有的序列空间里找出转移概率最大的那条序列。其实质上是局部最优(token最优)与全局最优(序列最优)的区别,因而采用CRF能够有效避免出现非法的序列标记,从而确保序列有效。
Global Pointer是除了softmax和crf之外的另一种解码思路的代表,其期望在实体维度进行实体类型的预测,而不是像softmax一样在token维度进行。GlobalPointer是一个简化版的Multi-Head机制,每个Head负责预测一种实体类别,为提升模型效果,GlobalPointer同时引入了相对位置。对比softmax与CRF,GlobalPointer的优势可以总结为以下几点:a、可以兼顾序列标注的NER与嵌套NER;b、增强了模型对相对位置信息的获取;c、GlobalPointer的Loss是实体级别的Loss,这消除了GlobalPointer在训练场景与应用场景之间的不一致性。
槽位识别模型效果数据,最终,我们进行了多组对比实验,以ALBert-Tiny+CRF为base
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%8A%80%E6%9C%AF%E9%9F%A9%E4%BC%9F%E9%BB%84%E9%A1%B5%E5%95%86%E5%AE%B6%E6%99%BA%E8%83%BD%E8%81%8A%E5%A4%A9%E5%8A%A9%E6%89%8B%E7%94%A8%E6%88%B7%E4%BD%93%E9%AA%8C%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%8C%96/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com