楊立鵬,廉文彬,季續國,李 雯,陳華龍
(1.中國鐵道科學研究院集團有限公司,北京 100081; 2.中國國家鐵路集團有限公司,北京 100844; 3.中科知程科技有限公司,北京 100044)
自2011年上線以來,12306互聯網售票系統功能不斷豐富,為旅客提供車票預訂、候補、改簽、退票等票務服務,推出接續換乘、動車選座、常旅客會員、候補購票和電子客票等客運提質服務;進一步優化架構,提高系統安全性和穩定性,日售票能力提升至2 000萬張;圍繞旅客出行的全行程,為旅客提供餐飲、酒店、旅游、定制服務等線上線下一體化、個性化、多元化的旅行服務產品。多元化的產品和服務,疊加海量的、不確定的用戶需求,為提升面向用戶的在線咨詢、售后服務等帶來了巨大挑戰。客服系統作為鐵路系統的重要組成部分,在出行高峰期面臨服務需求突增,客服人員與服務需求嚴重失衡、重復性回答大量常見性問題、客服回答內容檢索效率較低等問題。因此,12306在微信公眾號平臺開通了智能客服咨詢功能,為旅客出行提供智能、高效的服務。智能客服可為旅客提供7×24小時的余票、正晚點、時刻表、預售期和起售時間等信息查詢內容,解答旅客出行中的常見問題,增加了旅客服務的承載量,輔助客服人員快速準確地處理應答,減輕了人工客服的壓力,為旅客提供更優質、更完善的體驗和個性化服務。但分析大量咨詢數據,發現智能客服系統還存在響應耗時較長、針對常見問題的回答準確度還有待提高等問題,影響了用戶的咨詢體驗。因此,有必要對12306智能客服的在線咨詢服務進行優化,提高系統響應能力和問答準確度。
在問答研究領域,秦兵[1]介紹了問答系統的構建流程,提出可通過完善建立候選集和優化相似度的計算方法提高智能回答問題的準確性。對單詞和句子采用合理的表示方法是提高相似度準確性計算的關鍵,基于HowNet相似度[2]的計算和基于word2vec的方法是目前應用較多的相似度計算方法。因此,Tomas等人[3-4]針對文本的向量表示方法進行了研究。文獻[5-6]研究了文本的相似度計算方法,其中Wang R H提出使用多信息進行文本的相似度計算。此外,由于不需要大量的特征工程工作、可顯著減少數據預處理的工作量,深度學習[7]中的循環神經網絡[8-9]被越來越多地應用在文本挖掘中。
綜上所述,該文研究了候選集的建立和相似度計算的優化方法,綜合利用倒排索引技術[10]和LSTM孿生網絡[11-12]優化文本的相似度計算流程,從而提高問題的檢索效率和準確率,進一步提升智能客服解答問題的能力。
從2019年問答的數據中選取8 741 633條記錄,分別針對咨詢的響應時間和準確度進行分析。
作為智能客服系統,咨詢響應時間是重要的服務指標,其含義為用戶發出咨詢請求到獲得咨詢結果所需的總時間。鐵路客戶總是希望能夠得到最快的咨詢響應。對不同輸入類型的響應時間給出了統計分析,在具體分析時,把響應時間分為三個區間,0~10毫秒、10~120毫秒和大于120毫秒。從統計結果可知,快速回復占比高,耗時較短,應推薦快速回復方法,提高相關文的推薦質量。
評價智能客服效果的另一個重要指標是準確率,系統能否準確理解用戶的咨詢內容,并給出準確的回答。
圖1中,會話長度為1且AT=0的含義為,用戶在看到系統不能理解自己問題后立刻結束了會話。顯然,此時用戶的問題沒有得到解答;會話長度大于1但以AT=0結尾則代表用戶與系統進行了耐心的交流,但最終系統還是未能理解用戶問題。未能解答(AT=0)的會話占比平均為20%左右,因此系統需要進一步降低系統未解答的比例。

圖1 不能回答用戶疑問的會話占比統計
通過在線咨詢效果的評估可知在線客服咨詢的服務能力還需要提升,因此需要建立一個高效的智能客服咨詢服務計算流程。計算流程主要從三個方面進行優化:文本的預處理,FAQ候選集的建立和相似度計算,計算流程如圖2所示。

圖2 問答系統的工作流程
(1)當語義引擎接收到用戶使用咨詢的問題后,首先需要對用戶提問的問句進行預處理操作,包括分詞、詞性標注、過濾停用詞,從FAQ知識庫中把相關度較高的問答對全部選出來作為精準匹配的候選集,利用word2vec訓練詞向量;
(2)利用孿生網絡進行特征提取并生成句子特征向量;
(3)利用句子間的語義相似度計算出用戶問句和FAQ候選集合中各個問句的語義相似度,系統設定相似度的最小閾值和最大閾值,如果計算出來的語義相似度存在大于預先設定的最大閾值的問句,將挑選出相似度分值最高的FAQ,并將該FAQ中的答案作為正確答案推送到用戶端,并將其余高于閾值的FAQ作為該問題的相關問題匯總后推送給用戶。
如果FAQ候選集合中每個問句通過相似度計算出的分值均不超過設定的最大閾值,將判定是否有落在最小閾值和最大閾值之間的FAQ,如果有,則將這部分FAQ作為建議推送給用戶,以此引導用戶尋找正確的問題答案。如果以上都不滿足則推送給用戶默認回復的話術,引導用戶換一種表述方式咨詢問題。
中文的詞語之間是連續的,首先需要去掉標點符號、介詞、語氣詞等虛詞以及區分意義不大的高頻詞和低頻詞,然后對文本內容進行分詞。由于12306智能客服系統關心的不是出現在問句中的每個詞是否都能被準確切分,而是那些對檢索有意義的相關詞語能否被快速準確切分,因此為提高系統效率,根據系統特點設計了業務詞庫和通用詞庫兩類。業務詞庫主要涉及業務直接相關的內容,包含鐵路客運相關的概念、術語、符號等,該詞庫對中文分詞具有關鍵性的作用。通用詞庫主要包含常見的名詞、動詞和一些形容詞、副詞等。
由于業務關鍵詞對問題查詢的貢獻往往大于普通詞語,所以對2個詞庫的關鍵詞分別賦予不同的權重。隨著12306互聯網售票系統功能的不斷完善,業務詞庫和通用詞庫也需要持續完善。目前中文分詞的技術已十分成熟,多數分詞工具如中國科學院的ICTCLAS,哈爾濱工業大學的LITP、jieba(結巴)等,準確率都達到了95%以上。該文使用jieba分詞器,并加入業務詞庫和通用詞庫,使得領域詞匯如“候車室”“二等座”等可以被正確切分。
在問答系統中,為了提高相應回復的檢索效率,首先使用倒排索引技術實現問答對的第一層過濾,即首先構造一個倒排索引表,表中的每一項內容包括一個屬性值和具有該屬性值的所有記錄的地址;然后在小范圍內計算語義相似度,返回相似度最高的答案給用戶;選出FAQ中的問句作為候選問題集。
假設用戶輸入的目標問題中一共存在n個詞{W1,W2,…,Wn},12306的FAQ知識庫中共有x個標準的問答對,第k(1≤k≤x)個標準問題中含有m個詞{Q1k,Q2k,…,Qmk},目標問題和第k個標準問題之間重疊的詞個數記ck,即ck={W1,W2,…,Wn}∩{Q1k,Q2k,…,Qmk},則取ck>0的FAQ中的問答對組成候選問題集。如果將FAQ庫中的每個標準問題一一讀取后,再和目標問題進行計算重疊的詞個數,效率是比較低的。對于目標問句中的某個詞,為了能夠快速地統計FAQ庫中究竟有多少問句含有這個詞,本系統使用信息檢索技術中的倒排索引快速獲取候選問題集。
表1是12306的FAQ庫的實例說明,12306的FAQ庫存儲了所有的12306問答對,其中第一列記錄了FAQ庫中每個問句在庫文件中的位置。表2是構建的倒排索引表,表中第二列記錄了FAQ庫中的標準問題中所包含的關鍵詞,第三列記錄了每個關鍵詞出現在FAQ中的位置編號集合。在FAQ庫中出現過的所有關鍵詞及其對應的倒排列表組成了倒排索引,通過關鍵詞索引中的值很容易找到哪些FAQ庫中的標準問題包含該關鍵詞。對目標問句中的每一個詞都進行這樣的處理后,就可以進一步計算出ck的值。最后,找出ck>0的FAQ庫中的標準問題位置編號,根據表1中的FAQ集合找到相應的FAQ,計算目標問題中的所有關鍵詞,就可以將相關的FAQ全部找出并建立候選問題集。針對用戶問題和候選問題集的相似度計算結果直接影響給用戶反饋的結果,所以為了優化短文本相似度的計算,提出了問題匹配的相似度計算模型。

表1 12306FAQ集合

表2 倒排索引列表
長短期記憶(long short-term memory,LSTM)[13]是一種特殊的RNN,主要是為了解決長序列訓練過程中的梯度消失和梯度爆炸問題。由于LSTM的記憶單元對原RNN中的隱層節點進行替換,可以學習長期依賴信息,更好地獲取整個句子的語義特征,而且已在許多自然語言處理任務如文本相似度計算、情感分析、機器翻譯中成功應用,因此選用Siamase LSTM(孿生網絡)來計算句子的相似度[14]。
假設12306的FAQ庫中有N個問句,需要為輸入的問句找出庫里與其最相似的問句,即FAQ,顯然使用一個LSTM或其他的神經網絡需要O(N*N)的時間,這是非常耗時的操作,因此有必要找到一個有效的方法來減輕相似度的計算量。同時FAQ庫中的每個FAQ相當于一個類別,根據輸入匹配某個類別,屬于一個多分類的應用[15]。在學習樣本少且類別較多的情況下,適合使用孿生網絡進行神經網絡計算2個輸入的相似性。算法流程如下:
(1)輸入兩個樣本到兩個同樣的參數權重共享的LSTM神經網絡;
(2)通過學習分別提取兩個輸入的特性向量;
(3)計算兩個網絡輸出的距離,如果距離較近就認為是同一類,較遠就認為是不同的類別。這里必須是同樣的神經網絡,因為如果使用兩個不同的神經網絡,即使輸入相同,輸出也可能認為兩者不同。為了保證模型達到好的學習效果,通常使用對比損失函數(contrastive loss function)表示成對樣本的匹配程度。對比損失函數可以有效地處理孿生神經網絡中的paired data的關系,公式如式(1)所示:
(1)

AT_LSTM(attention LSTM,基于注意力機制的LSTM模型)模型相似度計算的孿生神經網絡結構主要由輸入層、嵌入層、LSTM層、Attention層和匹配層5部分組成,如圖3所示。

圖3 句子相似度模型結構
輸入層把每個詞語用其在詞典中的位置編號表示得到一個詞語編號序列,并統一為同等長度,然后傳遞給嵌入層。嵌入層采用word2vec模型將詞語映射為詞向量序列后作為LSTM層的輸入。在短文本的相似度計算過程中,由于領域相關的特征詞對整個文本語義的貢獻比較大,當理解一句話時,通常會將注意力放到幾個重要的關鍵詞或短語上,所以利用attention機制將領域詞的特征對語義貢獻的大小加權到句子級別的特征上,能夠更深層次地表達文本的真實語義。LSTM網絡結構的輸出向量表示為[h1,h2,…,hn],使用公式(2)對LSTM輸出的每個特征hi進行編碼,利用tanh激活函數進行一次非線性變換得到ui,根據公式(3)利用softmax函數得到各個分量ui的attention權重向量W=(β1,β2,…,βn),最后通過公式(4)對LSTM結構輸出的向量[h1,h2,…,hn]加權和,得到LSTM提取的句子特征向量表示S。
ui=tanh(Whhi+bh)
(2)
βi=softmax(Wβui)
(3)
(4)
最終在匹配層,得到兩個句子的語義表示特征向量S1和S2后,在文本的語義空間中計算兩個向量的相似度,從而判斷兩個問句是否語義相似。使用公式(5)對兩個句子的特征向量計算分值。
(5)
12306FAQ問答集共600余條,從以往歷史問答記錄中針對每個FAQ選取意圖相同不同問法進行語料標注,每個標準問題選取50條相似問法,50條不相似問法,最終形成64 700問題對。最后將問題對進行分詞、打標簽形成標準數據集。
實驗訓練語料共64 700個問題對,其中54 700為訓練集,5 000為驗證集,5 000為測試集。此次訓練使用隨機梯度下降法對模型權重進行更新,LSTM網絡參數設置如表4所示,其中最大句子長度,即句子中詞的數量,根據以往用戶訪問記錄進行統計分析,最大的句子長度是42個關鍵詞,所以句子最大長度設為50。此次訓練使用隨機梯度下降法對模型權重進行更新,LSTM網絡參數設置如表3所示。

表3 神經網絡參數
AT_LSTM模型經過100次迭代訓練,隨著迭代次數不斷增加,損失率不斷降低,準確率不斷上升,說明模型在訓練的過程中不斷的在優化,模型預測輸出值越來越接近實際狀況,在第80次迭代開始,損失率下降到約13%左右,準確率穩定在89%左右,模型趨近于平穩,基本已收斂到最佳狀態。
為了驗證提出模型的有效性,分別與基于HowNet和基于詞向量余弦距離的相似度算法進行了實驗對比。從表4可以看出,文中方法效果較好,HowNet效果最差,原因在于HowNet根據概念之間的上下文關系和同位關系實現詞語相似度計算知識系統詞語的語義相似度計算。由于對12306領域詞匯收錄較少,采用HowNet可能導致計算的相似度比較低;而采用基于詞向量余弦距離的相似度算法得到的詞語相似度較低,原因在于word2vec雖然解決了文本表示面臨的數據稀疏和詞語間語義關系建模困難的問題,但是卻把詞向量簡單組合起來表示句子的向量,這并不能完全代表句子的真實語義,導致出現只要2個句子相同或相近的關鍵詞越多則相似度越高的現象。AT_LSTM模型結合了孿生LSTM網絡和注意力機制充分挖掘2個句子深度語義信息,然后利用余弦相似度算法計算句子特征向量之間的分值。

表4 部分實驗結果
在測試集數據量相同的條件下,分別利用不同方法得到的準確率和耗時如表5所示。語義相似度值為[0,1]之間的小數,越接近于1表示相似性越高,反之則越低。一般短文本相似度通過人為設定閾值作為相似或者不相似的分界。該文設定閾值為0.9,當計算相似度值大于該閾值時認為2個句子相似,否則不相似。從表中可以看到,提出的AT_LSTM算法準確率最高、耗時也較低。

表5 不同算法實驗結果對比
利用word2vec深度學習模型對問句中的關鍵詞向量化,使得相近或相關的關鍵詞其空間距離也更接近,能夠較好地解決傳統文本表示存在的語義不足和維度災難問題;LSTM神經網絡擅長處理時序數據;注意力機制可以更好地提取出句子的語義特征。充分結合word2vec、注意力機制孿生LSTM方法的優勢,提出了可以準確、快速計算文本相似度的AT_LSTM模型,并對12306智能問答系統中的FAQ問答集進行了實驗,實驗結果驗證了AT_LSTM模型的有效性。后續可根據12306相關系統的上線要求,對該算法進行進一步改造,并應用于12306智能問答系統。此外,由于知識圖譜實體之間具有更豐富的語義關系,如果文本中出現多個特征詞通過知識圖譜證明它們之間的關系,將會對結果產生很大的影響。所以如何將知識圖譜實體之間的關系融合到短文本相似度計算將是下一步工作研究的重點。