李洪巍 莫建坡 曲榮勝 孫浩 蘇明
(北京寶蘭德軟件股份有限公司 北京市 100089)
電信運(yùn)營商的工單系統(tǒng)每日從全國各個(gè)地市匯總大規(guī)模用戶投訴的工單數(shù)據(jù),系統(tǒng)中存在大量重復(fù),相似的工單需要進(jìn)行合并歸類,引入機(jī)器學(xué)習(xí)可以智能化的對(duì)工單進(jìn)行處理。采用自然語言處理技術(shù)可以更好的理解工單之間的語義信息,再通過聚類算法歸并相似工單。將處理后的工單沉淀到知識(shí)庫中,通過對(duì)接問答系統(tǒng)可以為用戶提供工單解決方案的查詢,相似工單查找等功能。能極大減少客服人員的工作量,提高工作效率。
大規(guī)模工單聚類場(chǎng)景在應(yīng)用落地過程中主要面對(duì)兩個(gè)技術(shù)難題:一個(gè)是低資源的訓(xùn)練樣本,另一個(gè)是聚類算法效果欠佳。人工標(biāo)注的相似投訴工單的數(shù)據(jù)量較少,如何在此情況下保證聚類算法效果是需要解決的問題。近些年在文本聚類領(lǐng)域一般從詞向量表征和聚類算法兩種角度進(jìn)行優(yōu)化。
詞向量表征方面,針對(duì)BERT 進(jìn)行微調(diào)是近些年流行方案,在中文場(chǎng)景下BERT-wwm模型引入全詞掩碼機(jī)制(whole word masking,wwm),在中文分詞后進(jìn)行掩碼;NEZHA 模型引入相對(duì)位置編碼函數(shù),混合精度訓(xùn)練等優(yōu)化方式。TSDAE模型采用AE 網(wǎng)絡(luò)架構(gòu)對(duì)輸入的文本加入噪聲,并在輸出階段進(jìn)行文本重建。在文本匹配領(lǐng)域有基于孿生網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)秀模型,Sentence-BERT 采用了BERT 做為encoder 層,通過相似樣本(正樣本)和非相似樣本(負(fù)樣本)訓(xùn)練整個(gè)模型。SimCSE 提供了有監(jiān)督和無監(jiān)督兩種訓(xùn)練方式,利用預(yù)訓(xùn)練模型中自帶的Dropout mask 作為數(shù)據(jù)增強(qiáng)的手段得到更多的Sentence Embeddings。ESimCSE 針對(duì)SimCSE 的不足提出采用Word Repetition 的方式隨機(jī)復(fù)制句子中的一些單詞來改變相似語句的句子長度,它還引入了動(dòng)量對(duì)比學(xué)習(xí)擴(kuò)展負(fù)樣本對(duì),該思路來源于CV 領(lǐng)域的Moco模型。
近些年聚類算法在深度學(xué)習(xí)領(lǐng)域有了不錯(cuò)的發(fā)展。DEC算法由兩部分組成,第一部分會(huì)預(yù)訓(xùn)練一個(gè)AE 網(wǎng)絡(luò);第二部分選取AE 模型中的Encoder 部分,加入聚類層使用KL 散度進(jìn)行訓(xùn)練聚類。DeepCluster 模型對(duì)特征進(jìn)行聚類,然后基于聚類的結(jié)果作為偽標(biāo)簽,更新網(wǎng)絡(luò)的參數(shù)預(yù)測(cè)這些偽標(biāo)簽,兩個(gè)過程依次進(jìn)行。
本文設(shè)計(jì)的投訴工單問答系統(tǒng)架構(gòu)示意圖如圖1 所示,系統(tǒng)分為3 部分。首先,針對(duì)標(biāo)注樣本不足的問題,本文設(shè)計(jì)了基于BERT-wwm 的數(shù)據(jù)增強(qiáng)算法流程;其次,擴(kuò)展后的工單數(shù)據(jù)經(jīng)過TSD-DEC 深度學(xué)習(xí)聚類算法進(jìn)行聚類。最后,將聚類后的工單沉淀入知識(shí)庫中,搭建問答系統(tǒng)支持用戶對(duì)相似工單和解決方案的查詢。此外,知識(shí)庫中聚類工單還可以應(yīng)用于其他下游應(yīng)用場(chǎng)景,如輔助新工單的類別標(biāo)注。
圖1: 整體流程架構(gòu)圖示意圖
投訴工單數(shù)據(jù)源于電信運(yùn)營商的工單系統(tǒng),人工標(biāo)注時(shí)按照投訴類別進(jìn)行。為保證后續(xù)模型效果,標(biāo)注需要在同一個(gè)類別中盡量多的標(biāo)注出相似的投訴語句。標(biāo)注后的數(shù)據(jù)結(jié)構(gòu)見表1,如“手機(jī)停機(jī)”類別中包含4 條投訴內(nèi)容,它們按照“處理意見”字段分為2 組。需要注意的是,相似的投訴內(nèi)容可能對(duì)應(yīng)不同的處理意見。
表1: 標(biāo)注數(shù)據(jù)格式
針對(duì)投訴內(nèi)容中的相似句子對(duì)進(jìn)行樣本增強(qiáng),將標(biāo)注的句子對(duì)做為正樣本,不同類別間的非相似句子對(duì)做為負(fù)樣本。
將正負(fù)樣本輸入到BERT-wwm 模型中進(jìn)行微調(diào),算法整體流程如圖2 所示。微調(diào)后的模型對(duì)非標(biāo)注的數(shù)據(jù)進(jìn)行語義表征獲得句向量。表征后的向量與標(biāo)注樣本向量進(jìn)行基于語義相似度的檢索排序。本文采用參數(shù)Top-N 來控制新標(biāo)注樣本數(shù)量。最后,將新產(chǎn)生的標(biāo)注樣本與人工標(biāo)注樣本結(jié)合成為擴(kuò)展后的樣本。
圖2: 樣本增強(qiáng)算法流程
預(yù)訓(xùn)練模型采用針對(duì)中文優(yōu)化的BERT-wwm,該模型引入了全詞Mask 機(jī)制,在全詞Mask 中,如果一個(gè)完整詞的部分WordPiece 子詞被mask,則同屬該詞的其他部分也會(huì)被mask。在BERT-wwm 模型微調(diào)時(shí),構(gòu)建輸入格式為sentence 1 與sentence 2,將正例樣本輸出類別為設(shè)為class為1,負(fù)例樣本class 為0。圖3 為BERT-wwm 微調(diào)示意圖。
圖3: BERT-wwm 示意圖
BERT-wwm 模型將輸入的每個(gè)字轉(zhuǎn)換為一維向量與段落向量和位置向量進(jìn)行相加得出輸入序列I=([CLS],se ntence1,[SEP],sentence2),再經(jīng)過編碼器處理后輸出向量T=(T,T,T,...,T,T)。此時(shí),輸出的向量T包含了sentence 1 與sentence 2 的交互信息,基于T計(jì)算其0/1 分類,公式如(1)所示。其中softmax 函數(shù)可將輸出結(jié)果映射為置信度0~1 的概率值,W∈R為隱藏層權(quán)重,b∈R為偏執(zhí)項(xiàng)。
y=softmax(TW+b) (1)
在得到微調(diào)的BERT-wwm 模型后,將未標(biāo)注的數(shù)據(jù)按順序和已標(biāo)注樣本拼接成句子對(duì)輸入到模型中進(jìn)行推理,設(shè)定最相似的Top-N 數(shù)據(jù)進(jìn)行擴(kuò)展。顯而易見,N 值越小擴(kuò)展樣本質(zhì)量越高,擴(kuò)展樣本數(shù)量則越小。最后,這些新標(biāo)記的樣本結(jié)合已有的人工標(biāo)注樣本一起做為后續(xù)聚類的訓(xùn)練樣本。
傳統(tǒng)文本聚類算法將文本表征過程與聚類過程分開計(jì)算,而深度學(xué)習(xí)聚類算法將深度網(wǎng)絡(luò)與聚類過程聯(lián)合訓(xùn)練。學(xué)習(xí)到的高質(zhì)量文本表征有助于提高聚類算法性能,聚類結(jié)果的訓(xùn)練也可以引導(dǎo)深度網(wǎng)絡(luò)學(xué)習(xí)到更好的表征。DEC 深度聚類算法采用兩個(gè)步驟進(jìn)行模型訓(xùn)練,首先構(gòu)造AE 網(wǎng)絡(luò)獲得良好的樣本向量表征,其次采用AE 網(wǎng)絡(luò)的encoder 部分結(jié)合K-Means 組成聯(lián)合網(wǎng)絡(luò)進(jìn)行聚類訓(xùn)練。網(wǎng)絡(luò)結(jié)構(gòu)如圖4 所示。
圖4: DEC 算法架構(gòu)圖
本文受TSDAE 算法啟發(fā),對(duì)AE 網(wǎng)絡(luò)進(jìn)行了改進(jìn)。TSDAE 整體網(wǎng)絡(luò)結(jié)構(gòu)采用AE 架構(gòu),在訓(xùn)練時(shí)TSDAE 對(duì)輸入的語句加入噪聲并要求Decoder 從該句子表征中重建原始句子。為了獲得良好的重建質(zhì)量,就要求在Encoder 端很好地捕獲語義。在后續(xù)推理時(shí)只使用Encoder 來編碼句子向量,這和DEC 是相同的。本文提出TSD-DEC 網(wǎng)絡(luò)結(jié)構(gòu),將兩種算法相結(jié)合,其中TSDAE 網(wǎng)絡(luò)結(jié)構(gòu)中的Encoder 與Decoder 選用上一節(jié)中微調(diào)后的BERT-wwm 模型。TSDDEC 算法架構(gòu)如圖5 所示。
圖5: TSD-DEC 算法架構(gòu)圖
在對(duì)數(shù)據(jù)文本加噪聲的過程中,本文結(jié)合工單領(lǐng)域關(guān)鍵詞字典增強(qiáng)效果。對(duì)每一種類別的工單數(shù)據(jù)采用TextRank算法提取Top-N 個(gè)關(guān)鍵詞,N 一般選擇2。通過算法初篩后的關(guān)鍵詞字典再經(jīng)過人工進(jìn)行細(xì)篩。
表4: 噪音實(shí)驗(yàn)結(jié)果
聚類后的工單數(shù)據(jù)存貯在知識(shí)庫中供下游任務(wù)的使用,本文對(duì)接知識(shí)庫搭建了工單問答系統(tǒng),命名為“智能工單機(jī)器人”,支持用戶對(duì)工單處理意見的檢索。用戶輸入投訴工單內(nèi)容,問答系統(tǒng)會(huì)在知識(shí)庫中檢索相似的N 個(gè)工單并返回它們的處理意見。本文采用Elasticsearch 7.5(ES)版本構(gòu)建知識(shí)庫,采用dense_vector 創(chuàng)建向量索引,支持查詢向量與文檔向量之間線性計(jì)算相似度并排序。創(chuàng)建dense_vector 索引部分代碼如圖6 所示。
圖6: ES 索引創(chuàng)建
本文基于K-Means 聚類結(jié)果構(gòu)建了向量檢索加速流程。首先,針對(duì)K-Means 的聚類核心點(diǎn)創(chuàng)建索引,用戶輸入的查詢語句先與若干核心點(diǎn)進(jìn)行相似度計(jì)算,這里設(shè)置參數(shù)Top-K,即檢索K 個(gè)最相似核心點(diǎn);其次,在被選中的核心點(diǎn)類別中線性計(jì)算查詢語句與每一條候選向量的相似度并排序。顯而易見,通過這種檢索方式檢索速度相比ES 本身的線性計(jì)算有了大幅提升。智能工單機(jī)器人示意圖如圖7 所示。
圖7: 智能工單機(jī)器人示意圖
圖中在二維空間展示ES 中聚類工單分布,共有3 種類別,中心的五角星代表問題向量所在位置,參數(shù)選擇K=2。圖中最相似的類別核心點(diǎn)為類別1 與類別2,查詢語句線性計(jì)算兩種類別中的所有候選語句,找出最相似的N 個(gè)工單,最終會(huì)在問答系統(tǒng)界面展示所有N 個(gè)工單的處理意見。
從原始工單表中篩選出對(duì)模型有用的字段,刪除無用字段如“采集設(shè)備”,“設(shè)備編號(hào)”等。經(jīng)過去重,濾空,刪除電話號(hào)碼等預(yù)處理操作,有效的原始投訴工單數(shù)據(jù)總量約3.2 萬條。對(duì)投訴內(nèi)容進(jìn)行文本長度的直方圖統(tǒng)計(jì),基于統(tǒng)計(jì)結(jié)果將投訴內(nèi)容過長及過短的數(shù)據(jù)進(jìn)行刪除,保留字符長度介于5 到40 之間的數(shù)據(jù),約占總數(shù)據(jù)的95%。人工標(biāo)注的數(shù)據(jù)樣本共2720 條數(shù)據(jù)分為12 個(gè)類別。在2720 條數(shù)據(jù)中,人工標(biāo)注相似句子對(duì)2028 條。工單數(shù)據(jù)集描述如表2 所示。
表2: 工單數(shù)據(jù)集描述
數(shù)據(jù)擴(kuò)展選擇BERT-wwm 的base 版本進(jìn)行微調(diào),與BERT-base 模型規(guī)模保持一致:12-layer,768-hidden,12-heads。正樣本為人工標(biāo)注的句子對(duì)2028 條,負(fù)樣本用不同類別的句子對(duì)組成5000 條。每一條標(biāo)注樣本都會(huì)和所有非標(biāo)注樣本拼接成句子對(duì)輸入到微調(diào)后的BERT-wwm 中進(jìn)行計(jì)算,得到的結(jié)果按照置信度降序排序,篩選出Top-N 條數(shù)據(jù)。新增樣本情況如表3 所示。
表3: 新增樣本
分析表格中的數(shù)據(jù)可以看到,當(dāng)N=1 時(shí),因不同的標(biāo)注樣本會(huì)匹配到相同的候選語句,原始新增樣本數(shù)量2028條經(jīng)過去重之后剩下911 條。隨著N 的增加,新增樣本增長幅度降低,原始新增樣本中重復(fù)樣本數(shù)量也開始增加。通過人工判定發(fā)現(xiàn)在N 大于2 時(shí)新增樣本中會(huì)出現(xiàn)明顯不相似的樣本,為保證新增樣本質(zhì)量,本文選擇N=2。
3.3.1 TSDAE 實(shí)驗(yàn)
本文結(jié)合關(guān)鍵詞字典以不同的方式來制造輸入數(shù)據(jù)的噪聲。其中,針對(duì)Delete 和Replace 的方式,不允許改動(dòng)關(guān)鍵詞字典中存在的詞語,如“停機(jī)”,“欠費(fèi)”等詞語。噪聲占比參數(shù)選擇0.3,池化方法選擇平均池化,評(píng)價(jià)指標(biāo)選擇斯皮爾曼等級(jí)相關(guān)系數(shù)。相關(guān)系數(shù)ρ 如公式(2)所示。
3.3.2 TSD-DEC 聚類實(shí)驗(yàn)
本文設(shè)計(jì)了5 組實(shí)驗(yàn)來驗(yàn)證算法流程的性能優(yōu)越性。首先基于所有的31840 條數(shù)據(jù)訓(xùn)練得到傳統(tǒng)的TF-IDF 模型與經(jīng)典分布式詞向量Word2Vec 模型。它們產(chǎn)生的句向量輸入到K-Means 中進(jìn)行聚類。在深度聚類算法上,原始DEC 算法做為基礎(chǔ)參照標(biāo)準(zhǔn),算法參數(shù)與算法原論文保持一致,對(duì)比沒有經(jīng)過數(shù)據(jù)增強(qiáng)的TSD-DEC 與數(shù)據(jù)增強(qiáng)的TSD-DEC算法性能。評(píng)價(jià)指標(biāo)選擇純度(Purity)與輪廓系數(shù)(Silhouette Coefficient)。聚類結(jié)果如表5 所示。
表5: 聚類實(shí)驗(yàn)結(jié)果
從表格中的實(shí)驗(yàn)結(jié)果可以看出,本文設(shè)計(jì)的TSD-DEC算法相比于原始的DEC 算法有一定的性能提升。而經(jīng)過數(shù)據(jù)增強(qiáng)后,模型的性能得到了進(jìn)一步的提升。
為測(cè)試大規(guī)模數(shù)據(jù)場(chǎng)景下的檢索響應(yīng)速度,本文采用EDA 方法擴(kuò)展工單數(shù)據(jù)到70 萬條。模擬現(xiàn)場(chǎng)實(shí)際環(huán)境搭建3 個(gè)節(jié)點(diǎn)分布式ES 集群,每個(gè)節(jié)點(diǎn)硬件配置充足(16GB 內(nèi)存,4 核i7-8700 CPU @ 3.20GHz)。問答耗時(shí)采用10 個(gè)問題的平均耗時(shí)計(jì)算。實(shí)驗(yàn)結(jié)果如表6 所示。
表6: 問答響應(yīng)時(shí)間
耗時(shí)增長基本呈現(xiàn)線性增長,但面對(duì)工單數(shù)據(jù)百萬級(jí)別數(shù)據(jù)量來說,響應(yīng)完全滿足實(shí)際應(yīng)用。
針對(duì)電信運(yùn)營商的投訴工單數(shù)據(jù),本文設(shè)計(jì)了工單數(shù)據(jù)增強(qiáng)算法與改進(jìn)的TSD-DEC 深度聚類算法。對(duì)聚類后的工單數(shù)據(jù),本文搭建了高性能的智能問答機(jī)器人,以供用戶對(duì)工單解決方案的查詢。實(shí)驗(yàn)表明,經(jīng)過數(shù)據(jù)增強(qiáng)的TSDDEC 算法相比于原有的算法性能有了明顯提升,而文本設(shè)計(jì)的智能工單機(jī)器人對(duì)用戶的查詢也可以做到快速響應(yīng)。