NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

美团对话理解技术及实践

  • 2019-06-04
  • 本文字数:5194 字

    阅读完需:约 17 分钟

美团对话理解技术及实践

智能客服是一种使用自然语言与用户交互的人工智能系统,通过分析用户意图,以人性化的方式与用户沟通,向用户提供客户服务。


本议题首先介绍美团智能客服的对话交互框架,然后就我们在其中意图挖掘、意图理解、情绪识别、对话管理等核心模块中用到的机器学习算法进行详细的介绍。



美团点评的使命是 " 帮大家吃得更好,生活更好 " 。美团线上服务的 APP 涵盖了生活服务方方面面,包括餐饮、外卖、打车、酒店业务等。2018 年全年美团的总交易金额达 5156.4 亿元人民币,同比增加 44.3%;2018 年美团单日外卖交易笔数超过 2100 万笔。美团的各个 APP 上具有大量的客服信息类的数据,这也为工程师提供了很好的练兵场。

一、智能客服对话框架


当用户进入到客服界面时往往是带着一个问题来的,那么我们需要做的就是对这个问题进行理解,然后根据理解结果去请求相应服务,去解决用户的问题。这里面主要分为两大块,一方面是离线训练和知识库整理部分,另一部分是在线处理部分。


在在线部分,首先需要对问题进行基础特征的提取,比如:分词、语义标签抽取、情绪分析、NER 识别等;进而进入下面一层-意图理解层,主要有问题领域分类、意图识别和属性抽取;意图理解之后就进入到了对话管理这个阶段,对话管理模块主要包括两个部分,状态追踪 ( DST ) 和对话决策,DST 根据上下文状态明确当前用户的领域和意图,而对话决策模块则根据用户当前意图决定后续动作;再之下是业务服务层,包括各业务的数据服务接口以及业务数据呈现样式等。

二、意图理解


美团围绕着生活服务有着许许多多场景和业务,针对客服服务而言,用户可能是从单一的业务窗口进入到客服中,这时我们是知道该客服服务属于哪个领域;用户也有可能是从美团的综合门户入口进入到客服中,在这种情况下我们无法判断用户需要进行哪个业务领域方面的咨询。


除此之外,在场景方面,主要涉及单轮 QA 和多轮 Task,针对一些简单的问题,单轮的 QA 就可以解决,举个例子:


U: 美团送餐时间


S: 用户您好,能否配送是以商家营业时间为准的。如您所选的商家正在营业,便代表可以提供点餐及配送服务。


而大量复杂的业务通过单轮的 QA 是无法完成的,这时候就需要多轮对话,举个例子:


如何成为美团商家?



像这种就需要多轮的任务 Task 才能解决。



由于美团涵盖众多的业务领域,所以当用户提出一个问题时,我们首先要将这个问题进行领域分类,把它分到某个业务领域去,然后用业务知识去解决这个问题;领域明确后就是意图分类,根据问题的不同类别,比如问答类的、闲聊类的等,采用的方式也会有所差异。接下来将对这两个方面做详细介绍。

2.1 领域分类


针对领域分类任务,如上图所示,我们首先会从不同的业务中收集大量的业务数据,作为基础的训练数据,虽然这些数据来自不同的业务,但是依然存在一些问题,主要有以下两方面:


  • 标签不准:用户有可能会在某个业务对话中提问其它领域的问题;

  • 领域重叠:某些问题可能会在多个领域中出现。


所以,原始数据不能直接拿来作为训练数据,必须要经过人工筛选和标注方可使用。 为了节约人力成本和提高迭代速度,我们采用了主动学习框架,模型的迭代主要分为如下几步:


  1. 搜集业务数据,为每条业务数据打上相应的业务标签

  2. 对数据进行模型训练

  3. 将上步训练好的模型对样本进行预测

  4. 标注人员对预测样本进行标注,选出错误和难分开的样本

  5. 返回第 2 步,对标注好的数据重新进行训练



我们同时也在不同的模型上测试领域分类效果,实践中的各模型效果如上图所示。 从结果中我们可以看出,BERT 的效果是非常高的,但是呢我们也会考虑模型在实际运行中的效率问题。 对于一个 15 个字左右的 query 来说,用 TextCNN 模型在 10ms 以内就可以解决,如果用 BERT 模型的话可能需要 70ms 左右,这个时间还是比较长的,当前实际上线的时候我们采用的是 TextCNN 模型。 这是 2014 年 Yoon Kim 提出的一种方法。


2.2 意图分类

针对意图分类,主要包括问答型意图理解和任务型意图理解两个方面。



这两类问题有着各自的特点,针对问答类,我们采用检索和相似度排序的策略,下图是问答类的设计架构。



针对任务型的意图理解,我们采用规则和模型结合的方式,一种是通过规则的方式,比如上下文无关文法,另一种是采用模型训练的方式。


上下文无关文法



上图就是其中一个例子,在工业界这种方式还是非常通用的,对于问题冷启动,高频出现的问题和常规的问题,采用规则的方式能够很好的解决。


多任务学习模型



模型部分我们把意图分类和属性抽取联合建模,作为一个多任务学习 ( Multi-task Learning ) 任务,如上图所示 ( 算法详见 Zhang, Xiaodong 2016IJCAI ) 。双向 LSTM 处理后,一方面会通过 softmax 分类输出意图多分类的结果 ( 右边的 y^u );另外通过 CRF 层,标记每一个词的槽位标签。具体来说,对于 " 帮我找一家明天中午适合 10 人聚餐的川菜馆 ",模型应该能识别出来它是属于订餐意图,同时又能够抽取出时间 " 明天中午 " 、人数 " 10 " 和口味菜系 " 川菜 " 等属性信息。

2.3 对话状态追踪 ( DST )


DST 解决的还是一个意图的问题,根据当前上下文的环境或者状态来明确当前用户的确切意图。



上图是我们当前的框架,这个 session context 为上下文信息,NLU 模块的输出信息可能是多个意图,我们需要根据其他的一些信息,比如,订单信息、门户信息,入口信息等,结合 session context 去明确它是属于哪个领域。


如果这个领域不能明确怎么办?我们的做法是会跟用户进行一轮的澄清,反问用户一次,来解决这个问题,也就是框架最左边的 " domain 不明确进行澄清 " 逻辑。


领域一旦明确后,下一步会进入到意图这一块,我们要明确它当前是什么意图,当然接收到的 query 也面临多意图判断的问题,同样我们也可以去做澄清,澄清包括利用上下文信息判定,或者增加一轮与用户的交互来澄清,如果明确则继续下面的流程,这是我们整体的架构。


举个栗子


如果接收到一个信息是 " 牛肉汤撒了 ",首选我们要判断它是属于哪个领域的,它是属于外卖商家这个领域,接着判断其意图,对意图进行澄清后得知意图是 " 如何申请餐损 ",然后走餐损的流程。


三、知识发现

3.1 人在回路

客服的目的是为了解决用户的问题,AI 在现有的 work flow 中节省人力,但是机器解决不了的事情还是要交给人来解决。所以在下图中,我们一定要加一条转人工的服务。另外我们利用无监督学习从日志中挖掘出的知识点也需要人工 " 业务运营 " 来 check 。在整个环路里监督学习从知识库中学习到的语义表示能力又可以提供给无监督学习使用,这个在下面会进一步提到。


3.2 无监督学习在知识发现中应用


无监督机器学习主要涉及两个问题,一个是句子的语义表示,另一个就是如何做知识聚类。


在语义表示问题上,我们做了大量的试验,在迭代的过程中,我们用到了 DSSM 模型、seq2seq 模型和 BERT 模型来做意图的相似度计算,在这个过程中我们发现不同的模型有各自的特点,它可能抓住不同维度的特征,在离线模型中我们用多个模型的拼接的方式来表示其语义向量。



在知识点聚类这个问题上,我们采用用了最通用的 K-means 模型来做的。



上面讲到的是意图和说法的挖掘,在实际业务中我们有大量的 Task 的问题。下图呈现的是一个 " 如何申请餐损 " 的 Task 树。



当用户的问题触发 Task 后,Task 机器人根据和用户的交流来获取槽信息,调用不同 API 接口来获取槽信息,进而回复用户。上图 " 如何申请餐损 " Task 需要明确的槽包括 " 配送方式 " 、" 餐损原因 " 、 " 申请状态 “,其中 " 配送方式 " 和 " 餐损原因 " 是通过与用户的交互来明确,” 申请状态 " 则是通过请求后台服务来明确。


在这个环节中我们需要做的就是辅助运营人员构建 Task 类的知识。


我们根据用户的日志数据提取相应意图,然后根据意图共现,回复共现去挖掘,当一个用户问了一个问题之后还会提问哪些问题,当用户收到反馈之后还会反问哪些问题。根据这些去构建 Task 子树,离线构建好之后交给运营的同学,运营同学审核通过之后就可以上线了。

四、情绪识别

4.1 背景介绍

客服热线是我们公司对外服务的重要交流通道,在售前、售中和售后的各个环节中发挥着重要作用,为用户提供意见处理、资料管理、技术支持等多项服务。然而目前客服热线在运营过程中还存在一些痛点,如客服人工坐席的服务水平参差导致客户的体验存在差异,另外个别客户还存在动机复杂等问题。因此如何利用技术提升客服热线的服务水平、检测热线中可能的风险是目前需要解决的一个问题。 本项目对客服热线中的语音数据进行挖掘与分析,通过量化用户的情绪能量值,实现对用户情绪状态 ( 是否激动、情感倾向等 ) 的追踪,并且在客户情绪超过设定阈值时提供预警信息,以便相关人员和应急措施的及时介入,从而为相关业务部门提供运营数据支撑和智力支持,最终提升客服热线的服务质量和服务效率。

4.2 特征提取


FTT:短时傅里叶变换


每帧语音都对应于一个频谱 ( 通过短时 FFT 计算 ),频谱表示频率与能量的关系。


梅尔滤波:实验观测发现人耳就像一个滤波器组一样,它只关注某些特定的频率分量 ( 人的听觉对频率是有选择性的 ) 。也就说,它只让某些频率的信号通过,而压根就直接无视它不想感知的某些频率信号。

4.3 模型选择

特征处理完成之后就是采用哪种模型来进行训练。



在迭代中我们采用过传统的机器学习模型,比如 LR、SVM 模型,神经网络模型,和一些预训练好的模型,在这个里面我们遇到的一个挑战就是,一个情绪是不是激动的标签是针对整个通话记录标注的,但是用户在通话的过程中,不是一直的激动,而是在某个通话阶段情绪激动,而一个标签无法体现出到底是那一部分激动,是全程激动,还是部分激动,还是全程平静的,其实这个里面就涉及到一个弱标签的学习,如下图所示。



这是 19 年提出的一个算法,在实际应用中效果不错,感兴趣的同学可以根据信息去查找。


在实际的效果上,各个模型的表现如下:


MFCC + LSTM < MFCC + CNN < VGGish + ferture level attention < VGGish + decision level attention

五、展望

  • 多轮上下文建模,意图理解

  • 让用户做选择题,做意图预判,意图推荐

  • 语音与文本多模态,弱标记学习,情绪风险识别

  • 对话历史的话题抽取及切割,话术推荐,坐席助理


以上是当前我们正在开展及探索的智能客服理解部分的内容,从 ToC 的用户侧,以及 ToB 的坐席助理侧两方面来优化整个客服闭环。

作者介绍:

江会星博士,美团点评搜索与 NLP 部 NLP 中心的研究员,智能客服团队负责人,主要负责美团智能客服业务及对话平台的建设。曾在阿里达摩院语音实验室从事智能语音对话交互方向研究,主要负责主导的产品有斑马智行语音交互系统、YunOS 语音助理等。


团队介绍


美团点评搜索与 NLP 部 NLP 中心秉承 " 让机器理解人类语言,让机器与人自然对话,用数据打造知识大脑 " 的信条,致力于建设世界一流的自然语言处理核心技术和服务能力,打造智能客服对话平台,打造自然语言处理平台及知识图谱 ( 美团大脑 ),助力美团业务场景智能化转型,提升美团科技水平和品牌影响力。


当前我们在 NLP 多个方向,包括但不限于意图理解,对话交互,意图推荐,风险识别,知识图谱等岗位招聘算法及工程岗位,Base 北京、上海两地。欢迎加入我们团队,简历请投递至邮箱:


jianghuixing@meituan.com


本文来自 DataFun 社区


原文链接


https://mp.weixin.qq.com/s/UH7r3oh4M4_qkqtIE1dGPw


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2019-06-04 08:0022686

评论

发布
暂无评论
发现更多内容

Day461

爱好编程进阶

程序员 后端开发

服务器运维省钱省事省心安全就用行云管家!

行云管家

服务器 行云管家 服务器运维

全球最大的半导体IP产业链,你了解多少?

Finovy Cloud

gpu GPU服务器 显卡、gpu

CCF201712-2 游戏

爱好编程进阶

Java 程序员 后端开发

CentOS7 部署 LAMP 平台与应用

爱好编程进阶

Java 程序员 后端开发

CentOS安装MySQL详解

爱好编程进阶

Java 程序员 后端开发

ElasticSearch三节点集群搭建笔记(中心化版本)

爱好编程进阶

程序员 后端开发

python好用的函数或库

AIWeker

Python 人工智能 5月月更

如何制作网站的在线帮助中心

小炮

帮助中心

JavaScript class类的基本使用方法你知道吗

CRMEB

CPU战争40年,终于把Intel打趴下了

爱好编程进阶

Java 程序员 后端开发

Day269

爱好编程进阶

Java 程序员 后端开发

Fluid 0

爱好编程进阶

Java 程序员 后端开发

Cloud-借助消息队列解决分布式事务

爱好编程进阶

Java 程序员

FPGA(3)--VHDL及原理图--4位全加器

爱好编程进阶

程序员 后端开发

Github首次开放,一天遭狂转 50w 次,大厂内部不外传的 100 万字 Java 面试手册

爱好编程进阶

Java 程序员 后端开发

Dubbo中的统一契约是如何实现的?

爱好编程进阶

Java 程序员 后端开发

5分钟速览证券行业财富管理转型新趋势

易观分析

证券市场

揭秘百度智能测试在测试自动生成领域的探索

百度Geek说

测试

中国联通改造 Apache DolphinScheduler 资源中心,实现计费环境跨集群调用与数据脚本一站式访问

Apache DolphinScheduler

大数据 开源 Apache DolphinScheduler workflow apache 社区

Dubbo

爱好编程进阶

程序员 后端开发

Eclipse+Java+Swing实现企业人事管理系统

爱好编程进阶

Java 程序员 后端开发

final的两个重排序规则

爱好编程进阶

程序员 后端开发

手把手带你用Zabbix进行操作系统监控

博文视点Broadview

B站【狂神说Java笔记】-java基础语法

爱好编程进阶

Java 程序员 后端开发

Eclipse+Java+Swing实现仓库管理系统

爱好编程进阶

Java 程序员 后端开发

全球云服务支出持续攀升,中国云安全市场进入黄金期

行云管家

云计算 网络安全 公有云 云服务 云平台

【国产免费】分布式作业批处理ETL平台TASKCTL变量属性设置

TASKCTL

大数据 DevOps 分布式 自动化运维 TASKCTL

GitHub上标星120K,Alibaba官网发布了这份Java全栈知识体系手册

爱好编程进阶

Java 程序员 后端开发

第1章-Spring的模块与应用场景

码匠

Java Spring Framework

龙蜥正式开源 SysOM:百万级实战经验打造!一站式运维管理平台 | 龙蜥技术

OpenAnolis小助手

开源 操作系统 龙蜥社区 SysOM 系统运维SIG

美团对话理解技术及实践_AI&大模型_DataFunTalk_InfoQ精选文章