COTA:通過自然語言處理和機器學習改進Uber客戶服務
作者|Huaixiu Zheng, Yi-Chia Wang, Piero Molino
譯者|嚴子怡
編輯|Emily
AI 前線導讀:為了讓用戶獲得最佳的端到端體驗,Uber 致力於讓客戶支持變得更容易使用也更易於理解。 為了實現這一目標,Uber 的客戶關注團隊利用了由內部平台支持的五種不同的「客戶 - 客服」溝通渠道。該客服平台集成了客戶支持工單的背景知識以便於解決客戶的問題。 在全球 400 多個城市的平台上,每天都有數十萬張工單出現。這個團隊必須確保客服人員能夠儘可能準確地、快速地解決問題。
我們研發了 COTA,我們的客戶關注工單助手(Customer Obsession Ticket Assistant)。它是一個使用了機器學習和自然語言處理(NLP)技術的工具,可以幫助客服人員提供更好的客戶支持。 在我們的客戶支持平台之上,通過利用我們的 Michelangelo 機器學習即服務(Machine Learning-as-a-Service)平台,COTA 可以快速高效地解決 90%以上我們收到的客戶支持工單。
在本文中,我們將討論我們研發 COTA 背後的動機,概述其後端架構,並展示這個強大的工具是如何提高客戶滿意度的。
更多乾貨內容請關注微信公眾號「AI 前線」,(ID:ai-front)
在 COTA 出現之前的客戶支持
當客戶向 Uber 尋求幫助時,我們必須及時引導他們找到最好的解決方案。一種方法是,讓用戶在報告問題時,點擊一系列關於問題分類的層級結構,來確定他們問題的類型;這為我們的客服人員提供了更多關於問題的上下文,從而使他們能夠更快地解決問題,如下面的圖 1 所示:
圖 1:Uber 客戶的應用內客服流程為用戶提供了一個直觀且易於使用的界面。該界面突出顯示行程的細節,並列出各種可能的問題類型來引導他們。
儘管這提供了重要的上下文,但並不是解決問題所需的所有信息都可以通過這個過程獲得,特別是當我們擁有如此多種多樣的解決方案時。此外,客戶可能會通過多種不同的方式描述與工單相關的問題,從而進一步複雜化了工單解決流程。隨著 Uber 規模的不斷擴大,客服人員必須能夠處理不斷增長的支持工單數量和工單的多樣性,從技術錯誤到費用調整等各個方面都需要考慮。事實上,當一個客服人員打開一個工單時,他們首先要做的就是從數千個可能性中確定問題類型,這不是一件容易的事情!減少客服人員花費在識別工單問題類型上的時間非常重要,因為它能減少了解決用戶問題所需的時間。
一旦選擇了問題類型,下一步就是確定正確的解決方案,每種類型的工單都有不同的協議和解決方案。儘管有成千上萬個可能的解決方案可供選擇,為每個問題確定適當的解決方案仍然是一個耗時的過程。
介紹 COTA:客戶關注工單助手(Customer Obsession Ticket Assistant)
我們設計了 COTA 來幫助我們的客服人員提高速度和準確性,從而改善客戶體驗。
簡而言之,COTA 利用 Michelangelo 服務來簡化,加速和標準化工單解決流程。儘管當前版本的 COTA 是由一系列向解決英語工單的客服人員推薦解決方案的模型組成的,我們也正在建立可以處理西班牙語和葡萄牙語工單的模型。
基於我們的支持平台,我們由 Michelangelo 服務驅動的模型會推薦三種最可能的問題類型和基於工單內容和行程場景的解決方案,如下所示:
圖 2:COTA 系統架構由七步工作流程組成。
使用了 COTA 之後的結果是很可靠的;客戶服務調查的結果表明:COTA 可以將工單解決時間縮短 10%以上,同時能達到相近或更高級別的客戶服務滿意度。 通過讓客服人員能提供更快更準確的解決方案,COTA 強大的機器學習模型使 Uber 客戶支持體驗更加愉快。
用 NLP 和 ML 構建 COTA 後端
從系統外來看,COTA 會收集有關支持問題的上下文信息,並返回可能的解決方案,但背後還有很多事情要做。在其核心系統中,COTA 後端負責完成兩項任務:確定工單類型並確定最合理的解決方案。為了實現這一點,我們的機器學習模型利用了從客戶支持消息中提取的特徵,行程信息和在工單提交的層次結構中客戶選擇的工單類型。
根據我們模型生成的特徵重要性分數(並且不出所料地),識別問題類型時最有價值的特徵是在通過層次結構正式提交他們的工單之前,客戶向客服人員發送的關於他們問題的消息。由於用戶發送的消息對於理解他們正在處理的問題很有用,我們建立了一個 NLP 管道,將多種不同語言的文本轉換為對下游的機器學習模型有用特徵。
我們可以建立 NLP 模型來翻譯和解釋不同的文本元素,包括音韻,詞法,語法,句法和語義。基於這些構建單元,NLP 還可以進行字元級,單詞級,短語級或句子 / 文檔級的語言建模。傳統的 NLP 模型是通過利用人類語言學專業知識來手工地設計特徵。隨著最近深度學習模式端到端訓練的興起,研究人員甚至開始開發能夠解釋整個文本塊的模型。這種方式不必顯式地解析一個句子中不同單詞之間的關係,而是直接使用原始文本。
對於我們的使用場景,我們決定首先構建一個 NLP 模型,在單詞級別上分析文本,以更好地理解文本數據的語義。一種流行的 NLP 方法是話題建模,其目的是使用辭彙的計數統計結果來理解句子的含義。雖然話題建模沒有考慮到字詞順序,但是對於諸如信息檢索和文檔分類之類的任務,該方法已經被證明能起到非常好的效果。
圖 3:我們為工單類型識別和解決方案選擇建立的 NLP 流水線由三個不同的步驟組成:預處理,特徵工程和通過逐點排序演算法的計算。
在 COTA 中,我們使用以下基於話題建模的 NLP 管道處理文本消息,如圖 3 所示:
預處理
我們首先通過刪除 HTML 標籤來清理文本。接下來,我們對消息中的句子進行分詞,並刪除停用詞。然後,我們進行詞形化,將不同詞形的單詞轉換成相同的基本形式。最後,我們將文檔轉換成一個單詞集合(一個所謂的單詞袋),並建立這些單詞的字典。
話題建模
為了理解我們的用戶意圖,我們在預處理之後對單詞袋進行話題建模。具體來說,我們使用 TF-IDF(詞頻 - 逆文檔頻率)和 LSA(潛在語義分析)來提取話題。下面的圖 4a 顯示了一些我們可能從話題建模中獲得的話題類型:
圖 4:a)話題建模:我們使用 TF-IDF 和 LSA 從客戶支持平台處理的客戶支持工單中的富文本數據中提取話題。b)特徵工程:將所有的解決方案和工單映射到話題向量空間,計算每一對解決方案和工單之間的餘弦相似度。
特徵工程
話題建模使我們能夠直接使用話題向量作為特徵來執行下游的分類,用於問題類型識別和解決方案選擇。然而,這種直接的方法受到話題向量的稀疏性的影響;為了給這些話題構建一個有意義的表示,我們通常需要保持話題向量擁有數百甚至數千個維度,同時很多維度的值接近於零。由於具有非常高維度的特徵空間和大量的數據需要處理,訓練這些模型變得非常具有挑戰性。
考慮到這些因素,我們決定以間接方式使用話題建模:通過計算餘弦相似度特徵來執行進一步的特徵工程,如圖 4b 所示。以解決方案選擇為例,我們收集每個解決方案的歷史工單,並形成這樣的解決方案的「單詞袋「表示。
在這個場景下,話題模型變換是在「單詞袋「表示上進行的,這個變換讓我們知道每一個解決方案 i 的特徵向量 Ti。我們對所有解決方案都進行這種轉變。我們可以將任何新收到的工單 j 映射到解決方案 T1,T2...Tm 的話題向量空間,其中 m 是可用的可能解決方案的總數。這個過程最終得出與工單 j 對應的特徵向量 tj。Ti 和 tj 之間的餘弦相似度得分 sij 則表示解決方案 i 和工單 j 之間的相似性,這將特徵空間從數百或數千個維度減少到一隻手就能數的過來。
逐點排序演算法
我們再次以解決方案選擇作為例子,闡釋我們的 ML 演算法是如何起作用的。為了設計這個演算法,我們將餘弦相似度特徵與其他可以用來匹配工單和解決方案的工單特徵與行程特徵組合到一起。憑藉可用於數百種工單類型的超過 1000 種可能的解決方案,COTA 的大型解決方案空間向我們用於區分這些解決方案之間的細微差異的演算法提出了挑戰。
為了向客服人員給出所有可能性中最好的解決方案建議,我們使用了排名學習(learning-to-rank)的方法,並構建了基於檢索的逐點排序演算法。具體來說,我們將解決方案和工單對之間的正確匹配標記為正(1),並且隨機抽取一部分與工單不匹配的解決方案,並將這些對標記為負(0)。使用餘弦相似度以及工單和行程特徵,我們可以建立一個二元分類演算法,利用隨機森林技術來分類每個「解決方案 - 工單」組合是否匹配。一旦演算法對每一個可能的匹配進行評分,我們可以對評分進行排名,並把三個排名最高的解決方案作為建議。
下面的圖 5 對使用話題向量特徵的傳統多類分類演算法與使用修改過的餘弦相似性特徵的逐點排序演算法的性能進行了比較:
圖 5:在解決方案選擇任務上,逐點排序演算法的精確度比多類分類演算法精確度要高 25%。
基於餘弦相似度的逐點排序演算法優於使用未處理話題向量的多類分類演算法,精確度相對提高了 25%。這個比較是在相同的數據集上使用相同類型的具有相同超參數的演算法(隨機森林)進行的,凸顯了在排序框架中使用修改過的餘弦相似特徵的好處。如圖 5 所示,使用逐點排序演算法不僅使訓練過程加快了 70%,而且顯著提高了模型性能。
更容易更快的解決工單 = 更好的客戶支持
只有轉化到現實世界中,COTA 給出的可靠的結果才有意義。為了衡量 COTA 對我們客服體驗產生了多大影響,我們在英語工單上在線進行了多項受控的 A / B 測試實驗。在這些實驗中,我們涵蓋了數以千計的客服人員,隨機分配到對照組或實驗組。對照組中的客服人員使用之前的工作流程,而實驗組中的客服人員則使用一個經過修改的工作流程,他們可以看到一個包含關於問題類型和解決方案建議的用戶界面。我們收集這些由對照組或實驗組的客服人員解決的工單,並測量了一些關鍵指標,包括模型準確性、平均處理時間和客戶滿意度得分。
測試步驟進行如下:
在下一代 COTA 中使用深度學習
COTA 的成功說服了我們繼續使用機器學習技術棧進行試驗,以提高系統的準確性,並為客服人員和終端用戶提供更好的體驗。
最近在文本分類,文本總結,機器翻譯,和許多輔助性的 NLP 任務(語法和語義分析,識別文字蘊涵,命名實體識別與連接)等領域上的發展進步都是通過深度學習的方法來獲得的。所以,我們開始使用深度學習進行嘗試似乎是一個非常自然的選擇。
多種不同架構的深度學習嘗試
在 Uber AI 實驗室的研究人員的支持下,我們嘗試將深度學習應用於下一代的問題類型識別和解決方案建議系統。我們基於卷積神經網路(CNN),遞歸神經網路(RNN)以及這兩者的幾種不同組合,實現了多種架構,包括分層結構和基於注意力的架構。
使用深度學習框架,我們能夠以多任務學習的方式來訓練我們的模型,讓一個模型既能夠識別問題類型,又能提出最佳解決方案。由於問題類型被組織到一個層次結構中,我們明確了我們可以使用束搜索的循環解碼器來訓練模型進行預測層次結構中的選擇路徑。這種解碼器類似於序列模型的解碼組件,並且能夠進行更精確的預測。
通過超參數優化選擇最佳模型
為了確定最佳的深度學習架構,我們對所有類型的架構進行了大規模超參數優化,並在 GPU 集群上並行地對這些模型進行了訓練。最後的結果表明,最精確的架構既適用於 CNN 也適用於 RNN。但為了我們的研究目的,我們決定尋求一種更簡單的 CNN 體系結構,該架構準確度稍低,但在訓練和計算方面具有更好的計算性能和更短的推斷時間。最後,我們最終確定的模型提供了比原始隨機森林模型高 10%的精度。
在下面的圖 6 中,我們展示了一部分工單的數據覆蓋率(模型正在處理的工單的百分比,x 軸)和準確度(y 軸)之間的關係。如下圖 6 所示,隨著數據覆蓋率的降低,兩種模型都變得更加精確,但是我們的深度學習模型在相同的覆蓋率和較高的覆蓋率下表現出更高的準確性。
圖 6:我們的深度學習模型和經典模型(隨機森林)識別問題類型的能力之間的比較結果,揭示了深度學習模型實現了更大的數據覆蓋率和準確性。
與 Uber Michelangelo 團隊合作,我們正處於這些深度學習模型產品化的最後階段。
下一步
鄭懷修和 Yi-Chia Wang 是 Uber 應用機器學習團隊的數據科學家,Piero Molino 是 Uber AI Labs 的研究科學家。COTA 是客戶支持平台,Applied Machine Learning,Michelangelo 和 Uber AI Labs 之間的跨職能協作。李紅衛,安迪·哈里斯,莫尼斯·艾哈邁德·汗,Alexandru Grigoras,Viresh Gehlawat,Basab Maulik,Chinmay Maheshwari 和 Ron Tal 也為這個項目做出了重要貢獻。
查看英文原文:
https://eng.uber.com/cota/
TAG:機器學習 |