从数据预处理到排序算法,全方位解读 Uber 人工智能客服 COTA

bad_chen 7年前
   <p>日前,Uber 官网上的一篇文章详细介绍了基于 NLP 和机器学习构建的 COTA 客服系统。利用该系统,Uber 可以快速高效地解决 90% 以上的客服问题,雷锋网 AI 研习社将原文编译整理如下:</p>    <p><img src="https://simg.open-open.com/show/d1012d798bb7c336589790124bd622cf.png"></p>    <p>为了打造最佳用户体验,Uber 持续优化客户支持流程,让客户支持服务更易用,更方便。</p>    <p>为实现这一目标,Uber Customer Obsession 团队基于其 <a href="/misc/goto?guid=4959756568503047091" rel="nofollow,noindex">内部平台</a> ,提供 5 种不同客服渠道(应用内置客户支持、官网客户支持、本地司机网、电话客服、线下服务网点)。这个内部平台具备客服工单功能,以便跟踪解决问题。每天提交到这个平台上的客服工单有数十万条,遍布全球 400 多个城市。Customer Obsession 团队必须确保客服代表能尽可能准确、快速地解决问题。</p>    <p>基于此,Uber 打造了一个人工智能客服助理平台——COTA(Customer Obsession Ticket Assistant),它利用机器学习和自然语言处理(NLP)技术,帮助客服代表提供更好的客户支持服务。</p>    <p>在 Uber 客户支持平台上,利用 <a href="/misc/goto?guid=4959756568600080160" rel="nofollow,noindex">Michelangelo</a> 平台的机器学习服务,COTA 可以快速高效地解决 90% 以上的客服问题。</p>    <p>下面,我们会详细介绍创造 COTA 的动机,COTA 后端架构,并展示如何利用这一强大工具提高客户满意度。</p>    <p>没有 COTA 之前的客户支持</p>    <p>当客户联系 Uber 寻求支持时,我们必须及时为他们提供最好的解决方案。</p>    <p>我们可以让用户在提交问题报告时,点选问题所属的类别,填写细节。这一过程为客服提供了很多背景信息,从而能更快解决问题,如图 1 所示:</p>    <p><img src="https://simg.open-open.com/show/56a338fe03ab8032252661cc9ff81053.png"></p>    <p>图 1:Uber 内置的客户支持服务为用户提供了一个直观且易于使用的界面,先提供问题可能的类型,然后突出显示行程的细节</p>    <p>Uber 内置的客户支持服务能反映问题的背景信息,虽然这些信息很重要,但要解决客户的问题,单靠这些信息远远不够,特别是在一个问题有多种工单答案的情况下。此外,同一个问题,客户可以通过多种方式来描述,因此问题的解决过程更为复杂。</p>    <p>随着 Uber 的服务规模不断扩大,客服必须应对不断增长的客户支持问题,同时,问题也变得更为多样化,包括技术故障和费用调整等。事实上,当客服在解决客户提交的问题时,他们首先要做的是从数千个类别中,确定问题所属类型,这绝非易事!</p>    <p>缩短识别问题类型的时间非常重要,它能减少客服解决用户问题的总时间。</p>    <p>确定问题类型后,下一步就是给出正确的解决方案,每种类型的工单都有不同协议和解决方法。此外,还要从成千上万个可能的解决方案中进行选择,这也是一个耗时的过程。</p>    <h2><strong>COTA:客户工单助手</strong></h2>    <p>基于前面的背景,我们设计 COTA 来帮助客服提高解决问题的速度和准确性,从而改善客户体验。</p>    <p>COTA 利用 Michelangelo 平台来简化、加速和标准化客服工单流程。目前,COTA 由一组向客服推荐解决方案的模型组成,只支持英文工单,我们正试图建立可以处理西班牙语和葡萄牙语客服工单的模型。</p>    <p>基于我们的支持平台,根据客服工单内容和行程上下文信息,Michelangelo 模型提供三种最可能的问题类型及其解决方案,处理流程如下:</p>    <p style="text-align:center"><img src="https://simg.open-open.com/show/80e5ff45f850108f2e2613dfe6e6915d.png"></p>    <p>图 2:COTA 系统架构由七步工作流程组成</p>    <p>如图 2 所示,COTA 系统包括如下 7 步:</p>    <pre>  1. 客服工单进入客户支持平台(CSP),后端服务系统采集工单的相关特征;  2. 后端服务系统将这些特征发送到 Michelangelo 机器学习模型;  3. 模型预测每个可能的解决方案的得分;  4. 后端服务系统接收预测方案和分数,并将其保存到 Schemaless 数据库中;  5. 客服打开客服工单后,前端服务系统将触发后端服务系统,以检查客服工单内容是否有更新。如果没有更新,后端服务系统将检索保存于数据库中的解决方案;如果工单有更新,它将抓取更新后的特征,并再次执行步骤 2-4。  6. 后端服务系统将解决方案按分数高低排列,然后返回至前端服务系统;  7. 将排名前三的解决方案推荐给客服;至此,客服只需做出选择,就可以解决工单。  </pre>    <p>COTA 的表现非常优秀:根据客户服务调查结果显示,COTA 可以将工单解决时间缩短 10%以上,同时还可以达到之前用人工处理的客户满意度,甚至比之前人工处理的满意度更高。</p>    <p>COTA 中的机器学习模型为客服提供了更快和更准确的工单解决方案,使 Uber 客户支持服务更加完美。</p>    <h2><strong>基于 NLP 和机器学习构建 COTA</strong></h2>    <p>表面上看,COTA 只需收集工单问题的上下文信息,并返回可能的解决方案,但幕后还有很多事情要做。COTA 后台负责完成两项任务:确定工单所属类型并确定最合理的解决方案。</p>    <p>为了实现这一点,机器学习模型需要从客户提交的文本消息中提取特征、行程信息和客户提交问题时所选的类别。</p>    <p>当模型生成特征分数时,最有价值的特征是用户发送的问题的文本消息。由于用户发送的文本消息对于理解问题很重要, 我们建立了一个 NLP「管道」,能将多种不同语言的文本转换为对机器学习模型有用的特征 。</p>    <p>NLP 模型可以翻译和解释不同的文本元素,包括音韵、词性、语法、句法和语义。根据模型的构造单元,NLP 可以建立字符级、单词级、短语级和句子/文档级的语言识别模型。</p>    <p>传统的 NLP 模型是基于人类语言学专业知识来提取文本信息的特征,随着端到端训练的深度学习模式兴起,研究人员开始开发能够解析整个文本块的模型,这时候不必明确地解析一个句子中不同单词之间的关系,而是直接使用原始文本。</p>    <p>在 COTA 中,我们首先构建一个单词级别的 NLP 模型,以更好地理解文本消息的语义。自然语言处理中一个流行的方法是主题建模,通过单词的计数统计信息来理解句子的主题。虽然主题建模没有考虑到字词的顺序,但是对于诸如信息检索和文档分类等任务,已经被证明非常有用。</p>    <p style="text-align:center"><img src="https://simg.open-open.com/show/94ea8ea0ed485428aa4290fc53e59d4a.png"></p>    <p>图 3:为识别工单问题类型和选择解决方案,我们建立的 NLP「管道」模型由三个不同的步骤组成:预处理,特征工程和基于点的排序算法。</p>    <p>在 COTA 中,我们使用基于主题建模的 NLP「管道」模型处理文本消息,信息处理流程如图 3 所示。</p>    <p>预处理</p>    <ul>     <li> <p>为了清洗文本,我们首先删除文本中的 HTML 标签。</p> </li>     <li> <p>接下来,我们分割工单消息中的句子,并删除停顿用词。</p> </li>     <li> <p>然后再进行词形化,将单词从不同的时态、派生形式进行还原。</p> </li>     <li> <p>最后,我们将文档转换成单词集合,并建立这些单词的字典。</p> </li>    </ul>    <p>主题建模</p>    <p>为了理解用户意图,预处理之后我们对单词包进行主题建模。</p>    <p>具体而言,我们使用词频 - 逆向文件频率(TF-IDF)的统计方法和潜在语义分析算法(LSA)来提取主题。</p>    <p>图 4(a)中展示了主题建模中的一些可能的主题类型:</p>    <p><img src="https://simg.open-open.com/show/2ab5c7faac931e1ee56b9b5224dd2b30.png"></p>    <p>图 4(a)主题建模:我们使用 TF-IDF 和 LSA 从文本数据中提取主题</p>    <p>( b)特征工程:将所有工单解决方案和工单问题映射到主题向量空间,计算解决方案和工单之间的余弦相似度</p>    <p>特征工程</p>    <p>主题建模使我们能够直接使用主题向量作为特征,下游的分类器能将其作为识别问题类型和选择解决方案的依据。</p>    <p>然而,这种方法太直接,会受到主题向量稀疏性的影响。为了有意义地表达这些主题,我们需要使用数百甚至数千维度的主题向量,而主题向量的之间的相关性接近于零。由于特征空间的维度非常高,需要处理大量的数据,因此训练这些模型变得相当困难。</p>    <p>考虑到这些因素,我们决定以间接方式进行主题建模:通过计算余弦相似度特征来执行下一步的特征工程,如图 4(b)所示。以选择工单解决方案为例,我们收集每个工单解决方案对应的历史工单,并形成这一工单解决方案对应的词汇集。</p>    <p>在这种情况下,主题建模转换是基于历史工单的词汇集表示。我们用向量 T <sub>i</sub> 表示工单解决方案 i,对所有工单解决方案都进行这种转换。我们可以将任何新的工单映射到工单解决方案的主题向量空间 T <sub>1</sub> ,T <sub>2</sub> ... T <sub>m</sub> ,其中 m 是可能使用的工单解决方案的总数。接下来形成工单 j 的矢量 t <sub>j</sub> 。可以计算出 T <sub>i</sub> 和 t <sub>j</sub> 之间余弦相似度得分 s <sub>ij</sub> ,就可以知道工单解决方案 i 和工单 j 之间的相似度,从而将特征空间从数百或数千个维度减少到很低维度。</p>    <p>基于点的排序算法</p>    <p>接下来解释机器学习算法是如何选择工单解决方案的。</p>    <p>为了设计这个算法,我们将余弦相似度特征与其他工单信息、行程特征进行组合。每种工单类型有超过 1,000 种可能的工单解决方案,COTA 的超大的解空间使区分这些工单解决方案之间的细微差异变得很困难。</p>    <p>为了给客服提供最佳的工单解决方案,我们应用了学习排序 (learning-to-rank) 算法,并构建了基于检索的点排序算法。</p>    <p>具体而言,我们将工单解决方案和工单之间的正确匹配标记为正(1),从工单解决方案与工单不匹配的集合中,我们随机抽样形成子集,并标记为负(0)。使用余弦相似度以及工单、行程特征,我们可以建立一个二分法分类器,接下来利用随机森林算法来判断工单解决方案与工单是否匹配。利用算法对可能的匹配进行评分,我们可以对评分进行排名,并给出排名最高的三个解决方案。</p>    <p>下图比较了使用主题向量作为特征的传统多类分类算法与使用工程余弦相似特征的逐点排序算法的性能:</p>    <p style="text-align:center"><img src="https://simg.open-open.com/show/1d95804494998d308663b6b8d0191704.png"></p>    <p>图 5:基于点的排序算法比多类分类算法的准确度高 25%</p>    <p>可以看到,使用余弦相似度作为特征的,基于点的排序算法优于直接使用主题向量的多类分类算法,精度提高了 25%。</p>    <p>比较是在相同的数据集上,使用相同类型的算法(随机森林)进行的,且模型的超参数相同。排序框架中使用余弦相似度作为特征可以获得很好的效果。</p>    <p>更便捷更快的工单处理 = 更好的客户支持</p>    <p>COTA 性能优异,只有应用到实际场景中才有意义。为了衡量 COTA 对客户支持体验的影响,我们对多个在线英语工单进行了受控的 A / B 对比实验。在这些实验中,我们选择了几千名客服,将他们随机分配到对照组和实验组。对照组中的客服代表使用原来的工作流程,而实验组中的客服代表使用 COTA 助理,交互界面包含问题类型和建议的工单解决方案。我们收集了两个组的工单处理结果,并测量了一些关键指标,包括模型准确性、平均处理时间和客户满意度得分。</p>    <p>测试进行如下:</p>    <p>我们首先测量了模型的在线表现,并将其与离线表现进行了比较。我们发现模型性能从离线到在线都是一致的。</p>    <p>然后,我们测量了客户满意度分数,并比较了对照组和实验组。总的来说,实验组的客户满意度提高了几个百分点。这一发现表明,COTA 可以提供相同或略高于人工的客户服务质量。</p>    <p>最后,为了确定 COTA 对工单处理速度的影响,我们比较了对照组和实验组的平均工单处理时间。平均而言,COTA 将工单处理时间缩短了大约 10%。</p>    <p>通过提高客服的绩效和缩短工单解决时间,COTA 帮助 Customer Obsession 团队更好地服务于用户,从而提高客户满意度。COTA 加速了工单处理过程,每年可以为 Uber 节省数千万美元。</p>    <p>下一代 COTA 中的深度学习</p>    <p>COTA 的成功使我们更坚定地持续优化机器学习算法,以提高系统准确性,并为客服和终端用户提供更好的体验。</p>    <p>深度学习框架可以在文本分类、汇总,机器翻译和许多辅助 NLP 任务(句法和语义分析,文本蕴含,命名实体识别和链接)中使用。</p>    <p>与深度学习相关的实验</p>    <p>在 Uber AI 实验室的研究人员的支持下,我们尝试将深度学习应用于下一代 COTA。我们基于卷积神经网络(CNN),递归神经网络(RNN)以及这两者的几种不同组合,实现了多种体系结构,包括分层结构和基于注意力的体系结构。</p>    <p>使用深度学习框架,我们能够以多任务学习的方式来训练我们的模型,使用单一模型既能够识别问题类型,又能提出最佳工单解决方案。由于问题类型被组织成层次结构,我们可以训练模型来预测问题在层次结构中的位置,在这其中使用波束搜索的循环解码器(类似于序列模型的解码组件),可以进行更精确的预测。</p>    <p>超参数优化选择最佳模型</p>    <p>为了确定最佳的深度学习架构,我们针对所有类型的架构进行了大规模超参数优化,并在 GPU 集群上进行了并行训练。最后的结果表明,最精确的体系结构既适用于 CNN 也适用于 RNN,但为了我们的研究目的,我们决定寻求一种更简单的 CNN 体系结构,该体系结构精准度稍有欠缺,但在训练和推断时间上更具优势。我们最后设计的模型精度比原始随机森林模型高 10%。</p>    <p>在下图中,我们展示了工单集的数据覆盖率(模型正在处理的工单百分比,x 轴)和准确度(y 轴)之间的关系。如下所示,随着数据覆盖率的降低,两种模型都变得更加精确,但是我们的深度学习模型在相同的数据覆盖率上表现出更高的准确性,在相同准确度下表现出更高的数据覆盖率。</p>    <p style="text-align:center"><img src="https://simg.open-open.com/show/7164d1fc5f1cbb59bddf9f026ea717d6.png"> 。</p>    <p>图 6:深度学习模型和经典模型(随机森林)性能比较</p>    <p>我们目前正与 Uber Michelangelo 团队紧密合作,处于将这个深度学习模型产品化的最后阶段。</p>    <p>雷锋网 (公众号:雷锋网) AI 研习社编译整理。</p>    <p>via: <a href="/misc/goto?guid=4959756568686973271" rel="nofollow,noindex">Uber</a></p>    <p>雷锋网版权文章,未经授权禁止转载。详情见 <a href="/misc/goto?guid=4959756568787430391" rel="nofollow,noindex">转载须知</a> 。</p>    <p><img src="https://simg.open-open.com/show/7703062545a817ff8475e0a276328b93.jpg"></p>    <p> </p>    <p>来自:https://www.leiphone.com/news/201801/MEofBVCERvYqXfjT.html</p>    <p> </p>