
想象一下站在路邊等待你的優(yōu)步車(chē)過(guò)來(lái)接你時(shí),在你的應用程序上,你會(huì )看到車(chē)子幾乎沒(méi)有移動(dòng)。于是你向司機發(fā)送消息了解發(fā)生了什么事。
你不知道的是,你的司機在前往接你的途中遇到了交通堵塞。他們會(huì )收到你的消息并希望回復。這種情況是優(yōu)步的司機伙伴們告訴我們的一個(gè)痛點(diǎn)。所以我們開(kāi)始思考,如果有可能的話(huà),司機可以通過(guò)一個(gè)簡(jiǎn)單的點(diǎn)擊就可以與乘客進(jìn)行溝通。
我們提出了一種新的智能回復功能,稱(chēng)為一鍵式聊天(OCC)。借助OCC,在開(kāi)始行程前乘客和司機之間的協(xié)調更快、更無(wú)縫。利用機器學(xué)習和自然語(yǔ)言處理(NLP)技術(shù)來(lái)預測對一般乘客信息的響應,優(yōu)步開(kāi)發(fā)了OCC讓司機更容易回復app內的消息。
OCC是UberChat最新的關(guān)鍵的增強功能之一,旨在通過(guò)提供最相關(guān)的回復,為優(yōu)步的司機伙伴提供一鍵式聊天體驗。
一鍵式聊天架構
一鍵式聊天(OCC)利用Uber的機器學(xué)習平臺Michelangelo在乘客聊天消息上執行NLP,并生成適當的回復。如下面的圖2所示,該體系結構遵循五個(gè)步驟:
1. 發(fā)送方(乘客app)發(fā)送消息。
2. 一旦我們的后端服務(wù)收到消息,后端就會(huì )將消息發(fā)送給Michelangelo的機器學(xué)習服務(wù)。
3. 機器學(xué)習模型對消息進(jìn)行預處理和編碼,為每個(gè)可能的意圖生成預測分數,并將它們發(fā)送回后端服務(wù)。
4. 一旦后端服務(wù)收到預測,它將遵循回復檢索策略以找到最佳回復(在這種情況下,生成前四個(gè)最佳回復)。
5. 接收方(司機應用程序)接收建議并將其呈現在應用程序上供司機點(diǎn)擊。

圖:優(yōu)步智能回復系統OCC的架構由五步工作流程組成。
為了找到對每個(gè)接收消息的最佳回復,我們將任務(wù)制定為具有兩個(gè)主要組件的機器學(xué)習解決方案:1)意圖檢測和2)回復檢索。
如下圖所示,思考這個(gè)例子,以更好地理解機器學(xué)習如何實(shí)現OCC體驗:

圖:機器學(xué)習算法賦予OCC體驗流程。涉及兩個(gè)關(guān)鍵步驟:1)意圖檢測和2)回復檢索。
司機收到一條乘客的信息:“你現在在哪里?”,這在司機前往接乘客的途中非常常見(jiàn)的。OCC系統首先將消息的意圖檢測為“你在哪里?”這一步稱(chēng)為意圖檢測。然后,系統會(huì )向司機發(fā)出前四個(gè)最相關(guān)的回復,分別是“是的,我在路上”,“抱歉,堵車(chē)了”,“我在您的上車(chē)地點(diǎn)”,以及“請給我打電話(huà)“。這是回復檢索步驟。現在,司機可以選擇這四個(gè)回復中的一個(gè),并通過(guò)一次點(diǎn)擊將其發(fā)送給乘客。
在UberChat中實(shí)現OCC
我們的UberChat系統允許Uber平臺上的司機,乘客,消費者和派送員在app內進(jìn)行通信。當前流程遵循標準消息傳遞系統:我們希望發(fā)送者輸入他們的消息,然后將消息發(fā)送給接收者。下圖顯示了具有典型消息流的UberChat系統的概述:

圖UberChat后端服務(wù)管理發(fā)送者和接收者之間的消息流。
對于用戶(hù)發(fā)送的每條消息,Uber的消息傳遞平臺(UMP)執行以下操作(如上圖4所示):
1. 將Sender的消息發(fā)送到Uber的Edge Gateway
2. 將消息路由到Uber的Messaging Platform
3. 將消息添加到推送通知服務(wù)
4. 向Uber的Cassandra數據庫存放持久化消息
5. 推送遠程和本地的表層消息給Receiver
6. 收到消息后,從Messaging Platform獲取消息正文
為了支持智能回復,我們要能夠使用機器學(xué)習模型以足夠低的延遲實(shí)時(shí)評估回復。為了滿(mǎn)足這一需求,我們利用Uber的內部機器學(xué)習平臺Michelangelo的機器學(xué)習的訓練和服務(wù)流水線(xiàn)。
在UberChat中通過(guò)機器學(xué)習提供智能回復
根據設計,OCC旨在為司機伙伴們在前往接乘客期間(即Uber特定的場(chǎng)景和主題領(lǐng)域)提供簡(jiǎn)單的聊天體驗。然而,它與所有其他試圖理解普通文本信息的嘗試一樣都有一個(gè)技術(shù)挑戰:它們不僅簡(jiǎn)短,而且還包含縮寫(xiě)、拼寫(xiě)錯誤和口語(yǔ)。我們在設計機器學(xué)習系統時(shí)考慮到了這一挑戰。
從外部看,OCC接收到最新傳入的消息并返回可能的回復,但在后臺還有更多事情要做。有兩個(gè)主要的工作流為OCCML系統、離線(xiàn)訓練和在線(xiàn)服務(wù)提供服務(wù),如圖所示:

圖:OCC的背后,我們的機器學(xué)習系統依賴(lài)于兩個(gè)工作流程,離線(xiàn)訓練和在線(xiàn)服務(wù)。
- 離線(xiàn)訓練
在離線(xiàn)訓練期間,我們使用以下基于嵌入的ML和NLP流水線(xiàn)來(lái)處理這些文本消息:
- 預處理器
為了準備文本嵌入模型的訓練數據,我們利用了匿名的UberChat消息。我們首先按語(yǔ)言(語(yǔ)言檢測)對聊天消息進(jìn)行劃分,然后進(jìn)行長(cháng)度截斷(長(cháng)度<=2)。最后,我們對每條消息進(jìn)行標記。
- 文本和消息的嵌入
在預處理之后,我們使用Doc2vec模型進(jìn)行消息嵌入,它從可變長(cháng)度的文本片段(例如句子,段落和文檔)中學(xué)習固定長(cháng)度的特征表示。我們在數百萬(wàn)個(gè)匿名的、聚集的UberChat消息中訓練Doc2vec模型,并使用該訓練將每個(gè)消息映射到一個(gè)密集的向量嵌入空間。滿(mǎn)足我們需求的Doc2vec的兩個(gè)主要優(yōu)點(diǎn)是它可以捕獲單詞的順序和語(yǔ)義。下圖使用t-SNE圖在二維投影中可視化單詞向量。由于它捕獲了單詞的語(yǔ)義,因此模型可以將相似的單詞聚集在一起。例如,“Toyota”接近““Prius”和“Camry”,但與“chihuahua”相距很遠。

圖:Doc2vec單詞嵌入的這種二維t-SNE投影顯示了模型自動(dòng)組織概念和隱式地學(xué)習單詞之間的關(guān)系的能力,并基于語(yǔ)義對它們進(jìn)行聚類(lèi)。
- 意圖檢測
為了理解用戶(hù)的意圖,我們在嵌入過(guò)程之后訓練了我們的意圖檢測模型。與Gmail的智能回復功能類(lèi)似,我們將意圖檢測任務(wù)定義為分類(lèi)問(wèn)題。
為什么我們需要意圖檢測?因為人類(lèi)語(yǔ)言豐富。有很多方式會(huì )提出同樣的問(wèn)題,比如“你要去什么地方?”,“你倆要去哪里?”,“你的目的地是什么?”拼寫(xiě)錯誤和縮寫(xiě)會(huì )增加更多排列,所以聊天消息增加了一定程度的復雜性。
創(chuàng )建一個(gè)需要對數百萬(wàn)個(gè)問(wèn)題進(jìn)行回復的系統將無(wú)法擴展,因此我們需要一個(gè)系統來(lái)識別每個(gè)問(wèn)題背后的意圖或主題,從而對有限的意圖進(jìn)行回復。下圖說(shuō)明了不同的消息如何根據檢測到的意圖聚集在一起:

圖:在這種二維t-SNE的句子嵌入的投影中,模型圍繞意圖聚類(lèi)消息。
- 意圖-回復映射
我們利用匿名和聚集的歷史對話(huà)來(lái)查找每個(gè)意圖的最常見(jiàn)的回復。之后,我們的通信內容策劃師和法律團隊進(jìn)行一輪又一輪擴充,使回復盡可能的容易理解和準確。然后,我們?yōu)榛貜蜋z索創(chuàng )建意圖-回復映射。
在線(xiàn)服務(wù)
一旦我們完成模型的離線(xiàn)訓練,在線(xiàn)服務(wù)就相對簡(jiǎn)單了。我們獲取最新的輸入消息并通過(guò)與離線(xiàn)相同的預處理器發(fā)送它們。預處理的消息將通過(guò)預先訓練的Doc2vec模型編碼為固定長(cháng)度的向量表示,之后我們使用向量和意圖檢測分類(lèi)器來(lái)預測消息的可能意圖。
最后,通過(guò)利用我們的意圖-回復映射,我們根據檢測到的意圖檢索最相關(guān)的回復,并將它們顯示給接收消息的司機伙伴。此外,一些極端情況將由規則而不是算法所掩蓋,包括非常短的消息(預處理階段中被截斷的消息),表情符號和低置信度預測(多意圖用例)。
- 下一步
我們計劃繼續在全球市場(chǎng)中將一鍵式聊天功能擴展到其他語(yǔ)言。我們還在研究更多特定于Uber的上下文功能,如地圖和交通信息,并計劃將它們合并到我們現有的模型中。這些更新將增加我們更準確地識別用戶(hù)意圖和展示定制回復的可能性,從而更好地協(xié)助司機伙伴們:簡(jiǎn)而言之,讓優(yōu)步體驗變得更加神奇。
此外,雖然當前系統使用靜態(tài)意圖–回復映射來(lái)檢索回復,但我們計劃構建一個(gè)回復檢索模型以進(jìn)一步提高OCC系統的精度。
在高層次上,OCC是一個(gè)多回合對話(huà)系統的自然應用,因為司機伙伴們和乘客們可以在他們找到對方之前進(jìn)行多次對話(huà)。利用OCC和其他功能,構建一個(gè)對話(huà)系統改善化成功接到乘客和聊天體驗的這個(gè)長(cháng)期過(guò)程,最終在我們的平臺上帶來(lái)更好的用戶(hù)體驗。
OCC只是Uber中眾多不同的NLP/ConversationalAI計劃中的一個(gè)。例如,NL也被用于提高Uber[1,2]的客戶(hù)服務(wù),同時(shí)也處于免提乘車(chē)的核心位置,這一塊我們將很快開(kāi)始測試聲控命令。
原文:https://eng.uber.com/one-click-chat/