想象一下,站在路边,等着你的优步车来。在你的应用中,你看到汽车几乎没有移动。你给他们发个消息,看看发生了什么事。
你不知道的是,你的司机在去接你的路上遇到了交通堵塞。他们收到你的信息,想要回复。优步司机的合作伙伴告诉我们,这种情况是一个痛点。所以我们开始思考,如果开车的人可以通过简单的点击与乘客交流,会怎么样?
我们努力的结果是一个新的智能回复功能,称为一键聊天(OCC)。有了OCC,乘客和司机合作伙伴之间的出行前协调更快速、更无缝。优步利用机器学习和自然语言处理(NLP)技术来预测常见骑手信息的反应,开发了OCC,使司机合作伙伴更容易回复应用程序内的信息。
OCC,的最新关键增强功能之一UberChat,旨在通过提供最相关的回复,为优步的司机合作伙伴提供一键聊天体验。
一键式聊天架构
一键聊天(OCC)利用优步的机器学习平台,米开朗基罗,对乘客聊天消息进行自然语言处理,并生成适当的响应。如下面的图2所示,体系结构遵循五个步骤流程:
- 发送方(骑手应用程序)发送消息。
- 一旦我们的后端服务接收到消息,它就会将其发送给米开朗基罗中的机器学习服务。
- 机器学习模型对消息进行预处理和编码,为每个可能的意图生成预测分数,并将其发送回后端服务。
- 一旦后端服务接收到预测,它将遵循回复检索策略来查找最佳回复(在本例中是前四个)。
- 接收方(司机-伙伴应用程序)接收建议并将其呈现在应用程序上供司机-伙伴点击。
为了找到对每条传入消息的最佳回复,我们将任务制定为一个机器学习解决方案,其中包含两个主要组件:1)意图检测和2)回复检索。
考虑下面图3所示的例子,以更好地理解机器学习如何实现OCC体验:
司机-伴侣会收到一条乘客信息,询问“你现在在哪里?”,这在接车时间很常见。OCC系统首先检测到消息的意图是“你在哪里?”这一步被称为意图检测。然后,系统会列出对司机和伴侣最相关的四个回答,分别是“是的,我在路上”、“抱歉,还在路上”、“我在你的接机地址,和请给我打电话”。这是回复检索步骤。现在,司机和搭档可以从这四种回复中选择一种,然后轻按一下就将其发送回骑手。
在UberChat中实现OCC
我们的UberChat系统允许在Uber平台上与司机、合作伙伴、乘客、食客和送餐伙伴进行应用内通信。当前的流程遵循标准的消息传递系统:我们期望发送方输入他们的消息,然后将消息传递给接收方。下面的图4展示了UberChat系统的概述和一个典型的消息流:
对于用户发送的每一条消息,Uber的消息平台(UMP)都会执行以下操作(如上图4所示):
- 推送发送者的消息到优步的边缘网关
- 路由消息到优步的消息平台
- 向推送通知服务添加消息
- 持久化消息到Uber的存储Cassandra集群
- 执行远程和本地推送到接收方的表面消息
- 一旦收到消息,就从消息传递平台获取消息体
为了支持智能回复,我们需要能够使用机器学习模型在足够低的延迟下及时地对回复进行实时评分。为了满足这一需求,我们利用Uber内部机器学习平台Michelangelo中的机器学习培训和服务管道。
在UberChat中使用机器学习提供智能回复
通过设计,OCC旨在为司机和合作伙伴在乘客接车期间提供一个简单的聊天体验,一个uber特定的场景和主题域。然而,它确实和所有其他试图理解普通短信的尝试一样,面临着一个技术挑战:它们不仅简短,而且还包含缩写、错别字和俗语。我们在设计机器学习系统时就考虑到了这一挑战。
从外部看,OCC接收最新传入的消息并返回可能的回复,但在幕后还有很多事情要做。OCC ML系统主要有两个工作流程:离线培训和在线服务,如下图5所示:
离线训练
在离线培训期间,我们使用了以下基于嵌入式的ML和NLP管道来处理这些文本消息:
预处理器
为了为文本嵌入模型准备训练数据,我们利用了匿名的UberChat消息。我们首先根据语言(语言检测)划分聊天消息,并进行长度截断(长度<= 2)。最后,我们对这些消息进行标记化。
文本和消息嵌入
预处理之后,我们使用Doc2vec模型,由Le和Mikolov(2014)提出的一种无监督算法,它从变长的文本片段(如句子、段落和文档)中学习固定长度的特征表示。我们在数百万条匿名聚合的UberChat消息上训练Doc2vec模型,并使用该训练将每条消息映射到密集的向量嵌入空间。Doc2vec满足我们需求的两个主要优点是它捕获单词的顺序和语义。下面的图6在二维投影中使用t-SNE情节.由于该模型捕获了单词的语义,因此可以将相似的单词聚类在一起。例如,“丰田”与“普锐斯”和“凯美瑞”很接近,但与“吉娃娃”相去甚远。
目的检测
为了理解用户意图,我们在嵌入过程后训练了意图检测模型。类似于Gmail的智能回复功能,我们将意图检测任务描述为一个分类问题。
为什么我们需要意图检测?人类的语言是丰富的。问同一个问题有很多种方法,比如“你要去哪里?”、“你要去哪里?”,和What’s your destination?” Chat messages add a level of complexity, with typos and abbreviation adding even more permutations.
创建一个能够回答数百万个独立问题的系统是无法扩展的,所以我们需要一个能够识别每个问题背后的意图或主题的系统,让我们能够为有限的意图集提供答复。下面的图7说明了不同的消息是如何根据检测到的意图聚集在一起的:
Intent-reply映射
我们利用匿名和聚合的历史对话,为每个意图找到最频繁的回复。之后,我们的传播内容策略师和法律团队再进行一轮强化,以使回复尽可能容易理解和准确。然后,我们创建了用于回复检索的意图-回复映射。
在线服务
一旦我们完成了模型的线下培训,线上服务就相对简单了。我们获取最新的传入消息,并将它们通过与脱机对应的相同预处理器发送。经过预处理的消息将通过预训练的Doc2vec模型被编码为固定长度的向量表示,之后我们使用向量和意图检测分类器来预测消息的可能意图。
最后,通过利用我们的意图-回复映射,我们根据检测到的意图检索最相关的回复,并将它们呈现给接收消息的司机-合作伙伴。此外,一些极端情况将由规则而不是算法覆盖,包括非常短的消息(预处理阶段的截断消息)、表情符号和低置信度预测(多意图用例)。
下一个步骤
我们计划继续将一键聊天功能扩展到全球市场的其他语言。我们还在研究更多uber特有的上下文功能,如地图和交通信息,并计划将它们纳入我们现有的模型中。这些更新将增加我们更准确地识别用户意图的可能性,并提供定制的回复,以更好地帮助司机合作伙伴:简而言之,让优步体验更加神奇。
此外,目前的系统使用静态意图-回复映射来检索回复,我们计划建立一个回复检索模型来进一步提高OCC系统的精度。
在较高的层面上,OCC是多回合对话系统的自然应用,因为司机-伙伴和车手可以在找到彼此之前进行多个回合的对话。利用OCC和其他功能,构建一个对话系统,以优化成功的接机和聊天体验的长期奖励,最终为我们的平台带来更好的用户体验。
OCC只是Uber众多不同的NLP /对话式人工智能计划中的一项。例如,在Uber, NL也被用于改善客户服务[1,2也是……的核心免提皮卡我们很快将开始在那里测试声控命令。
确认
OCC是Uber的对话式人工智能、应用机器学习、通信平台和米开开罗团队之间的跨职能合作,由Chandrashekar Vijayarenu、Bhavya Agarwal、朱凌一、陈凯亮、Lee Han、Jerry Yu、Monica Wang、Manisha Mundhe、Shui Hu、Jeremy Lermitte、Zhang Zhao、Hugh Williams、Lucy Dana、Summer Xia、Tito Goldstein、Ann Hussey、Yizzy Wu、Arjun Vora、Srinivas Vadrevu、王华东和Karan Singh贡献.我们还要感谢团队领导,尤其是Gokhan Tur, Arun Israel,Jai Ranganathan, Arthur Henry, Kate Zhang,以及我们的英文博客团队,雷竞技到底好不好用Molly Vorwerck和韦恩·坎宁安。
对开发前沿自然语言处理或其他机器学习系统感兴趣?考虑申请我们团队的职位!
订阅我们的通讯以跟上优步工程公司的最新创新。






