应用客户反馈:NLP和深度学习如何改善优步的地图

0
应用客户反馈:NLP和深度学习如何改善优步的地图

高质量地图数据为优步跳闸体验的许多方面提供了许多方面。诸如搜索,路由和估计的抵达时间(ETA)预测等服务依赖于准确的地图数据,为骑手,司机,食物和交付合作伙伴提供安全,方便,高效的体验。但是,地图数据随着时间的推移可能变得陈旧,降低了其质量。

作为客户痴迷的公司,优步审查和解决客户支持票据的反馈,这些驾驶员,司机伙伴,厨师和优步平台上的交付伙伴提交。其中一些门票指出了位置问题,给我们一种方法是在地图数据中识别和修复错误。

我们每天为超过1500万次旅行提供服务,所以如果这些旅行中有一小部分触发了客户支持,我们最终将获得大量的机票。手动仔细研究这些罚单,找出那些指出不准确的地图数据的罚单是不可扩展的。因此,我们使用机器学习(ML)和大数据处理来自动化这个工作流程。

为了解决大规模的票证分析问题,我们建立了一种自然语言处理(NLP)平台,用于查找票证文本中的数据相关问题。然后,该平台可以指定哪种特定类型的地图数据触发票证,以便在地图组织中相应的团队可以评估问题并确定解决方案。

利用我们的客户支持平台

优步是内部客户支持平台包括应用内支持、自助服务流程和其他技术,通过帮助代理快速解决用户遇到的任何问题,更好地为用户服务。通过我们的客户支持平台出现的一些问题是由地图数据引发的。如果我们的地图包含错误的数据,乘客可能会被开车到距离预定目的地几英里远的地方,或者沿着次优路线,这将导致额外的步行和不准确的车费估算。附加条款随后提交了客户支持单据。

客户支持平台允许客户选择类别的门票。然而,这些类别是高级别,围绕客户需求设计,例如“我参与事故,”审查我的票价或费用,“或”我丢失了一个物品“。包括客户支持流程中的每个地图数据类型的类别对于客户和客户支持代表来说都是太精细的粒度。

缺乏前期分类,我们需要处理自由形式文本,并检测与其映射相关的信号。在书面语言中,人们在提交票时,人们在各种方式中以各种方式短语。例如,一个人可以写一个位置是“错误”,而另一个人可能将其描述为“不正确”或“关闭”。了解人们可以参考同一件事的多种方式是一个专门针对NLP的挑战。

NLP和ML算法

在地图数据类型中检测错误的要求可以被建模为机器学习中的分类问题,其中分类模型将预测票证与地图数据类型中的错误相关的概率,基于其从训练数据的学习。我们从头开始物流回归(或softmax.如果是多人分类为我们的第一个版本算法适合我们的用例,那么。

Logistic回归将数值向量带有其输入。因此,我们需要编码票证,包括自由形式文本和联系人类型(类别),进入数值矢量。对于自由形式的文本,一个天真的方法是使用预定义的词汇来通过字频来编码。这种方法会使向量稀疏,并且需要更多的培训数据来有效地培训分类模型,这在大多数情况下是不可行的。因此,我们希望将票证的文本嵌入密集的载体,使得类似的门票将在嵌入矢量空间中彼此接近。

对于第一个版本算法,我们使用了Word2vec.单词嵌入,训练该嵌入模型从目标词中预测上下文(附近)词,使语义相似的词在嵌入空间中彼此接近。将单词映射到向量后,票证文本的向量是票证中单词向量的平均值。对于接触类型,每种接触类型都有一个uuid.,我们使用一个热门编码以编码票证的联系人类型UUID。票证的最终载体是其嵌入词向量及其接触类型一个热向量的串联。

在预处理过程中,在将票据输入神经网络之前,我们通过删除HTML、标点符号和停止词来对票据进行降噪。算法总结如下图1所示:

NLP分析的工作流程图
图1:我们的机器学习算法在对连接的单词向量和一个热类型向量应用Logistic回归之前,查看票据的联系类型(表示为UUID)和文本内容。

请注意,我们可以将逻辑回归的输出解释为票据与地图数据类型中的错误相关的概率,并为期望的精确-召回权衡设置阈值。我们将正票定义为概率大于或等于阈值的票。

机器学习算法的主要挑战是建立培训数据的技术成本。鉴于每个地图数据类型没有联系类型,我们必须手动标记样品票。通常,一个人的带宽将在三到六个月内标记约10,000至20,000张门票。

幸运的是,培训嵌入这个词是无人监督的,我们训练了一百万个随机采样的门票嵌入了嵌入的Word2Vec。我们尝试过手套但是,我们发现,使用客户票券本身进行单词嵌入训练会产生更好的性能,这可能是因为特定领域的语言特征是通过模型学习的。

版本1算法有其局限性。首先,我们限制自己在组合一张票的单词向量时使用平均值。所有的词语都被平等对待,重要的词语不被注意。其次,单词的嵌入是固定的,一旦我们用无监督的方式训练它,它不能优化分类任务。由于这些限制,我们尝试了深度学习模型,如Wordcnn.LSTM

卷积加激活的图

LSTM层图形
图2:承认我们算法的第一版的局限性后,我们考虑了如何将WordCnn和LSTM应用于故障单分类问题。

地图数据类型二进制分类上的模型性能摘要如下表所示。每个结果都是十个模拟的平均值,以最大限度地减少任何一个训练/评估/测试分裂的影响。对于每个型号类型,在客户票上培训的Word2VEC培训,在维基百科或随机生成的嵌入式上进行了评估。对于每个神经网络类型,这些嵌入式将保持固定或允许进行微调(可培训=“是”)。The main performance measures used are “AUC_ROC” = area under ROC curve, “AUC_PR” = area under precision-recall curve, and the recall value @ precision = 0.5 (for a more intuitive understanding of the model’s sensitivity at a given precision level).

嵌入的 模型 AUC ROC. AUC公关 召回@ precision = 0.5
类型 可训练的
随机的 是的 LSTM 0.794 0.519 0.528
0.628 0.297 0.062
Word2vec. 是的 0.791 0.502 0.533
0.796 0.527 0.538
手套 是的 0.785 0.521 0.568
0.773 0.494 0.519
随机的 是的 Wordcnn. 0.840. 0.612 0.669
0.822 0.596 0.608
Word2vec. 是的 0.849 0.620 0.688
0.842 0.615 0.646
手套 是的 0.836 0.601 0.642
0.831 0.588 0.627
随机的 LR. 0.636 0.335 0.124
Word2vec. 0.810 0.526 0.536
手套 0.788 0.486 0.435

模型性能图
图3:绘制我们的模型性能,很明显Wordcnn提供最佳结果。

事实证明,使用WordCNN初始化的Word2VEC在客户票上验证的WordCNN产生了最佳性能。这个结果是有道理的,因为应用程序更像是语言模型或序列生成的关键字发现和激活,而WordCnn模型前者更好,LSTM模型后者更好。换句话说,我们更多地关心某些短语的存在和单词的顺序。因此,我们决定使用WordCnn作为我们的版本2算法。

字嵌入可视化

每个单词都映射到一个300维的向量。我们使用降维技术如t-SNEPCA.为了将单词向量的维度降低到三个,以便我们可以在3D中可视化它们。然后,我们可以验证语义上类似的单词在3D图中彼此接近。此外,我们可以找到每个单词的同义词,即嵌入中最接近的单词,由余弦距离或欧几里德距离测量。TensorBoard是一个伟大的工具,可视化嵌入并计算距离的单词。

其他技术要了解学习的单词向量是同义词,即给出一个单词,找到壁橱N基于嵌入空间中的欧几里德距离或余弦距离。我们可以用我们的常识来验证单词的语义,确保单词嵌入得到正确的训练。

来自我们单词嵌入模型的示例同义词:

的同义词捡起 余弦距离 的同义词机场 余弦距离
放下 0.605 国际的 0.340
0.609 终端 0.360
3720. 0.616 δ 0.415
注定 0.616 MCO 0.424
固定 0.616 捷蓝航空 0.432
的同义词 余弦距离 的同义词建筑 余弦距离
Ave. 0.183 胡同 0.283
pl 0.244 公寓 0.525
大街 0.277 公寓 0.530
百老汇 0.299 复杂的 0.537
的同义词高速公路 余弦距离 的同义词4. 余弦距离
高速公路 0.175 5 0.226
号州际公路 0.248 6 0.232
斜坡 0.303 9日 0.240
的同义词 余弦距离 的同义词地图 余弦距离
0.223 w 0.274
西 0.383 谷歌 0.292
东方的 0.385 导航 0.444
只知更鸟》 0.408 导航器 0.475
的同义词科幻小说 余弦距离
奥克兰 0.285
弗朗西斯科 0.333
伯克利 0.350
0.395
旧金山 0.436

系统设计与体系结构

为了以大规模支持预测,我们实现上面描述的算法火花,哪个分区大数据并利用分布式/并行计算。版本1和版本2算法的系统的体系结构如下图4所示。

架构图
图4:使用逻辑回归和使用WordCNN的版本1的版本1实现为端到端的火花管道。

优步拥有一个大数据生态系统,利用Spark和Hive使产品团队能够存储和查询来自Hive表的数据,并在优步的集群上运行火花管道。我们实施了我们的机器学习算法作为端到端的火花管道。管道首次使用Spark SQL.查询包含Ticket_ID和联系类型的票证表,以及包含Ticket_ID,Ticket_Content和Trip_ID的票证文本Hive表。然后我们加入了两个数据帧并将结果传递给预处理阶段。

经过预处理后,我们使用NLP模型,由接触类型索引器、接触类型1热编码器、Word2Vec模型和Logistic回归模型组成,训练并保存为Spark管道模型。利用火花的ml管道范例帮助我们编写干净和可维护的代码。对于版本2算法,我们使用了TensorFlow,一个深度学习框架,离线训练WordCNN模型并保存为检查点。然后,我们出口培训的模型作为一个保存的模型,带有Tensorflow的SavedModelBuilder要服务。在生产中,我们使用优步工作米开朗基罗团队将SavedModel文件作为火花管道模型包装,并在端到端的火花管道中无缝地用于,如图5所示:

火花管道图
图5:我们将Tensorflow WordCnn模型作为火花管道包装。

当骑手提交票证时,它会自动与旅行相关联,这是从拾取点到骑车者所要求或旅行的拨打点的路线。某些地图实体也与旅行有关。为了进一步构建信心,我们可以通过跳闸,聚合正面票数和每个地图实体的计算分数加入正面门票,然后通过排名模型排列地图实体。排名模型的简单示例可以是跳线标准化的相关单据的概率的总和。

系统框架图
图6:如果我们可以在我们的数据库中将地图实体与旅行ID相关联,我们可以加入正面票证并汇总票证,从而创造更高的置信度结果。

我们将其安排每周使用优步的工作流管理系统运行每周运行,而编辑地图数据类型的服务会自动消耗管道的结果,并为手动编辑生成任务。

未来的工作

项目未来有两个方向,垂直缩放和水平缩放。对于垂直缩放,我们将探索高级模型,以提高模型的精度和回忆。对于水平缩放,我们将扩展到更多语言和地图数据类型。

  • 我们将探索使用字符级(Charcnn)而不是单词级嵌入品。与Word级嵌入式相比,字符级嵌入式更具弹性的拼写错误(当骑手通过手机提交票证)时发生了很多姓氏,因为Word2Vec将单词的每个拼写错误视为新单词。
  • 概括英语门票之外的这项工作将有助于优化在更多地区的客户支持。Word和Character Embeddings是语言 - 无人团,仅限于可用的培训数据量,因此这种方法应该概括为优步的全球数据集。

如果您想提高UBER的地图和位置数据的质量,请考虑申请角色在这一点地图团队

订阅我们的新闻以跟上优步工程的最新创新。

注释