想象一下站在路邊等待你的優(yōu)步車過來接你時,在你的應(yīng)用程序上,你會看到車子幾乎沒有移動。于是你向司機發(fā)送消息了解發(fā)生了什么事。
你不知道的是,你的司機在前往接你的途中遇到了交通堵塞。他們會收到你的消息并希望回復(fù)。這種情況是優(yōu)步的司機伙伴們告訴我們的一個痛點。所以我們開始思考,如果有可能的話,司機可以通過一個簡單的點擊就可以與乘客進行溝通。
我們提出了一種新的智能回復(fù)功能,稱為一鍵式聊天(OCC)。借助OCC,在開始行程前乘客和司機之間的協(xié)調(diào)更快、更無縫。利用機器學(xué)習(xí)和自然語言處理(NLP)技術(shù)來預(yù)測對一般乘客信息的響應(yīng),優(yōu)步開發(fā)了OCC讓司機更容易回復(fù)app內(nèi)的消息。
OCC是UberChat最新的關(guān)鍵的增強功能之一,旨在通過提供最相關(guān)的回復(fù),為優(yōu)步的司機伙伴提供一鍵式聊天體驗。
一鍵式聊天架構(gòu)
一鍵式聊天(OCC)利用Uber的機器學(xué)習(xí)平臺Michelangelo在乘客聊天消息上執(zhí)行NLP,并生成適當?shù)幕貜?fù)。如下面的圖2所示,該體系結(jié)構(gòu)遵循五個步驟:
1. 發(fā)送方(乘客app)發(fā)送消息。
2. 一旦我們的后端服務(wù)收到消息,后端就會將消息發(fā)送給Michelangelo的機器學(xué)習(xí)服務(wù)。
3. 機器學(xué)習(xí)模型對消息進行預(yù)處理和編碼,為每個可能的意圖生成預(yù)測分數(shù),并將它們發(fā)送回后端服務(wù)。
4. 一旦后端服務(wù)收到預(yù)測,它將遵循回復(fù)檢索策略以找到最佳回復(fù)(在這種情況下,生成前四個最佳回復(fù))。
5. 接收方(司機應(yīng)用程序)接收建議并將其呈現(xiàn)在應(yīng)用程序上供司機點擊。
圖:優(yōu)步智能回復(fù)系統(tǒng)OCC的架構(gòu)由五步工作流程組成。
為了找到對每個接收消息的最佳回復(fù),我們將任務(wù)制定為具有兩個主要組件的機器學(xué)習(xí)解決方案:1)意圖檢測和2)回復(fù)檢索。
如下圖所示,思考這個例子,以更好地理解機器學(xué)習(xí)如何實現(xiàn)OCC體驗:
圖:機器學(xué)習(xí)算法賦予OCC體驗流程。涉及兩個關(guān)鍵步驟:1)意圖檢測和2)回復(fù)檢索。
司機收到一條乘客的信息:“你現(xiàn)在在哪里?”,這在司機前往接乘客的途中非常常見的。OCC系統(tǒng)首先將消息的意圖檢測為“你在哪里?”這一步稱為意圖檢測。然后,系統(tǒng)會向司機發(fā)出前四個最相關(guān)的回復(fù),分別是“是的,我在路上”,“抱歉,堵車了”,“我在您的上車地點”,以及“請給我打電話“。這是回復(fù)檢索步驟。現(xiàn)在,司機可以選擇這四個回復(fù)中的一個,并通過一次點擊將其發(fā)送給乘客。
在UberChat中實現(xiàn)OCC
我們的UberChat系統(tǒng)允許Uber平臺上的司機,乘客,消費者和派送員在app內(nèi)進行通信。當前流程遵循標準消息傳遞系統(tǒng):我們希望發(fā)送者輸入他們的消息,然后將消息發(fā)送給接收者。下圖顯示了具有典型消息流的UberChat系統(tǒng)的概述:
圖UberChat后端服務(wù)管理發(fā)送者和接收者之間的消息流。
對于用戶發(fā)送的每條消息,Uber的消息傳遞平臺(UMP)執(zhí)行以下操作(如上圖4所示):
1. 將Sender的消息發(fā)送到Uber的Edge Gateway
2. 將消息路由到Uber的Messaging Platform
3. 將消息添加到推送通知服務(wù)
4. 向Uber的Cassandra數(shù)據(jù)庫存放持久化消息
5. 推送遠程和本地的表層消息給Receiver
6. 收到消息后,從Messaging Platform獲取消息正文
為了支持智能回復(fù),我們要能夠使用機器學(xué)習(xí)模型以足夠低的延遲實時評估回復(fù)。為了滿足這一需求,我們利用Uber的內(nèi)部機器學(xué)習(xí)平臺Michelangelo的機器學(xué)習(xí)的訓(xùn)練和服務(wù)流水線。
在UberChat中通過機器學(xué)習(xí)提供智能回復(fù)
根據(jù)設(shè)計,OCC旨在為司機伙伴們在前往接乘客期間(即Uber特定的場景和主題領(lǐng)域)提供簡單的聊天體驗。然而,它與所有其他試圖理解普通文本信息的嘗試一樣都有一個技術(shù)挑戰(zhàn):它們不僅簡短,而且還包含縮寫、拼寫錯誤和口語。我們在設(shè)計機器學(xué)習(xí)系統(tǒng)時考慮到了這一挑戰(zhàn)。
從外部看,OCC接收到最新傳入的消息并返回可能的回復(fù),但在后臺還有更多事情要做。有兩個主要的工作流為OCCML系統(tǒng)、離線訓(xùn)練和在線服務(wù)提供服務(wù),如圖所示:
圖:OCC的背后,我們的機器學(xué)習(xí)系統(tǒng)依賴于兩個工作流程,離線訓(xùn)練和在線服務(wù)。
- 離線訓(xùn)練
在離線訓(xùn)練期間,我們使用以下基于嵌入的ML和NLP流水線來處理這些文本消息:
- 預(yù)處理器
為了準備文本嵌入模型的訓(xùn)練數(shù)據(jù),我們利用了匿名的UberChat消息。我們首先按語言(語言檢測)對聊天消息進行劃分,然后進行長度截斷(長度<=2)。最后,我們對每條消息進行標記。
- 文本和消息的嵌入
在預(yù)處理之后,我們使用Doc2vec模型進行消息嵌入,它從可變長度的文本片段(例如句子,段落和文檔)中學(xué)習(xí)固定長度的特征表示。我們在數(shù)百萬個匿名的、聚集的UberChat消息中訓(xùn)練Doc2vec模型,并使用該訓(xùn)練將每個消息映射到一個密集的向量嵌入空間。滿足我們需求的Doc2vec的兩個主要優(yōu)點是它可以捕獲單詞的順序和語義。下圖使用t-SNE圖在二維投影中可視化單詞向量。由于它捕獲了單詞的語義,因此模型可以將相似的單詞聚集在一起。例如,“Toyota”接近““Prius”和“Camry”,但與“chihuahua”相距很遠。
圖:Doc2vec單詞嵌入的這種二維t-SNE投影顯示了模型自動組織概念和隱式地學(xué)習(xí)單詞之間的關(guān)系的能力,并基于語義對它們進行聚類。
- 意圖檢測
為了理解用戶的意圖,我們在嵌入過程之后訓(xùn)練了我們的意圖檢測模型。與Gmail的智能回復(fù)功能類似,我們將意圖檢測任務(wù)定義為分類問題。
為什么我們需要意圖檢測?因為人類語言豐富。有很多方式會提出同樣的問題,比如“你要去什么地方?”,“你倆要去哪里?”,“你的目的地是什么?”拼寫錯誤和縮寫會增加更多排列,所以聊天消息增加了一定程度的復(fù)雜性。
創(chuàng)建一個需要對數(shù)百萬個問題進行回復(fù)的系統(tǒng)將無法擴展,因此我們需要一個系統(tǒng)來識別每個問題背后的意圖或主題,從而對有限的意圖進行回復(fù)。下圖說明了不同的消息如何根據(jù)檢測到的意圖聚集在一起:
圖:在這種二維t-SNE的句子嵌入的投影中,模型圍繞意圖聚類消息。
- 意圖-回復(fù)映射
我們利用匿名和聚集的歷史對話來查找每個意圖的最常見的回復(fù)。之后,我們的通信內(nèi)容策劃師和法律團隊進行一輪又一輪擴充,使回復(fù)盡可能的容易理解和準確。然后,我們?yōu)榛貜?fù)檢索創(chuàng)建意圖-回復(fù)映射。
在線服務(wù)
一旦我們完成模型的離線訓(xùn)練,在線服務(wù)就相對簡單了。我們獲取最新的輸入消息并通過與離線相同的預(yù)處理器發(fā)送它們。預(yù)處理的消息將通過預(yù)先訓(xùn)練的Doc2vec模型編碼為固定長度的向量表示,之后我們使用向量和意圖檢測分類器來預(yù)測消息的可能意圖。
最后,通過利用我們的意圖-回復(fù)映射,我們根據(jù)檢測到的意圖檢索最相關(guān)的回復(fù),并將它們顯示給接收消息的司機伙伴。此外,一些極端情況將由規(guī)則而不是算法所掩蓋,包括非常短的消息(預(yù)處理階段中被截斷的消息),表情符號和低置信度預(yù)測(多意圖用例)。
- 下一步
我們計劃繼續(xù)在全球市場中將一鍵式聊天功能擴展到其他語言。我們還在研究更多特定于Uber的上下文功能,如地圖和交通信息,并計劃將它們合并到我們現(xiàn)有的模型中。這些更新將增加我們更準確地識別用戶意圖和展示定制回復(fù)的可能性,從而更好地協(xié)助司機伙伴們:簡而言之,讓優(yōu)步體驗變得更加神奇。
此外,雖然當前系統(tǒng)使用靜態(tài)意圖–回復(fù)映射來檢索回復(fù),但我們計劃構(gòu)建一個回復(fù)檢索模型以進一步提高OCC系統(tǒng)的精度。
在高層次上,OCC是一個多回合對話系統(tǒng)的自然應(yīng)用,因為司機伙伴們和乘客們可以在他們找到對方之前進行多次對話。利用OCC和其他功能,構(gòu)建一個對話系統(tǒng)改善化成功接到乘客和聊天體驗的這個長期過程,最終在我們的平臺上帶來更好的用戶體驗。
OCC只是Uber中眾多不同的NLP/ConversationalAI計劃中的一個。例如,NL也被用于提高Uber[1,2]的客戶服務(wù),同時也處于免提乘車的核心位置,這一塊我們將很快開始測試聲控命令。
原文:https://eng.uber.com/one-click-chat/