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