本文根據智慧一點聯合創始人&CTO莫瑜老師在DataFunTalk人工智慧技術沙龍“自然語言處理技術應用實踐”中分享的《開源節流的智慧導購對話機器人實踐》編輯整理而成,在未改變原意的基礎上稍做修改。
首先介紹一下“智慧一點”,它是為電商客戶提供智慧導購服務,比較偏向於售前客服。上面是專案背景,今天主要從以下幾個方面講述,智慧導購機器人建設情況,從節流(提升客服效率)和開源(提高客戶轉化率)兩個角度來講解。
上圖是應用場景截圖,有單輪互動,如閒聊,單輪推薦。還有多輪互動幫助使用者完成一個任務,還有一個互動推薦等內容,後續會詳細講解。
接下來講一下應用後臺服務,中間是對話機器人核心部分,主要包含一箇中控部分,在接收到客戶端請求後呼叫自然語言理解服務對使用者輸入進行語義理解,然後分發到很多小的機器人,這些小機器人包括閒聊的、問答的、任務型機器人還有推薦型機器人。由於目前技術原因機器人無法完全取代人,因此採用一種人機協同方式。當機器人無法響應使用者請求時,將任務分發,由人工客服去解決使用者的問題。對話機器人通過不同的渠道去觸達不同的使用者,如阿里千牛、微信公眾號、web或者app。
接下來從節流和開源兩個方面介紹我們做了那些工作,首先節流方面,做的最多的是問答機器人。單輪問答,暫時不考慮上下文,或者說在多輪互動過程中通過一些處理後再回答使用者問題。有三種形式:一種是基於問答庫的形式,事先有了很多Q&A對,當使用者提出一個問題後,如何找到一個答案回覆使用者。第二種是在文件庫中找到一句話回答使用者的問題,這個與閱讀理解有差異,閱讀理解是將文件中的實體回覆給使用者。第三種是基於知識圖譜的形式,構建知識圖譜,依據使用者的問題在知識圖譜中獲取相關的資訊回答使用者。
大部分的智慧問答都是基於上述類似框架,首先基於使用者的問題進行語義理解,依據retrieval模組獲取候選集,最後依據Ranking模組排序,架構模組與搜尋引擎很相似。在retrieval和Ranking模組也可以用到在搜尋引擎中提升matching和ranking的方法。
第一種方式基於問答庫的智慧問答,其核心是給定兩個問題,其語義相似度是多少。除去預處理可以從兩個維度考慮,首先是要從語義表達的方式來表示問題的含義,然後根據這兩個語義表示計算相似度。比如可以將問題轉化為詞貸模型,也可以使用一些無監督語義表示方法或者有監督語義表示方式。基本上就是將問題轉化為語義表示,然後求解語義表示的相似度。第二種是直接建模計算兩個問題間的相似度,比如Jaccard距離、編輯距離、WMD (Word Mover Distance, 借鑑EMD概念),或者將其轉化為圖的形式。我們可以結合不同模型最後來解決這類問題,看這兩個問題含義是否一樣。
第二種就是從文件中找相應的句子來回答,首先我們會建模實現問題的表示和句子的表示,也會採用一些傳統特徵,比如考慮答案中是否包含地點,考慮問題是否是諮詢地點等傳統特徵,然後結合深度學習的特徵再去建立一個模型。
但是現實應用場景中,使用者的提問是多種多樣的,比如使用者會問很多關於尺碼的問題,如果引數展開會是指數級。還有明天有沒有活動,今天問和明天問是不一樣的。如果使用前面的基於問答庫的問答方式無法支援,因此基於知識圖譜的問答就顯得比較重要。第三種方式一般涉及三類問題,第一個是知識圖譜如何構建,怎麼從結構化資料、非結構化資料還有半結構化資料中構建知識圖譜;第二個是如何理解使用者的問題輸入;第三個是如何生成回覆答案。對於後面兩個問題,一般有兩個常見解決方案:第一種解決方案是首先對句子進行理解然後將其轉化為資料庫查詢,根據查詢結果回覆;第二種是IBM werson採用的模式,重點關注問題答案的型別是什麼,然後通過檢索和排序方法支援。
我們的解決方案是對前面三種方案進行了融合,比如在做智慧問答時,最簡單的方案是隻考慮問題含義是否一樣。其實我們可以首先判斷問題含義是否一樣,也可用第二種方式,這個答案是否回覆了這個問題,因此可以考慮更多的資訊。然後利用LR模型融合更多的特徵。
其實很多情況下是多輪對話,如果要支援多倫對話核心是如何維護對話狀態。需要結合上下文理解使用者意圖是什麼,使用兩大類方式,一種是非引數模型,基於近似資料進行標註;再一種就是使用模型的方式。前者可控性更強,後者泛化性更強。在應用出現的問題有很多,比如歷史訓練資料是系統還未上線前的互動資料,上線後使用者對話情景會發生變化。實體抽取有兩種方式,一種是基於規則方式,另一種是基於序列標註。
對話管理一般分為兩大類,一種是預先自定義的圖架構,通過事先自定義進行維護,對話的狀態可以用id來定義,每個節點就是一個狀態,每個節點的轉移或者要回復的文字都是系統預先定義好的。這種方式系統難維護,尤其狀態較多時。第二種是Frame based架構,將狀態表示為槽的組合,策略狀態優化、文字生成等都是通過相關配置完成,從而實現設計與現實的解耦。比如導購機器人,開發人員並不是一個好的對話機器人設計師,導購專家可以通過這個平臺實現他們的想法。目的是讓導購專家無需瞭解技術實現面向使用者體驗的平臺設計,互動平臺支援配置要實現哪些意圖、如何互動以及互動方式是怎樣。管理平臺維護商品活動資訊,所有的相關資訊都會進入知識圖譜形成圖譜。設計統一的描述語言,要求表達能力強,對話互動系統依據描述語言和知識圖譜進行最終互動。技術人員著重解決如何構建表達能力強的描述語言,設計人員著重於提升使用者體驗。電商存在潮汐現象,平常和活動差異很大,在平常對導購機器人有更高的需求,需要如何提升客戶轉化率。
提升客戶轉化率不單單幫使用者省錢而且還幫其賺錢,如何將互動和推薦結合來提高轉化率。在CUI之前,GUI比CUI有很多優點,比如:GUI資訊展示更好,GUI操作精準度更高,基本100%,但是CUI很難做到百分之百。但是CUI比GUI更容易資訊獲取,GUI服務於頭部資訊,對於長尾資訊很難獲取,比如在在支付寶找免密支付是很困難的。從使用者角度是要結合兩者的優點。另外,對話互動場景的個性化需求很強。綜合來看,將個性化推薦融入對話場景中顯得非常重要。
在對話互動過程中做推薦有什麼不同。傳統推薦很多依賴隱式反饋,比如在看今日頭條、抖音等,會根據你的瀏覽、點選、購買等資訊來判斷是否對某一產品感興趣。但是在對話互動過程中可以結合更多豐富的資訊,可以獲得一個顯式反饋,比如去餐館吃飯,服務員問你要吃什麼,這是一個獲得顯式反饋的。在導購過程中的推薦有:熱門推薦、相關推薦,還有主動推薦,比如提醒/催單,還有最近相關活動推薦,還有優惠券推薦。比如客戶買了90片S碼紙尿褲,使用S碼紙尿褲的小孩的紙尿褲每天用量大,那麼,我們可以在第七天或第八天對他進行紙尿褲優惠券推薦;而對於L碼時,就要在30-40天之後再發起相關推薦和優惠券推送。
在對話過程中其實資訊是不對稱的,因此通過對話互動方式實現資訊交換。比如使用者並不知道商家有什麼資訊,商家也不知道使用者有什麼偏好,因此需要如何通過資訊互動彌補這種不對稱,促成交易。主體上採用一種Q20方式,首先給使用者一個推薦,然後進行互動再推薦。比如使用者想買一個手機,User: 我想買個手機,有什麼推薦?, Bot: 親,你想看什麼價位的?, User: 1000以下吧, Bot: 這個價位的手機,有華為,小米,魅族,你想看哪個品牌的?, User: 小米的吧,Bot: 推薦你看看紅米(Url)和紅米Pro(Url)。
基本流程是開始沒有任何限制,然後在沒有滿足終止條件前,基於限制做一個推薦,第二步,選擇下一次互動的引數,需要互動什麼東西,然後生成使用者回覆,經過語義理解發現一個新的限制,然後依據新的限制進行結合不斷進行迭代。在商品型別中可以有不同型別,最簡單是確定型商品,但是有不同屬性,也有可能是一個組裝產品,包含不同部分。還有就是反饋部分,以前GUI就是通過點贊/評分、偏好等,CUI就是依據屬性諮詢。在這其中有一些問題是影響轉化效率的,我們如何去和使用者推薦,如果互動太多,使用者會反感,你為什麼問我這麼多問題,選擇資訊量最大的做推薦,可以採用靜態策略和動態策略,靜態策略就是對所有人先問A屬性再問B屬性,動態策略比如對於A不同的反饋採取不同的行為。還可以考慮個性化,如一個人每次來都買某個品牌的產品,就不需要再溝通他的品牌偏好了。
如“User: 剛出生的寶寶,有沒有什麼紙尿褲推薦?, Bot: 我們們家紙尿褲有好幾個系列,您是要超薄的,還是超柔的?, User: 超薄和超柔有什麼不同?• Bot: 超薄…,超柔…,User: 看看超薄的?, Bot: 推薦…”對話會發生返回,這種情況很普遍,這其實是多個意圖的交叉或偏移,解決方案就是上圖三角形是互動平臺如何去維護一個場景活動,可能有很多沒有結束的產品,在使用者輸入時判斷是否是新的意圖,新意圖就建立新的場景,將新場景加入堆疊中,如果是老場景,判斷是哪一個老意圖,然後去互動,完成互動之後將對應場景從棧裡拿出,這種方式支援不同意圖切換。還有情況是互動過程中無法回覆,這種情況是在互動過程中避免說的太過於技術語言。這種涉及到評論挖掘,抽取使用者對商品的標籤或描述。
很多情況是使用者發起,但是有時候是需要機器人發起,如“Bot: 最近我們們家上線了一款新產品,您要不要了解一下?• User: 你們家用什麼快遞?• Bot: 通過天貓商城菜鳥倉隨機快遞發貨哦。• Bot: 新款產品,瞭解下?• User: 好啊• Bot: balabala• User: balabala”,這種解決方案就是分為策略層和意圖層。機器人依據一定策略發起對話,發起主動意圖,當使用者回覆在主動意圖裡面,按主動意圖指令碼執行,如果使用者意圖不在主動意圖裡面,依據被動意圖去互動。被動意圖互動完依據一定策略繼續主動意圖,通過這種方式實現機器人主動發起和被動對話的結合。
最後小結一下,我們將導購機器人分為三個機器人,最簡單是問答機器人——單輪情況;在此基礎上實現多輪對話,多輪對話會依據一定策略轉化為單輪情況;在多輪基礎上實現主動對話和互動推薦。依據這三個機器人不同的三個屬性(單輪、多輪、主動)實現不單單幫使用者節省人工還能提升轉化率的目的。
——END——公眾號ID:datafuntalk——