胡 波
中國電信股份有限公司江蘇分公司
電信運營商客戶服務(wù)熱線承擔(dān)著業(yè)務(wù)咨詢、投訴、辦理、障礙申告等職責(zé)。隨著計算機(jī)語音識別能力的提升,目前各運營商陸續(xù)開展了語音錄音文件向文本數(shù)據(jù)的轉(zhuǎn)換工作,形成了大量的客服文本信息庫,成為運營商大數(shù)據(jù)的一部分。目前,部分運營商在對客服撥打的客服電話進(jìn)行大數(shù)據(jù)分析,挖掘潛在的內(nèi)容價值,比如:發(fā)現(xiàn)熱點投訴問題、客戶業(yè)務(wù)咨詢中的商機(jī)捕獲、客戶情緒評價等。但是,目前客服信息分類是通話結(jié)束后,由客服人員人為在系統(tǒng)頁面中操作指定,主觀性和隨意性較大,從抽檢來看,準(zhǔn)確度不高。本文介紹如何利用文本分類技術(shù),實現(xiàn)對運營商客戶服務(wù)文本信息的分詞、關(guān)鍵字評價,并實現(xiàn)自動分類模型;同時引入了深度學(xué)習(xí)的相關(guān)框架,對客服文本信息進(jìn)行了分類嘗試。
近些年來,隨著大數(shù)據(jù)的相關(guān)技術(shù)發(fā)展,越來越多的非結(jié)構(gòu)化信息得到存儲和分析,文本分類是一個重要研究和實踐方向。所謂文本分類是根據(jù)文本的內(nèi)容,由計算機(jī)對未知類別的文字文檔進(jìn)行自動處理,判別它們所屬預(yù)定義類別集中的一個或多個類別。近些年來,文本分類在輿情識別、商品評價、新聞分類等方面得到了應(yīng)用。
傳統(tǒng)文本分類一般采用“詞袋”(bag-of-words)假設(shè)。所謂“詞袋”假設(shè)是在自然語言處理和信息檢索中的一種簡單假設(shè):在這種模型中,文本(段落或者文檔)被看作是無序的詞匯集合,忽略語法甚至是單詞的順序。
在“詞袋”假設(shè)下,采用“有監(jiān)督學(xué)習(xí)”的方法,主要思路是:從已打上分類標(biāo)簽的文檔中提取特征,在特征的預(yù)處理的基礎(chǔ)上,引入有監(jiān)督模型進(jìn)行特征值與分類標(biāo)簽的訓(xùn)練和模型迭代,在模型的準(zhǔn)確性滿足后投入實際的分類應(yīng)用。與英文等文字不一樣,中文的文本分類首先需要進(jìn)行“分詞”處理,在此基礎(chǔ)上再進(jìn)行特征提取等后續(xù)工作。以下是中文文本分類的一般建模過程:
圖1 基于統(tǒng)計學(xué)習(xí)的中文文本分類一般性過程
分詞是從中文自然語言句子中劃分出有獨立意義詞的過程。眾所周知,英文是以詞為單位的,詞和詞之間是靠空格隔開,而中文是以字為單位,不能天然形成“詞”。計算機(jī)進(jìn)行分詞的基礎(chǔ)是需要建立一個詞庫,將整理形成的中文詞納入到詞庫中?,F(xiàn)有的分詞算法可分為三大類:基于字符串匹配的分詞方法、基于統(tǒng)計的分詞方法和基于理解的分詞方法等。分詞技術(shù)是做中文文本分析的基礎(chǔ),應(yīng)用非常廣泛。
過高的特征維度是文本分類的一個顯著特點,因為一個不重復(fù)的分詞都可以視為一個單獨的特征。為了兼顧運算時間和分類精度兩個方面,不得不進(jìn)行特征選擇,力求在不損傷分類性能的同時達(dá)到降維的目的。常用的特征選擇方法有文檔頻率方法(DF)、信息增益方法(IG)、互信息方法(MI)、CHI方法,以及期望交叉熵、文本證據(jù)權(quán)、優(yōu)勢率等方法。
在分類算法的選擇上,目前存在各種各樣的文本分類算法,如樸素貝葉斯、文本相似度法(也稱向量空間法)、支持向量機(jī)、K-最近鄰、SVM等算法。其中樸素貝葉斯和支持向量機(jī)方法應(yīng)用比較廣泛,它們具有分類機(jī)制簡單、處理速度快的優(yōu)點。近些年來,隨著深度學(xué)習(xí)的興起,相關(guān)學(xué)習(xí)框架也陸續(xù)應(yīng)用到文本分類中。
數(shù)據(jù)挖掘中的模型評價有很多種,這里我們不考慮差異化的誤分代價,誤分情況采用混淆矩陣來刻畫,總體用“召回率”“準(zhǔn)確率”來評價模型。以下是混淆矩陣{An×n}的示意圖表示:
圖2 混淆矩陣示例
對文本分類結(jié)果,類別i 的“準(zhǔn)確率”(也稱“查準(zhǔn)率”)定義為“預(yù)測類別i的集合中,實際為類別i的比例”:類別i 的“召回率”(也稱“查全率”)定義為“實際類別i的集合中,被預(yù)測分類為類別i的比例”:模型的“整體準(zhǔn)確率”定義為“被正確分類的樣本數(shù)量占全體樣本的比例”:(N為全體驗證樣本數(shù)量)。
建模實例為某個運營商大區(qū)呼叫中心,經(jīng)智能語音識別工具識別,一段時間內(nèi)總共有83500個客服溝通文本文件,每個文件為一次語音通話的識別內(nèi)容。為了進(jìn)行文本分類學(xué)習(xí),先隨機(jī)抽取出3000個文本文件,安排人員對其內(nèi)容進(jìn)行人工識別,打上分類標(biāo)簽,作為訓(xùn)練和驗證的樣本集。分類標(biāo)簽分為以下幾類:
表1 文本樣本集中各分類情況說明
本文建模采用python(版本3.5.2)編寫腳本,中文分詞包采用jieba(版本0.18),文本挖掘采用通用挖掘工具包sckit-learn包(版本0.18.1),深度學(xué)習(xí)框架采用谷歌tensor fl ow(GPU版本1.2.0),軟件均在Windows 10環(huán)境下運行。
(1)步驟1:分詞處理
分詞之前涉及到兩個方面的工作,一個是自定義詞庫的設(shè)置,一個是停用詞的設(shè)置。自定義詞庫主要是將強化一些運營商產(chǎn)品和服務(wù)的相關(guān)術(shù)語、常用口頭語,保證分詞處理能夠被識別為詞,避免通用詞庫不能識別的風(fēng)險,或者沒有必要進(jìn)行進(jìn)一步劃分。我們在樣本生成的過程中,由業(yè)務(wù)資深人員確認(rèn)了相關(guān)術(shù)語,加載到自定義庫中,比如:“光貓”“網(wǎng)口”“翼支付”“移機(jī)費”“信用開機(jī)”“國際漫游”“10000號”“增值業(yè)務(wù)”等35個自定義分詞。
為節(jié)省存儲空間和提高搜索效率,在處理自然語言數(shù)據(jù)(或文本)之前或之后會自動過濾掉某些字或詞,這些字或詞即被稱為Stop Words(停用詞)。但是,并沒有一個明確的停用詞表能夠適用于所有的工具。因此我們根據(jù)分詞結(jié)果進(jìn)行統(tǒng)計,將出現(xiàn)頻率較高但無實際價值的分詞,加入到停用詞庫中,比如:“坐席”“為您服務(wù)”“謝謝”等。該步驟的進(jìn)一步完善與下面“步驟2”的特征提取操作結(jié)合在一起。
(2)步驟2:特征提取
基于上一步驟的分詞處理結(jié)果,我們提取出6354個特征維度(即不同分詞),我們通過文檔頻率方法(DF)進(jìn)行特征篩選,具體做法是將分詞在全部文檔中,進(jìn)行最高、最低頻率排名,通過業(yè)務(wù)甄別將頻率過多、過少,且對文檔分類價值不大的通用溝通詞語,比如“請稍等”“如果”“那么”等進(jìn)行剔除。
我們剔除了文檔頻率超過3000的分詞,大多數(shù)是通用語氣詞、過渡詞,以及文檔頻率不足10的分詞,大多數(shù)是未正確語音識別的詞語。通過篩選,最終我們將參與建模的特征值數(shù)量控制在2000左右。
為了后續(xù)模型訓(xùn)練處理,將特征信息(分詞)和文檔標(biāo)簽放置到一個矩陣中去,以下是矩陣的表現(xiàn)形式,其中wij是權(quán)重參數(shù):
圖3 文檔-特征權(quán)重表達(dá)式
wij權(quán)重的表示、計算常用以下方式:
(1)BOOL(布爾)權(quán)重,bij值為0或者1,表示特征i與文檔j是否有聯(lián)系;
(2)TF(詞頻)權(quán)重,TFij表示特征i在文檔j的出現(xiàn)次數(shù);
(3)TF-IDF(詞頻-逆文檔頻率)權(quán)重,wij=TFij×log(N/DFi),N表示文檔數(shù)量,DFi表示特征i出現(xiàn)文檔的次數(shù)。
(3)步驟3:分類建模
我們分別采用上述3種權(quán)重表達(dá)方式參與分類建模。我們采用Naive Bayes(樸素貝葉斯)、SVM(支持向量機(jī))以及DNN(深度神經(jīng)網(wǎng)絡(luò))三類算法進(jìn)行文本分類的建模。其中,樸素貝葉斯和SVM在文本分類場景中已經(jīng)得到廣泛的使用。我們嘗試采用深度學(xué)習(xí)框架應(yīng)用到本文本分類場景中。
在深度學(xué)習(xí)算法中,DBN(深度信念網(wǎng)絡(luò))應(yīng)用于文本分類中,CNN(卷積神經(jīng)網(wǎng)絡(luò))和RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))考慮到上下文因素,更多應(yīng)用到短文本/語句的分類識別,從實踐來看,很少應(yīng)用在文章長文本分類場景。DBN算法的核心是采用無監(jiān)督的算法對模型進(jìn)行預(yù)訓(xùn)練,使得預(yù)訓(xùn)練參數(shù)在正式訓(xùn)練中得到較好的收斂效果。不過,近年來GPU計算能力得到較大提升,Relu、Dropout等建模技巧對模型參數(shù)初始化要求減低。因此,這里提出采用DNN(深度神經(jīng)網(wǎng)絡(luò))作為深度學(xué)習(xí)的算法,綜合采用Relu、Dropout等學(xué)習(xí)技巧。DNN的模型結(jié)構(gòu)示意圖如下:
圖4 DNN建模示意圖
說明:第1層是特征輸入層,根據(jù)特征提取步驟的處理,輸入變量為2052個;第n層(輸出層,softmax層)節(jié)點數(shù)量為12個,即每個分類為一個輸出節(jié)點。
(4)步驟4:模型評價
3000個打好標(biāo)簽的樣本集中,隨機(jī)抽取2000個樣本參與建模,剩下1000個樣本進(jìn)行驗證,以下是建模效果比較:
表2 三種模型的建模效果
我們發(fā)現(xiàn),采用DNN網(wǎng)絡(luò)在訓(xùn)練集上的效果非常好,但在驗證樣本集上驗證有所降低。不過從驗證樣本集效果來看,DNN效果還是最優(yōu)。由于DNN模型的TF特征選取在測試集中達(dá)到了最優(yōu),我們確定采用它進(jìn)行建模迭代。為了進(jìn)一步檢查模型誤分的情況,對混淆矩陣進(jìn)行了進(jìn)一步的分析(標(biāo)號對應(yīng)含義請參考表1):
表3 基于驗證樣本集分類的混淆矩陣
針對表3的混淆矩陣分析,我們發(fā)現(xiàn)預(yù)測主要問題集中在標(biāo)號5(即“寬帶報障”類別)的誤分上。原因是部分分類占比太低,使得一些算法模型難以進(jìn)行識別,我們在數(shù)據(jù)挖掘中稱之為“薄靶”,比如運營商客戶流失的預(yù)測(流失客戶占比在2%左右)。在這種情況下,我們可以參考其它建模領(lǐng)域中的“分層抽樣”,人為加大一些標(biāo)簽的分布占比,來處理“薄靶”的數(shù)據(jù)分布。
分層抽樣采用的具體方法,就是分別從不同的分類中、采用不同的抽樣比值。我們將標(biāo)號5的抽樣比例從66%降低到22%,以提高其他分類的比例。通過分層抽樣,誤分為“標(biāo)號5”的數(shù)量大大減少,驗證樣本集的準(zhǔn)確率提升到88.3%。準(zhǔn)確率進(jìn)一步提升,模型算法的優(yōu)化是一個方向,但主要還是要依靠“語音識別成文本”準(zhǔn)確率的提升,我們發(fā)現(xiàn)目前在非標(biāo)準(zhǔn)普通話的識別中還存在較大差錯率。
結(jié)合客服的日常管理要求,我們認(rèn)為準(zhǔn)確性具有一定可用性。目前已經(jīng)在客服部門布署了該模型,每月自動分類處理180多萬文本文件,主要用來:(1)分析各個分類的趨勢,發(fā)現(xiàn)異常情況;(2)同時對人工指定不一致的通話分類進(jìn)行抽樣檢查,對話務(wù)員的錯誤分類進(jìn)行糾偏和考核,提升了質(zhì)檢效率。
我們嘗試采用機(jī)器學(xué)習(xí)算法對語音轉(zhuǎn)換文本進(jìn)行自動分類,并達(dá)到了預(yù)期效果。在建模過程中,我們在傳統(tǒng)方法的基礎(chǔ)上引入了深度學(xué)習(xí)算法,通過比較發(fā)現(xiàn)在運營商客服的溝通場景下,采用“詞頻權(quán)重(TF)”結(jié)合深度學(xué)習(xí)DNN算法是最佳算法實踐。同時進(jìn)一步針對部分小比例分類進(jìn)行分層抽樣操作,通過分層抽樣的方式,有效解決“薄靶”問題,整體達(dá)到較高的文本識別準(zhǔn)確率,滿足了對運營商客服大數(shù)據(jù)進(jìn)行分類管理的需求。