曹 湘 李譽(yù)坤 錢 葉 閆晨陽 楊忠光
(上海電力大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 上海 200090)
如今,短文本分類是自動(dòng)為預(yù)先定義的類別賦予用自然語言編寫的文檔的任務(wù)。已經(jīng)研究了幾種類型的文本分類,其中每種處理不同類型的文檔和類別。隨著社交媒體的普及,短文本分類已成為許多應(yīng)用中的重要組成部分,例如用于檢測(cè)討論主題的主題分類,信息過濾和情感分類以確定產(chǎn)品或電影評(píng)論中典型的情感。宋[1]等人表示短文本長度不應(yīng)超過200個(gè)字符,陳[2]等人也證實(shí)了這一點(diǎn),短文應(yīng)該在150字左右。這也得到了另一項(xiàng)研究中的支持[3],聲稱短文的平均長度大約為100字~249字。投訴文本也是短文本分類的經(jīng)典問題。隨著中國經(jīng)濟(jì)的不斷發(fā)展,電力需求正在逐步增強(qiáng)。國家電網(wǎng)作為基本的社會(huì)企業(yè)之一,應(yīng)該改善其電力服務(wù)。因此,它已引起許多研究人員的相當(dāng)大的關(guān)注。
由于投訴文本量大,提取有用信息困難,國網(wǎng)實(shí)現(xiàn)文本自動(dòng)分類顯得尤為重要。與一般中文短文的特點(diǎn)相比,電力投訴文本具有以下特點(diǎn):
1)文本涉及電力領(lǐng)域,其中包含大量的電氣專業(yè)詞匯。
2)文本的特征不明顯,需要更多的邊際信息進(jìn)行分析。
3)文字混合了太多的符號(hào)和數(shù)字。
然而,在處理較短的文本消息時(shí),傳統(tǒng)技術(shù)的表現(xiàn)將不如他們?cè)谳^大的文本上執(zhí)行的那么好。這符合我們的直覺,因?yàn)檫@些技術(shù)依賴于詞頻。由于單詞出現(xiàn)太小,他們對(duì)文本本身沒有足夠的了解。卷積神經(jīng)網(wǎng)絡(luò)(CNN)[4]是計(jì)算機(jī)視覺領(lǐng)域的著名工具。最近,CNN被應(yīng)用于自然語言處理(NLP)的問題[5~6]。然而,所有的CNN模型都是基于數(shù)據(jù)集的,這些數(shù)據(jù)集具有明顯的文本特征和長的文本長度。對(duì)于我們遇到的投訴案例,傳統(tǒng)的CNN模式并沒有取得良好的表現(xiàn),與此同時(shí),當(dāng)我們打算使用CNN方法處理電力投訴文本時(shí)遇到一些障礙:
1)稀疏特征:機(jī)器學(xué)習(xí)的方法是根據(jù)特征進(jìn)行分類或預(yù)測(cè),并在文本分析中構(gòu)建各種特征以匹配相應(yīng)的特征。
2)困難的特征表示:句子建模的目的是將句子表示為諸如文本分類之類的任務(wù)的有意義的特征。文本越短越簡(jiǎn)單,特征表示越難。
為了解決上述問題,我們提出了基于LSTM[7]和CNN的混合神經(jīng)方法,它包含了LSTM神經(jīng)網(wǎng)絡(luò)的遞歸思想來表示句子中時(shí)序規(guī)律,學(xué)習(xí)句子中的句法及語義特征;CNN卷積神經(jīng)網(wǎng)絡(luò)可通過卷積操作,挖掘到文本的更深層次的特征。
同時(shí),我們?cè)跀?shù)據(jù)處理方面做了幾項(xiàng)創(chuàng)新,以加速模型訓(xùn)練[8~11]。 我們的工作如下:
1)特征提取:我們對(duì)合并模型進(jìn)行了創(chuàng)新,以滿足短文本分類的需要,并使特征提取變得容易。
2)減少維數(shù):在本文中,使用單向矢量,PCA降維,詞匯詞典和匹配向量id,以避免額外的計(jì)算。
3)邊緣特征流:為了增加邊緣特征的轉(zhuǎn)移,首次提出將LSTM與CNN結(jié)合的新體系結(jié)構(gòu)。
我們將所提出的模型應(yīng)用于短文本分類任務(wù),并在各種基準(zhǔn)測(cè)試中取得了優(yōu)異的性能。
對(duì)于我們遇到的投訴案例,傳統(tǒng)的CNN模式并沒有RNN具有循環(huán)的網(wǎng)絡(luò)結(jié)構(gòu),具備保持信息的能力。RNN中的循環(huán)網(wǎng)絡(luò)模塊將信息從網(wǎng)絡(luò)的上一層傳輸?shù)较乱粚?,網(wǎng)絡(luò)模塊的隱含層每個(gè)時(shí)刻的輸出都依賴于以往時(shí)刻的信息。RNN的鏈?zhǔn)綄傩员砻髌渑c序列標(biāo)注問題存在著緊密的聯(lián)系,目前已被應(yīng)用到文本分類和機(jī)器翻譯等NLP任務(wù)中。在RNN的訓(xùn)練中,存在梯度爆炸和消失的問題,且RNN難以保持較長時(shí)間的記憶。
LSTM網(wǎng)絡(luò)是RNN的擴(kuò)展,專門設(shè)計(jì)用來避免長期依賴問題。LSTM的重復(fù)神經(jīng)網(wǎng)絡(luò)模塊具有不同的結(jié)構(gòu),這與樸素RNN不同,存在四個(gè)以特殊方式相互影響的神經(jīng)網(wǎng)絡(luò)層,網(wǎng)絡(luò)模塊示意圖如圖1所示。LSTM在NLP中的應(yīng)用實(shí)在太廣泛了[12~14],在 Machine Translation,Text Classification,QA等領(lǐng)域都有著成熟的應(yīng)用,具體通過對(duì)RNN的結(jié)構(gòu)進(jìn)行改進(jìn),加入Memory Cell與三個(gè)門控單元,對(duì)歷史信息進(jìn)行有效的控制。而不是像RNN一樣每次都將前一時(shí)刻的hidden state完全洗掉,從而增強(qiáng)了其處理長文本序列的能力,也解決了vanishing gradient的問題。
如圖1所示,LSTM網(wǎng)絡(luò)具有輸入門(input gates)、忘記門(forget gates)和輸出門(output gates)等三種門結(jié)構(gòu),用以保持和更新細(xì)胞狀態(tài)。
圖1 LSTM神經(jīng)網(wǎng)絡(luò)單元圖
1)從細(xì)胞狀態(tài)中忘記信息,由忘記門的Sigmoid層決定,以當(dāng)前層的輸入xt和上一層的輸出ht-1作為輸入,在t-1時(shí)刻的細(xì)胞狀態(tài)輸出為
2)在細(xì)胞狀態(tài)中存儲(chǔ)信息,主要由兩部分組成:輸入門的Sigmoid層的結(jié)果it作為將更新的信息;由tanh層新創(chuàng)建的向量ct,將添加在細(xì)胞狀態(tài)中。將舊的細(xì)胞狀態(tài)ct-1乘以 ft,用以遺忘信息,與新的候選信息it·的和,生成細(xì)胞狀態(tài)的更新。
3)輸出信息,由輸出門決定。先使用Sigmoid層來決定要輸出細(xì)胞狀態(tài)的部分信息,接著用tanh處理細(xì)胞狀態(tài),兩部分信息的乘積得到輸出的值。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一種前饋神經(jīng)網(wǎng)絡(luò),它的人工神經(jīng)元可以響應(yīng)一部分覆蓋范圍內(nèi)的周圍單元,對(duì)于大型圖像處理有出色表現(xiàn)。它包括卷積層(convolutional layer)和池化層(pooling layer)。
本文運(yùn)用LSTM神經(jīng)網(wǎng)絡(luò)與CNN神經(jīng)網(wǎng)絡(luò)結(jié)合,其中,卷積窗口的大小設(shè)置對(duì)最終的分類結(jié)果影響較大,借鑒N-gram語言模型的思想[15~17],通過提取相鄰n個(gè)詞進(jìn)行局部特征的提取,從而捕捉上下文搭配詞語的語義信息,對(duì)整個(gè)文本的語義進(jìn)行表示。根據(jù)這種思想,將卷積窗口大小設(shè)置為n*m,n為窗口內(nèi)詞的個(gè)數(shù),m為詞向量維度。
同時(shí)使用多個(gè)卷積核生成特征映射,再進(jìn)行最大池化操作,最后使用Softmax進(jìn)行分類。
圖2 卷積神經(jīng)網(wǎng)絡(luò)原理圖
在文本表示階段,與傳統(tǒng)的文本分類模型不同,基于混合深度神經(jīng)網(wǎng)絡(luò)的文本分類模型采用分布式表示,即以詞為單位進(jìn)行文本表示形成詞向量,再將詞向量按照詞在句子中出現(xiàn)的順序進(jìn)行拼接,形成代表句子的矩陣。在詞表示的過程中,可以學(xué)習(xí)到詞之間的語義相關(guān)性,同時(shí)詞向量的拼接也考慮了句子中詞出現(xiàn)的順序。在分類階段,由于混合深度神經(jīng)網(wǎng)絡(luò)屬于深度學(xué)習(xí)模型,因此可以在詞向量的基礎(chǔ)上,實(shí)現(xiàn)句子特征的自動(dòng)提取和學(xué)習(xí),從而減少了對(duì)人工特征選取的依賴性,也優(yōu)化了特征選取的效果。
針對(duì)電力投訴短文本的特點(diǎn),文本預(yù)處理包括分詞和去停用詞。中文文本不同于英文文本,詞與詞之間沒有空格的自然分界因此在文本表示之前需要對(duì)中文文本進(jìn)行分詞。鑒于數(shù)據(jù)語料庫,我們首先得到它的詞匯詞典并在語料庫上訓(xùn)練一個(gè)熱點(diǎn)。作為單熱的輸出,矢量id然后用于計(jì)算與詞匯id的相關(guān)性。對(duì)于詞匯表中的每個(gè)唯一單詞,首先得到它的詞匯詞典并在語料庫上訓(xùn)練一個(gè)熱點(diǎn)。作為單熱的輸出,矢量id然后用于計(jì)算與詞匯id的相關(guān)性。對(duì)于詞匯表中的每個(gè)唯一單詞,找出最相似的id,隨后的PCA維度減少被執(zhí)行作為連續(xù)Skip-gram的輸入。最后,得到了嵌入這個(gè)詞。這里是對(duì)數(shù)據(jù)預(yù)處理中兩個(gè)重要步驟的描述:
1)建立詞匯詞典:建立詞匯詞典的主要目的是減少數(shù)據(jù)訓(xùn)練的時(shí)間。它通過調(diào)用訓(xùn)練有素的單詞來減少記憶足跡。該操作對(duì)后一類的影響起著決定性的作用。
2)計(jì)算相關(guān)性:通過使用單詞向量對(duì)應(yīng)的id來匹配字典中的單詞向量,然后計(jì)算相關(guān)性,最高的相似性被識(shí)別為連續(xù)skip-gram的輸入。
分布式表示由Hinton提出[18],其表示方法基于“詞的語義由其鄰近詞刻畫”的假說[19]。據(jù)此,可運(yùn)用分布式詞向量對(duì)詞進(jìn)行表示。首先,參考Bengio等的神經(jīng)網(wǎng)絡(luò)語言模型(NNLM)[20~21],以大量經(jīng)過預(yù)處理的電力投訴文本為語料庫,訓(xùn)練出每個(gè)詞的詞向量表示,詞向量的各個(gè)維度代表通過NNLM學(xué)習(xí)到的詞的語義特征。以維度為3的詞向量為例,將部分投訴文本的詞向量在特征空間中進(jìn)行表示。
首先通過Embedding Layer將單詞轉(zhuǎn)化為詞向量,再輸入LSTM進(jìn)行語義特征提取,由于原始語料處理時(shí)進(jìn)行了padding的操作,所以在LSTM輸出時(shí)乘以MASK矩陣來減小padding所帶來的影響。下一步將LSTM的輸出作為CNN的輸入,進(jìn)行進(jìn)一步的特征提取。最后得到分類結(jié)果。
利用前向和后向RNN得到每個(gè)詞的前向和后向上下文的表示:
這樣詞的表示就變成詞向量和前向后向上下文向量連接起來的形式了,即:
最后再接跟TextCNN相同卷積層,pooling層即可,唯一不同的是卷積層filter_size=1就可以了,不再需要更大filter_size獲得更大視野,這里詞的表示也可以只用雙向RNN輸出。
整個(gè)模型的結(jié)構(gòu)如圖3所示。
圖3 混合深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
為研究本文構(gòu)建的電力投訴短文本分類模型對(duì)電力投訴短文本的分類效果,以電力投訴短文本為例進(jìn)行實(shí)驗(yàn),選取某電網(wǎng)公司2016年的16000條電力投訴文本記錄數(shù)據(jù)。進(jìn)行文本分類任務(wù)的訓(xùn)練和測(cè)試時(shí),將所有16000條投訴電力數(shù)據(jù)隨機(jī)排列后,平均劃分為4份,每份包含4000條數(shù)據(jù)。輪流將其中3份數(shù)據(jù)作為訓(xùn)練集,1份數(shù)據(jù)作為測(cè)試集,進(jìn)行4倍交叉驗(yàn)證。
在對(duì)比文本分類模型的分類效果時(shí),引入“錯(cuò)誤率”指標(biāo)反映文本分類出現(xiàn)錯(cuò)誤的情況,即:
在實(shí)際應(yīng)用中,訓(xùn)練集句向量、詞向量以及分類器的訓(xùn)練,均可以提前離線完成并對(duì)模型參數(shù)進(jìn)行保存,測(cè)試時(shí)直接使用即可,無需重復(fù)訓(xùn)練,故在線計(jì)算時(shí)間僅為測(cè)試時(shí)間。因此,分別對(duì)4次交叉驗(yàn)證的訓(xùn)練耗時(shí)和測(cè)試耗時(shí)取平均值,得到“訓(xùn)練耗時(shí)”和“測(cè)試耗時(shí)”指標(biāo),以比較不同分類模型的離線計(jì)算和在線計(jì)算效率。在測(cè)試各個(gè)模型的計(jì)算效率時(shí),本文實(shí)驗(yàn)的環(huán)境是ThinkServer TD350服務(wù)器,主要參數(shù)CPU:E5-2603v3 1.6GHz,內(nèi)存為16G,GPU卡:Nvidia GTX1080。操作系統(tǒng)為ubuntu 16.04,64bit。
根據(jù)電力投訴文本分類數(shù)量,分為以下七種:表揚(yáng),服務(wù)申請(qǐng),故障報(bào)修,信息查詢,業(yè)務(wù)咨詢,意見,綜合業(yè)務(wù)。為驗(yàn)證該模型針對(duì)于電力投訴短文本分類特點(diǎn),對(duì)混合神經(jīng)網(wǎng)絡(luò)模型進(jìn)行的結(jié)構(gòu)參數(shù)改進(jìn)的效果,本文分別考慮詞向量生成方法、詞向量微調(diào)方法、各組別的窗口尺寸這3個(gè)主要因素,設(shè)置了3個(gè)基于卷積神經(jīng)網(wǎng)絡(luò)的對(duì)照模型,與所構(gòu)建的文本分類模型進(jìn)行對(duì)比,具體網(wǎng)絡(luò)參數(shù)設(shè)置如表1所示。
表1 混合神經(jīng)網(wǎng)絡(luò)模型和對(duì)比模型參數(shù)設(shè)置
表2是混合神經(jīng)網(wǎng)絡(luò)文本分類模型分類結(jié)果統(tǒng)計(jì)。
表2 模型分類結(jié)果統(tǒng)計(jì)混
本文構(gòu)建的混合神經(jīng)網(wǎng)絡(luò)分類模型的錯(cuò)誤率低至3.95%,而傳統(tǒng)分類模型錯(cuò)誤率最低6.99%,是本文模型的1.8倍;另外,本文構(gòu)建的分類模型計(jì)算耗時(shí)比其他對(duì)比分類模型稍長,一方面是由于在詞表示階段要通過迭代方法學(xué)習(xí)詞的語義特征,而傳統(tǒng)分類模型只需進(jìn)行簡(jiǎn)單統(tǒng)計(jì);另一方面是由于混合神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)比傳統(tǒng)模型復(fù)雜,訓(xùn)練參數(shù)較多,因此計(jì)算過程耗時(shí)較多。但實(shí)際應(yīng)用中訓(xùn)練耗時(shí)均為離線計(jì)算耗時(shí),在線計(jì)算耗時(shí)僅包括測(cè)試耗時(shí),從表2可以看出,4000條測(cè)試文本的分類耗時(shí)可控制在1s以內(nèi),已顯著高于人工分類的效率,在實(shí)際電力投訴短文本分類中具有可行性與實(shí)用性。
圖4是混合深度神經(jīng)網(wǎng)絡(luò)模型隨著訓(xùn)練集的增加,準(zhǔn)確率的變化圖,由圖4可知本文模型在數(shù)據(jù)量較大情況,準(zhǔn)確率優(yōu)于傳統(tǒng)的文本分類模型,分類準(zhǔn)確率大致在95.96%左右。
圖4 模型準(zhǔn)確度隨訓(xùn)練集大小變化
在電力投訴短文本處理中引入混合深度神經(jīng)網(wǎng)絡(luò)模型,并以錯(cuò)誤率和分類效率為指標(biāo),將混合深度神經(jīng)網(wǎng)絡(luò)文本分類模型與傳統(tǒng)機(jī)器學(xué)習(xí)文本分類模型進(jìn)行了全面的對(duì)比,為電力系統(tǒng)其他中文文本的數(shù)據(jù)挖掘研究提供了一個(gè)新的方法和思路。
以混合深度神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),結(jié)合電力投訴短文本專業(yè)性強(qiáng)、長度差異大、混雜文字和數(shù)字和數(shù)據(jù)量大等特點(diǎn),針對(duì)性地構(gòu)建了混合深度神經(jīng)網(wǎng)絡(luò)文本分類模型,并通過算例展示了本文的模型在分類精度上的顯著優(yōu)勢(shì)和分類效率上的可行性,為提高機(jī)器學(xué)習(xí)的電力文本分類效果提供了有效的手段。
除了將混合深度神經(jīng)網(wǎng)絡(luò)模型應(yīng)用于電力投訴短文本分類之外,如能將其與數(shù)據(jù)融合、知識(shí)推理等技術(shù)相結(jié)合,將在投訴文本處理中得到更多應(yīng)用,進(jìn)而促進(jìn)電網(wǎng)的智能化發(fā)展。