AI技术如何打造智能客服
本文根據58同城AI Lab負責人詹坤林在DataFunTalk人工智能技術沙龍所分享的《五八同城智能客服系統“幫幫”技術揭秘》編輯整理而成,在未改變原意的基礎上稍做整理。
首先簡單介紹一下58同城,58同城是一個生活服務平臺,平臺連接著B端商戶和C端用戶,B端商戶在平臺發布帖子信息,平臺將這些帖子信息分發給C端用戶供其瀏覽。在58同城APP或網站上,用戶可以通過搜索和推薦的方式獲取到帖子信息,例如用戶可以通過搜索框搜索信息、進入列表頁篩選信息、在猜你喜歡和相關推薦等推薦位瀏覽信息。58同城提供租房、二手房、找工作、二手車、黃頁等信息,這些業務分布于房產、招聘、二手車、黃頁等不同業務部門,不同業務部門都有各自獨立的客服團隊,我們的目標是設計一套通用的智能客服平臺來解決所有客服問題,以提高客服效率。
今天的分享將從以下幾個方面展開:首先介紹智能客服的背景,然后介紹總體技術架構、算法和工程架構,最后做一下總結。主要想通過這次分享使大家了解到智能客服系統中的技術全貌,希望對大家有些啟發。
傳統客服工作模式包括客服網站和電話客服兩種:
(1)公司提供一個客服網站給用戶,用戶通過網站提交問題反饋,這些反饋信息會通過一個系統展示給客服人員,客服人員每天逐個解決這些問題,解決后通過站內信或者短信回復用戶。這種模式下,用戶在客服網站上的操作往往較繁瑣,并且問題解決流程周期長,可能會耗時數小時甚至數天,用戶體驗差。
(2)公司提供一個客服電話給用戶,用戶通過電話咨詢客服。這種模式盡管直接,但是可能存在問題描述不清、溝通成本高的問題,例如客服在解決某個問題時往往需要用戶提供額外信息,一通電話會持續較長時間。一般一個客服每天能完成60-80個電話的接線,服務效率較低,而且客服人力成本高。
大部分客服問題其實是高頻重復問題,這些問題往往都有標準的答案,這可以利用機器去解決,可以構建一套智能問答系統去自動回答用戶的提問,當用戶對答案不滿意時,他可以再尋求人工客服的幫助。這種機器自動問答和人工客服輔助的模式下,大部分客服問題通過機器解決了,只有少部分機器解決不了的復雜問題才會由人工客服來解決,這不僅提升了用戶體驗也提高了客服人員的人效。
58同城舊有客服體系就是通過客服網站和客服電話來提供客服服務,我們需要重塑這種模式,構建一套新的客服體系。在新的客服體系下,用戶所有的客服咨詢首先都會經過智能客服系統“幫幫”,由“幫幫”來自動回答用戶的問題,若用戶對答案不滿意,他可以轉接人工客服。人工客服包括舊有的電話客服和新設計的IM(即時通訊)在線客服,IM在線客服是指通過IM聊天的方式提供客服服務,用戶可以和客服人員通過聊天窗口直接一對一進行溝通,智能客服和IM在線客服會無縫整合在同一個聊天窗口中。轉接人工客服時我們會首先轉接到IM在線客服上,若用戶仍不滿意才會通過電話的方式解決問題。新的客服體系下,用戶可以獲取到業務咨詢、投訴建議、產品反饋、閑聊以及工單處理等客服服務。
這種新的客服模式相比舊有模式的優點有:
(1)用戶體驗好。傳統客服網站的方式用戶獲取答案周期長,這是因為客服人員需要手動解答客服網站上收集的每個用戶問題,由于每日問題量大而且客服人員數量有限,大部分用戶的問題不能即時得到解答。新的模式下用戶可以通過IM聊天窗口咨詢問題并即時獲取答案,簡單高效。
(2)客服人效高。“幫幫”能夠自動回答大部分問題,人工客服只需要利用IM在線客服聊天工具去解答少部分復雜問題,機器和人工處理問題的比例大約是8:2。每個IM客服人員一天大約能處理120-150個用戶的咨詢,這遠比電話客服每天處理60-80個用戶的咨詢要高,因此我們會盡量讓用戶咨詢先流轉至IM在線客服,只有最復雜的問題才會流轉至電話客服。通過這種智能客服到IM在線客服再到電話客服的方式,我們可以利用有限的客服人員處理更多的用戶咨詢。
“幫幫”智能客服系統是一套基于深度學習和自然語言理解技術實現的自動問答對話機器人,產品界面如圖所示,用戶通過聊天窗口的形式和“幫幫”進行對話。對話機器人一般分為業務咨詢類、任務類和閑聊類三種,“幫幫”也支持這三種功能:最主要的是提供業務咨詢功能,幫助用戶解決業務類問題;其次支持任務類型的回答,用戶可以實現查詢帖子被刪除原因、注銷賬號等任務;此外,為豐富“幫幫”的功能,也支持閑聊功能,用戶可以在聊天窗口與機器人寒暄閑聊。
“幫幫”整體技術架構如圖所示,包括基礎服務層、應用服務層、編輯運營層、接入層以及在線客服系統。基礎服務層提供對話系統的基礎技術能力,系統需要對用戶輸入的一段語句進行理解,這里需要自然語言理解模塊,對語句進行分詞、詞性標注、實體識別、關鍵詞抽取和句法分析等;同時需要識別用戶的意圖,包括通用意圖和業務意圖,通用意圖是指用戶是來做業務咨詢還是閑聊,業務意圖是指若用戶是做業務咨詢,具體咨詢什么業務,這里會使用文本分類的技術去識別用戶意圖。基礎服務之上是應用服務層,這一層具體實現了KB-Bot基于問答知識庫的機器人、Task-Bot任務對話型機器和Chat-Bot閑聊類型機器人,這是“幫幫”系統的三種核心能力。編輯運營層是指有一個編輯團隊支撐著“幫幫”的算法策略迭代,主要完成數據標注、問答運營、數據分析和效果評估的工作,這些工作輸出會作用到基礎服務層和應用服務層。基于應用服務層,對外提供通用的接口服務以便于業務方接入,我們支持Android、iOS和web端的接入。此外,機器不是萬能的,用戶有很多復雜的問題仍需要人工解決,這里有一套在線客服系統提供了人工在線客服的能力,應用服務層會和這套在線客服系統做無縫對接。
“幫幫”系統的核心是提供KB-Bot、Task-Bot和Chat-Bot三種能力,下面分別介紹下這里使用到的技術。KB-Bot是指基于問答知識庫的對話機器人,它主要實現了“幫幫”最重要的能力——提供業務咨詢類服務。58的用戶使用幫幫主要是來進行業務咨詢,例如詢問賬號為何被鎖、帖子為何被刪、如何購買帖子置頂服務等等。業務咨詢類的回答需要基于問答知識庫來實現,這里的問答知識庫是一個包含眾多問答對的數據集。我們將問題劃分為標準問題和擴展問題,例如“為什么刪除我的帖子”這個是一個標準問題,語句表達很標準,它會有一個標準答案,其近似的問法我們稱之為擴展問題,例如“為什么刪我貼”、“告訴我為啥刪帖”等,這些都表達的是一個意思,這些問題同樣對應的是相同的標準答案。有了問答知識庫,用戶來詢問時就是一個問題匹配的過程了,只需要將用戶輸入的問題和知識庫中的問題做匹配,得到意思最相近的那條問題,然后將對應的答案返回給用戶,這就完成了一次問答操作。問答知識庫的構建非常關鍵,這里會首先對客服團隊歷史積累的問題數據進行抽象,形成標準問題,然后結合算法和標注對標準問題做擴展,形成初始問答知識庫,在系統上線后,對新產生的數據又會進行挖掘,不斷擴充知識庫。
基于知識庫的問答可以使用檢索或者分類模型來實現。檢索式回答的流程是:首先對用戶的輸入問題做處理,如分詞、抽取關鍵詞、同義詞擴展、計算句子向量等;然后基于處理結果在知識庫中做檢索匹配,例如利用BM25、TF-IDF或者向量相似度等匹配出一個問題集合,這類似推薦系統中的召回過程;由于我們是一個問答系統,最終是直接返回給用戶一個答案,因此需要從問題集合中挑出最相似的那個問題,這里會對問題集合做重排序,例如利用規則、機器學習或者深度學習模型做排序,每個問題會被打上一個分值,最終挑選出top1,將這個問題對應的答案返回給用戶,這就完成了一次對話流程。在實際應用中,我們還會設置閾值來保證回答的準確性,若最終每個問題的得分低于閾值,會將頭部的幾個問題以列表的形式返回給用戶,最終用戶可以選擇他想問的問題,進而得到具體的答案。
這里還可以使用分類模型來實現問答,一個標準問題有多種擴展問法,每個標準問題可以看做是一個分類,將用戶的輸入映射到標準問題上即可完成回答,因此可以將問答看做是一個大規模短文本分類的問題。我們采用了多特征、多模型、多分類結果融合的方式來完成短文本分類,在特征層嘗試使用了單字、詞、詞性、詞語屬性等多種特征,在模型層應用了FastText、TextCNN和Bi-LSTM等模型,各模型的結果輸出最終會做融合得到最終分類結果。
Task-Bot任務型機器人是在特定條件下提供服務,為了滿足帶有明確目的的用戶,例如查天氣、查物流、訂機票等任務型場景。用戶的需求一般較復雜,通常需要機器人和用戶做多輪互動以幫助用戶明確目的。我們實現了一個標準的多輪會話系統,首先自然語言理解模塊會識別出當前輸入問題的意圖和槽位,然后輸入到對話管理器去決定下一步的回答動作,最終再通過自然語言生成模塊生成答案返回給用戶。
這是一個具體的應用實例,用戶輸入“為啥刪我貼”,經過自然語言理解處理后,意圖識別模塊會將其識別為任務類型的服務,用戶是想詢問刪除帖子的原因,通常情況下問答系統會反問用戶,要求用戶提供帖子ID才能查詢,這里我們通過另一種設計來完成:首先調用發布中心接口拉取用戶已發布的貼子列表展示給用戶,讓用戶去自主選擇相應的帖子,用戶點擊具體帖子之后,帖子ID會傳遞給問答系統,問答系統會再調用相關接口查詢到帖子刪除原因返回給用戶。這一整套流程是用戶的自助查詢過程,相比以往用戶需要查詢自己的帖子ID給客服人員,客服人員登錄相關系統并輸入貼子ID查詢結果要高效很多。
閑聊服務是基于一個閑聊語料庫,采用模板匹配、檢索式回答以及生成式對話等多種技術來實現的。模板匹配使用了AIML和正則表達式匹配;檢索式回答類似KB-Bot中的方式首先檢索然后利用模型排序;當模板匹配和檢索式回答都不能給出閑聊回答時,我們會采用SeqSeq生成式對話,我們使用了一個標準的Seq2Seq模型,問題會首先輸入到一個雙向LSTM編碼器,然后加入Attention機制,最終使用一個單層LSTM做解碼,從而得到結果輸出。生成式對話往往會生成一些讓人難以理解的答案,這也是業界難以解決的問題。
當“幫幫”給出的答案用戶不滿意時,用戶會尋求人工服務。“幫幫”支持人工在線客服的無縫轉接,用戶只需在聊天窗口一鍵點擊按鈕便能連接到IM人工在線客服,實現一對一聊天。在轉接人工客服成功后,人工客服會在客服工作臺中通過一個類似微信的聊天窗口和用戶溝通。雖然用戶在前端操作簡單,其實后面是有一套功能復雜的在線客服系統在支撐。
在線客服系統是用戶和客服人員溝通的橋梁,在58業務場景下,它支持多個業務部門的不同客服團隊注冊使用,不同客服團隊可以管理自己的客服人員。當用戶在智能客服窗口點擊轉接人工客服按鈕時,智能客服會識別出用戶轉向的目標客服團隊,在線客服會分配一名客服人員和用戶進行溝通。在線客服系統支持用戶排隊功能,當同時轉接人工客服的用戶較多而客服人員人力有限時,用戶便會進入等待隊列。智能客服識別用戶業務意圖往往存在一定錯誤率,有時候客服人員在和用戶溝通一段時間后會發現用戶的業務問題需要其他客服團隊來解決,此時客服人員會將會話轉交給其他業務團隊,因此在線客服系統還需支持會話流轉的功能。此外,溝通過程中的數據是非常重要的,例如可以根據人工的溝通記錄去優化自動問答的答案,因此數據監控也是必須必備的功能。
智能客服系統需要有一個完備的評價體系去評價它的好壞,在我們的評價體系中有基于人工標注的評價和基于用戶反饋的評價兩種方式:
(1)基于人工標注的評價。“幫幫”能夠自動回答業務咨詢、任務和閑聊類型的回答,業務咨詢類是基于問答知識庫來回答的,系統的回答能力受限于知識庫的豐富程度,因此并非能回答用戶的所有問題,系統最佳的狀態是將能回答的全部回答準確,不能回答的全部拒識,即拒絕回答。因此這里的評價指標包括有結果率、拒識率、召回率和準確率等,我們的目標是讓系統的有結果率無限接近數據的真實有結果率,召回率和準確率盡量高。這里我們是通過標注標準評測集來計算系統的各項指標,我們會從每日的全量數據集中抽樣出一個小數據集,保證小數據集的數據分布盡量符合全量數據集,然后由標注團隊對數據集做標注,標注出每個問題的實際答案,一般標注完成后還有質檢的環節,以保證標注結果盡量準確,這樣便生成了每日數據的標準評測集。基于該標準評測集我們會去評價系統的好壞,并且每次做新模型迭代時都會使用標準評測集去評價新模型,只有新模型的效果好了才允許上線。
(2)基于用戶反饋的評價。人工評價能夠評價智能客服系統的準確率,但是答案是否合理,能否為用戶解決問題,需要用戶去反饋評價,整個智能客服系統的最終目標是幫助用戶解決問題。我們會在產品上設計智能客服和在線客服的評價功能,例如會讓用戶評價智能客服的每個答案或者某次會話,在和人工客服聊天完畢會發送評價卡片給用戶去評價滿意度。最終我們會統計參評比例、滿意度等指標,這些指標能夠真正反應智能客服系統的好壞。實際中往往用戶參評比例低,我們會使用各種方法去刺激用戶評價。
上述內容介紹了“幫幫”智能客服系統中的技術和評價體系,我們在做算法策略迭代時會不斷優化評價指標。首先在離線模型迭代時,會基于標準評測集計算離線指標,只有指標提高了才允許模型上線。上線時會做ABTest上線,首先將新模型小流量上線,然后看數據效果,若效果好會切換更多的流量進行上線。
“幫幫”后臺系統總體架構如圖所示,“幫幫”前端頁面是一個IM聊天窗口,用戶在聊天窗口中可以和“幫幫”即時對話。這里的具體實現分為兩種:第一種是通過微聊(58同城TEG自研的IM即時聊天工具)來實現,用戶在前端的提問會被當做一條消息發送給微聊,我們有一個IM消息中轉模塊從微聊接收消息,并將消息轉發給問答引擎,問答引擎是一個RPC服務,使用SCF框架(五八同城TEG自研的服務通信框架)實現,問答引擎給出答案后返回給IM消息中轉模塊,中轉模塊將答案組裝成消息發送給微聊,最終微聊返回消息給用戶,這種方式的實現需要使用我們的微聊通道。還有一些業務方不希望通過微聊來獲取“幫幫”自動問答功能,只希望我們提供一個接口,業務方輸入問題,接口能夠返回答案即可,針對這種方式我們在問答引擎之上封裝了一層http服務,業務方只需要調用該服務即可。
下面介紹下問答引擎的后臺架構,問答引擎分為數據層、邏輯層和接入層。數據層包括問答知識庫、標注和運營數據以及構建的問答索引。邏輯層里各個功能模塊都基于SCF框架封裝成微服務,包括NLU服務、模板匹配服務、檢索服務、排序服務、預測服務、閑聊服務、主體服務,主體服務負責對外提供通用接口,接收問答請求,調用各個子服務完成問答邏輯以得到答案,并將答案返回給接入層。這里我們會做ABTest實驗,主體服務會請求ABTest平臺“日晷”(自研的包括請求分流和數據監控功能的ABTest平臺)獲取具體分流實驗信息。此外,我們的所有算法迭代都是通過自研的人工智能平臺來實現,標注和運營數據由Web標注管理系統來提供。
我們還會通過運營來提高問答效果,針對問答系統的高頻badcase回答,我們會進行人工修正,并即時同步到線上系統,以保證回答準確。“幫幫”每天產生的問答數據,我們會抽樣一部分去做標準評測集的標注,從標注結果中我們可以看到哪些問題回答錯誤了,我們會將這些問題標上正確答案并即時上線。這是因為線上問答模型的更新周期較長,一般是數天或者一周,通過人工運營可以快速將badcase給去掉。標準評測集數據較少,只會包含少量的badcase,我們還會挖掘每日的全量數據,發現高頻相似問題,并交由標注同事標注,若回答錯誤,也會進行標注運營上線。通過這種結合人工運營的方式,我們可以提高“幫幫”的回答準確率。
我們還會通過產品設計來提高問答準確率,“幫幫”最主要的功能是解決業務咨詢,這是基于我們構建的問答知識庫做回答的。因此,可以設計一個輸入提示的功能,在用戶輸入問題時去問答知識庫中匹配相關的問題,若匹配到,用戶直接選擇相關問題即可,此時我們的回答邏輯就是在知識庫硬匹配,而不用走算法模型匹配,可以大大提高回答準確性。在實際應用中,我們發現有很大一部分問題會從輸入匹配中匹配到,這種方式最終給回答準確率帶來了8%的提升,效果非常可觀。
智能客服系統有一個主要目標是提高人效,我們會將很多較復雜的咨詢服務做到聊天窗口中,讓用戶去自助完成,而不是像原來那樣用戶和人工客服溝通,人工客服去操作內部各個系統以得到答案返回給用戶。這樣可以減輕我們客服人員的壓力,并能提升用戶體驗。例如用戶需要徹底刪除自己發布的帖子,舊模式下必須讓客服人員去操作,新模式下,只要用戶在“幫幫”界面上問到了該問題,我們便會向用戶返回他的發布列表,他可以選擇某條貼子,直接點擊徹底刪除按鈕即可完成刪除。
“幫幫”是一個通用的智能客服平臺,需要對接58集團內多個業務方,為了提高接入效率,我們設計了一個通用的Web接入平臺。業務方注冊登錄接入平臺后,只需要簡單配置機器人和導入知識庫即可獲得智能客服能力,例如配置機器人歡迎語、熱門問題、配色等,平臺會自動生成一個前端頁面的鏈接,業務方可以嵌入到相關入口上。智能客服上線后,我們會將線上數據反饋給接入方,接入方可以再Web平臺上查看統計數據和明細數據。另外要強調的一點是,我們將知識庫的管理開放給接入方來管理,接入方可以導入和更新自己的問答知識庫,我們也會對問答數據做分類、聚類、主題抽取等操作,將相關中間結果提供給業務方,業務方基于此來更新知識庫。
“幫幫”已接入了五八集團內五八、趕集和安居客三大平臺的三十多個業務場景,每日可以解決數萬用戶的客服咨詢,此外,“幫幫”也被應用于公司內部的HR、行政和運維系統之中,以提高內部工作人員的辦公效率。經過我們持續開展算法策略迭代,目前“幫幫”問答系統召回率達到了90%,準確率達到了85%。
作者介紹:
詹坤林,58集團AI Lab負責人,算法高級架構師,負責推動AI技術在58生活服務行業的落地,為集團打造全面AI能力。曾任騰訊高級工程師,負責騰訊微博/騰訊新聞推薦算法研發。
團隊介紹:
58集團AI Lab人工智能實驗室隸屬于58集團TEG架構平臺線,旨在推動AI技術在58生活服務行業的落地,驅動各產品業務在人效、用戶增長、用戶體驗等方面的提升。目前主要產品包括人工智能平臺、智能客服對話機器人、智能外呼電話機器人、智能寫稿、推薦系統和推送系統等。
——END——
首發公眾號ID:datafuntalk
總結
以上是生活随笔為你收集整理的AI技术如何打造智能客服的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java语言对字节数组截取指定长度
- 下一篇: java基于ssm奶茶店进销存系统