曹渝昆 趙 田
(上海電力大學計算機科學與技術學院 上海 200093)
電力工業作為國家重大的能源支撐體系,隨著經濟發展和社會生活對電能需求的不斷增長,電網的規模在不斷擴大,用戶數量也在不斷增多。這一現狀使電力系統工況變得更加復雜,電網用戶的故障報修數據量也隨之增加。傳統上,電網故障報修工單主要依靠人工進行手動分類。這種處理方式不僅效率低下,而且極易出錯,尤其是在面對海量數據時,更顯得力不從心。因此如何科學地對電網故障報修信息進行自動化分類,并采取一定策略進行優化在當前就顯得極為迫切和重要。現階段,基于電網故障報修工單信息的文本分類技術的研究少之又少。鑒于此,本文充分利用現有的電網故障報修數據資源信息,分析居民用戶的報修故障類型并進行電力系統故障類型建模,從而實現故障報修文本的自動分類,幫助電網部門更加合理地配置各種應急維修資源,縮短故障維修時間,進一步提高故障搶修效率和服務質量。
文本分類作為自然語言處理的一項重要任務,在情感分析[1]、觀點挖掘[2]、詞性標注[3]、垃圾郵件過濾[4]等多個領域均具有廣泛應用。文本分類的本質是從文本中抽取出能夠體現文本特點的關鍵特征,然后找出特征到類別之間的映射關系。傳統的文本分類技術一般基于向量空間模型。
首先利用TF-IDF、互信息、信息增益等方法構建特征工程,然后將提取的關鍵詞特征送入詞袋,最后使用K近鄰、樸素貝葉斯、支持向量機等分類器進行分類。文獻[5]提出一種基于Hubness與類加權的k最近鄰文本分類方法。文獻[6]提出一種基于情感傾向和SVM混合極的短文本分類模型。文獻[7]提出一種基于KNN和TF-IDF的改進文本分類方法。這類方法雖然比較簡單直觀,但忽略了文本中詞出現的先后順序信息。每個特征詞之間相互獨立,缺乏語義關聯度。這些傳統方法難以對詞序及上下文依賴信息進行有效編碼,并且普遍具有維度災難、特征稀疏等問題。
近年來,深度神經網絡在計算機視覺[8]和語音識別[9]等多個領域上都表現出卓越的性能。得益于神經語言模型[10-12]的提出,深度神經網絡在NLP領域取得突破性進展。并且在許多工作中,卷積神經網絡CNN和循環神經網絡RNN已被證實在文本分類方面具有強大的特征提取能力。文獻[13]使用雙向長短時記憶循環神經網絡模型進行文本情感分析。文獻[14]提出基于余弦相似度的LSTM網絡用于解決文本分類問題。文獻[15]提出了一種可變卷積的文本分類方法。文獻[16]提出一種基于CNN與詞語鄰近特征的情感分類模型。
CNN模型在文本建模和分類時,易忽略長距離依存關系中的句法結構和語義信息。RNN模型會發生梯度爆炸且易忽略局部特征信息。關于二者結合的模型結構相繼被提出。文獻[17]提出一種多層網絡H-RNN-CNN,用于處理中文文本情感分類任務。文獻[18]提出一種超深卷積神經網絡VDCNN與長短期記憶網絡LSTM相結合的混合模型。文獻[19]基于CNN和BiLSTM網絡的融合模型進行文本情感分析。文獻[20]提出一種基于卷積RNN的文本建模混合框架。以上方法雖然在一定程度上可提高分類準確率,但未能從根本上解決CNN和RNN網絡在文本分類上的缺陷問題。
考慮到電網故障報修文本信息內容簡短、特征稀疏的問題,本文提出一種改進的CNN算法,采用Attention池化和Top k池化結合的方法來替代CNN的傳統池化方法。該方法既可以凸顯出重要的卷積特征,又可以更充分地提取上下文的句法結構和語義信息。其次,在Bi-GRU中引入注意力機制的思想。注意力機制的加入能夠使Bi-GRU在計算歷史節點時根據其重要程度賦予不同的權重,使模型在保留文本特征的最有效信息的基礎上,最大限度解決信息冗余的問題,從而優化文本特征向量。本文方法可以利用Attention-BiGRU與改進的AT_CNN的融合網絡從文本時序和空間兩個層次上提取電網報修文本特征,該方法對于優化電網報修文本特征表示、提升故障分類的精度有很大幫助。
CNN通過卷積層和池化層對文本進行卷積和池化操作,從文本中提取抽象特征以及相關的語義信息,能夠很好地解決文本的處理與分類問題。本文提出改進的AT_CNN網絡,采用Attention池化和Top k池化結合的方式替代CNN傳統的池化層,可以更好地提取文本上下文特征。本文方法的具體網絡結構如圖1所示。

圖1 改進AT_CNN網絡
卷積層使用窗口大小為h的卷積核Wf∈Rh×k進行卷積操作,其中k表示詞向量的維度大小。通過卷積操作得到一個新的特征ci:
ci=f(Wf?xi:i+h-1+b)
(1)
式中:xi:i+h-1∈Rh×k表示高為h,寬為1的矩陣,xi為句子中第i個單詞的k維詞向量;b∈R是偏差項。符號?指的是點積;f表示非線性激活函數ReLU。
對長度為n的句子進行卷積,隨著窗口的滑動,作用在卷積核窗口中的單詞[x1:h,x2:h+1,…,xn-h+1:n]上,產生一個特征映射:
c=[c1,c2,…,cn-h+1]
(2)
總之,卷積層的作用是提取輸入文本的特征,通過卷積核進行卷積以獲得所需的卷積特征向量。
傳統的池化方法一般包括最大池化[21]和平均池化[22]兩種。然而,最大池化在操作時會將池化域內非最大激活值全部舍棄,從而容易導致嚴重的信息損失[23]。同樣地,平均池化取池化域內的所有激活值進行平均,高的正的激活值可能與低的負的激活值相互抵消,容易導致判別性信息的損失。因此,本文使用Attention池化和Top k池化對CNN的池化層進行了改進,可有效緩解傳統在的信息丟失問題。
首先,本文采用Attention機制來對CNN的池化策略進行改進。采用Attention機制進行池化的目的在于消除輸入數據對于輸出數據的不合理影響力,從而強調關鍵信息對于分類結果的作用。與平均池化方法相比,基于Attention的池化方法可以保留局部特征的強度信息。利用Attention池化對卷積操作得到的特征表示重新加權,通過計算不同特征的影響力權重來衡量特征的重要程度。注意力池化的計算公式如式(3)-式(6)所示。第一階段利用式(3)中的非線性激活函數tanh計算得到C的隱藏單元Ut,其中C為卷積操作得到的卷積特征向量。第二階段使用Softmax的計算方式對第一階段的隱藏單元Ut進行數值轉換得到at,其中at表示在t時刻下的輸出數據對于最終狀態的注意力概率。一方面可以進行歸一化,將原始計算值整理成所有元素權重之和為1的概率分布;另一方面也可以通過Softmax的內在機制更加突出重要元素的權重。第三階段對權重系數加權求和即可得到Attention池化的數值,如式(5)所示。最后利用全連接層得到式(6)中的特征向量pa。
Ut=tanh(UwC+bw)
(3)
(4)
(5)
pa=[pa1,pa2,…,pan]
(6)
其次,在此基礎上再進行Top k池化。Top k池化即選取每一個注意力池化層輸出的前k個最大值作為最終的輸出特征。與最大池化方法相比,基于Top k的池化策略可以保留更多重要的局部卷積特征信息。本文將k值的大小設定為2。Top k池化得到的最終特征表示用U表示,計算公式如式(7)和式(8)所示。
pti=top_k(pa)
(7)
U=[pt1,pt2,…,ptn]
(8)
本節將介紹本文所設計的用于電網報修文本分類的特征融合模型的具體流程。該設計是模塊化的,通過反向傳播獲得梯度進行優化。
實驗數據集為某省份電力公司接收到的用戶來電反饋的電網故障報修文本信息,該數據集中共有44 186條數據,其中65%的數據集用作訓練集,其余的作測試集。故障類型主要有七類,表1中分別列舉了各個類別的示例。

表1 故障報修類別示例
同時,為了驗證本文模型的有效性,我們還在標準數據集上進行了實驗,實驗所用數據集為搜狗實驗室整理的新聞數據集(Sogou CS),該數據集收集了搜狐新聞2012年6月至7月期間國內外在體育、財經、科技、社會等18個頻道的新聞數據。數據大小約2 GB,由于該數據集過于龐大,本實驗只選取了其中6個類別進行實驗。每個類別各取5 000條,其中80%作訓練集,20%作測試集。
分別對兩個數據集進行分詞,停用詞過濾以及詞向量訓練。輸入為N個可變長度的句子及其相應的標簽P,標簽由one-hot方式表示。利用Word2vec模型中的skip-gram算法將輸入文本中的每個詞語wi轉化為對應的詞向量v(wi),用矩陣S表示由詞wi組成的句子映射。v(wi)∈Rk代表矩陣S中第i個k維詞向量。
2.2.1 BiGRU網絡

zt=σ(Wz·[ht-1,xt])
(9)
(10)
rt=σ(Wi·[ht-1,xt])
(11)
(12)

本文采用雙向GRU網絡,該網絡可從前、后兩個方向全面捕捉文本語義特征,能夠在一定程度上消除傳統GRU中輸入信息的順序對于最終狀態的額外影響力。
BiGRU網絡將其上下文相關信息結合起來可以獲得隱藏層的輸出,如式(13)-式(15)所示,其中ht為雙向GRU得到的向量化表示。
(13)
(14)
(15)
2.2.2注意力機制
注意力機制一般附著在Encoder-Decoder框架之下,Encoder是對輸入句子〈x1,x2,…,xn〉進行編碼。同樣Decoder經過一定的變換后輸出數據〈y1,y2,…,yn〉。對于第i個時間步的輸出值由當前值的上下文特征Ci和之前已經生成的歷史信息〈y1,y2,…,yi-1〉共同決定。
yi=F(Ci,y1,y2,…,yi-1)
(16)
(17)
式中:hj表示編碼器在第j個時間步的隱藏狀態;n示輸入句子的長度;aij表示在j時刻,對輸出yi的注意力分配概率,使用Softmax方法計算。其計算公式如下:
(18)
(19)
式中:eij表示在第j個時間步,對第i個輸出的影響力評價分數;si-1表示解碼器前一個時間步的隱藏狀態;Va、Wa、Ua為權重矩陣。
2.2.3 Attention-BiGRU網絡
融合注意力機制后的Bi-GRU模型能夠通過計算中間狀態與最終狀態之間的相關關系得到關于注意力的概率分布。網絡結構如圖2所示。其目的在于對每一時刻下的狀態加以不同的權重,能夠在保留有效信息的基礎上,最大限度解決信息冗余的問題,通過優化文本特征向量進一步提升文本分類的精度。

圖2 基于注意力機制的BiGRU網絡
本文為了表示出故電網障報修文本中不同特征的重要性,使用注意力機制改進BiGRU網絡。計算公式如下:
Ut=tanh(Uwht+bw)
(20)
(21)
(22)
式中:Ut為ht的隱藏單元;Uw為上下文向量;at為注意力向量;S為經過注意力機制的輸出向量。Uw隨機初始化并在訓練過程中不斷學習。
本文的融合模型由改進的卷積神經網絡AT_CNN和基于注意力機制的雙向GRU網絡兩部分組成。模型結構如圖3所示,輸入為訓練好的詞向量矩陣,其中行表示句子的長度,列表示詞向量的維度。首先,AT_CNN網絡通過卷積層,進行卷積操作,提取句子的局部特征。然后進行池化操作,以提取文本中的關鍵特征,得到特征向量。本文主要利用Attention池化對卷積操作得到的特征表示重新加權,通過計算不同特征的影響力權重來衡量特征的重要程度。進一步地,利用Top k池化對Attention池化提取的特征進行處理,選取每一個注意力池化層輸出的前k個最大值作為最終的輸出特征。

圖3 融合模型結構
第二部分是基于注意力機制的雙向GRU網絡, 同樣地,輸入為訓練好的詞向量矩陣。該網絡可從前、后兩個方向全面提取文本特征,并結合前、后兩個方向的相關信息作為隱藏層的輸出。利用雙向GRU可以提取文本中句子的全局特征。在此基礎上,融合了注意力機制的Bi-GRU模型能夠通過計算注意力權重突出保留文本中的重要信息。
本文使用TensorFlow框架中的concat()方法對以上兩個網絡提取的文本特征進行融合,代碼如下:
self.output=tf.layers.dense(tf.concat([self.cnn_logits,self.bgru_logits],axis=1),self.config.num_classes)
利用self.output保存融合特征,并輸入到全連接層中。另外本文采用shuffle操作打亂詞序和隨機drop的方法防止模型過擬合。最后輸入到Softmax 分類器輸出分類結果。
Y=Softmax(WcS1+b)
(23)
式中:Wc和b為待訓練的參數;S1表示由Attention-BiGRU網絡輸出的文本特征。
另外,本文采用交叉熵作為損失函數,定義如下:
(24)

本文使用Word2vec預訓練詞向量,每個詞向量的維度大小設置為100維。句子最大長度設置為600,大于該值時,對句子進行截斷操作;小于該值時,對句子進行補零操作。初始化學習率為5e-4。在模型訓練階段,使用Adam優化算法更新規則。AT_CNN網絡中卷積核數量為256,卷積核尺寸大小為5,隱藏層節點數為128。Attention-BiGRU網絡中Bi-GRU的隱藏層節點數為256,Attention 層的維度為100。模型訓練批量大小設置為32。
現有的評價文本分類方法主要是通過模型對文本標簽預測正確情況來判斷。本文采用準確率(P)作為模型的衡量指標。
(25)
式中:TP表示被正確地劃分為正例的個數;FP表示被錯誤地劃分為正例的個數。
3.3.1 AT_CNN的對比實驗
為了驗證本文模型的有效性,分別在標準數據集上對傳統的CNN網絡、基于Attention池化的CNN網絡、本文提出的改進的AT_CNN網絡進行了比較,分類結果如圖4和圖5所示。

圖4 各模型準確率對比

圖5 各模型損失率對比
從圖4中可以看出,改進CNN網絡的文本分類準確率均高于CNN和CNN-attention。同樣地,在圖5中,改進的AT_CNN網絡大大降低了文本分類的損失率。迭代次數為1 000次時,損失率比CNN降低了約0.47;迭代次數為2 000次時,損失率比CNN降低了約0.13。
實驗結果不僅驗證了通過改進池化層來提高分類效果這一想法的正確性,而且證明利用Attention池化和Top k池化兩種池化方式結合的方法可有效降低損失,提高模型分類準確率。
3.3.2基于AT_CNN與Attention-BiGRU融合網絡的對比實驗
本文將提出的融合模型與其他算法進行對比,結果如表2所示。可以看出,本文模型分類在標準數據集上的分類準確率優于單CNN、單 BiGRU模型。此外本文還與傳統機器學習模型SVM及其他深度學習模型進行了比較,結果表明本文模型在分類準確率上均優于其他對比模型,顯著地提升了文本分類的準確率。

表2 模型準確率對比(Sogou CS)
3.3.3基于AT_CNN與Attention-BiGRU融合網絡的電網用戶故障報修類型分類
利用本文提出的模型對電網故障報修工單信息進行建模,分類結果如表3所示。可以看出,本文模型在電網用戶故障報修數據上的分類準確率大大提高,可達到95.71%。

表3 模型準確率對比(電網故障報修數據)
此外,通過設置不同的迭代次數記錄了BiGRU、CNN、CNN-BiGRU和本文模型在電網故障報修數據上的分類準確率變化情況,如圖6所示。結果表明各模型的分類準確率隨著迭代次數的增加而增加,并且在不同的迭代次數下,本文融合模型的分類準確率均高于其他三種模型。該實驗證明本文模型在解決電網故障報修文本數據的特征提取與特征建模方面相較其他模型具有更強的學習能力,在文本分類方面展示出的性能更加優良。

圖6 不同迭代次數對分類結果的影響
基于電網大數據的背景,為實現電網故障報修數據的自動分類,本文提出一種基于AT_CNN與Attention-BiGRU融合網絡的文本分類方法。利用該方法可解決傳統模型提取特征不足的缺陷,從文本時序和空間兩個層次上提取特征,進一步優化文本特征表示,提升文本分類的精度。基于本文模型,分別在標準數據集和電網故障報修工單數據集上進行實驗,結果證明本文對電網部門更加合理地配置維修資源,縮短故障維修時間,進一步提升故障搶修效率具有很大的借鑒意義。