任瑩
(昆明能訊科技有限責(zé)任公司,昆明 650217)
電網(wǎng)企業(yè)業(yè)務(wù)復(fù)雜,企業(yè)生產(chǎn)經(jīng)營中有大量的半結(jié)構(gòu)、非結(jié)構(gòu)化的文本數(shù)據(jù),電網(wǎng)企業(yè)生產(chǎn)經(jīng)營過程中有大量的文本數(shù)據(jù),涉及到電子、化學(xué)、機械、信息等多種專業(yè)領(lǐng)域,例如電力中的檢修報告中包含了專業(yè)設(shè)備有關(guān)機械、化學(xué)、物理、電子等多個專業(yè)領(lǐng)域,涉及到多種專業(yè)的知識。此類文本數(shù)據(jù)屬于低密度價值數(shù)據(jù),存在數(shù)據(jù)量大、結(jié)構(gòu)復(fù)雜、缺乏規(guī)范等特點,是目前數(shù)據(jù)分析和挖掘的難點區(qū)域之一。
電力客服95598 工單就屬于這種典型數(shù)據(jù),這類文本數(shù)據(jù)中主要采用口語化的描述形式,記錄了大量的電力業(yè)務(wù)特性,但同時文本中也包含了很多電力專業(yè)術(shù)語,這類文本數(shù)據(jù)的格式不統(tǒng)一,內(nèi)容差異較大,目前主要通過坐席人員的判斷對工單內(nèi)容進行處理和分類,由于依靠人工的經(jīng)驗,導(dǎo)致處理及時性較低,分類規(guī)則不一致,不能有效發(fā)現(xiàn)客戶的真實訴求。因此急需一種有效的文本數(shù)據(jù)挖掘方法,能夠自動對工單進行自動分類,并進一步挖掘客戶的潛在訴求,對營銷客服水平的提升具有重要的意義。
人工智能、文本挖掘技術(shù)逐漸被應(yīng)用到電力的各種場景中,馬潤澤[1]等采用基于KNN算法對缺陷文本進行歸類計算,構(gòu)建斷路器狀態(tài)綜合評價模型。劉興平[2]等通過引人LDA 主題生成模型,結(jié)合工單內(nèi)容構(gòu)建工單文本挖掘模型對工單進行篩選、判斷和歸類。鄒云峰[3]等通過建立95598 工單自動分類模型,實現(xiàn)工單快速分類,挖掘其中的重要信息,為分析用戶的訴求提供依據(jù)??傮w而言,目前對于電力文本數(shù)據(jù)的研究大多基于傳統(tǒng)機器學(xué)習(xí)分類模型,由于缺乏大量的電力業(yè)務(wù)樣本數(shù)據(jù),電力文本分類的準確性都不高,適用范圍較窄。
本文針對電力客服工單數(shù)據(jù)的特點,圍繞自然語言處理應(yīng)用中的關(guān)鍵技術(shù)和核心算法[4],利用預(yù)訓(xùn)練BERT 模型分析工單文本內(nèi)容,挖掘工單內(nèi)容上下文規(guī)則,將通過大量中文預(yù)訓(xùn)練的模型進行二次訓(xùn)練,減少電力訓(xùn)練樣本數(shù)量,提高工單自動分類的準確性,為自然語言預(yù)訓(xùn)練模型在電力行業(yè)中的應(yīng)用實踐提供參考建議。
自然語言處理是當今大數(shù)據(jù)、人工智能重點關(guān)注的關(guān)鍵技術(shù)之一,主要的研究內(nèi)容有詞法分析、語法分析、文本分類、語言翻譯等。目前在互聯(lián)網(wǎng)領(lǐng)域,如國外的谷歌、臉書、亞馬遜,國內(nèi)的百度、阿里、騰訊等公司都把自然語言處理作為重點研究內(nèi)容,在用戶意圖分析、情緒判定、廣告推送、機器翻譯等方面均取得了很好的應(yīng)用效果。
文本挖掘的理論研究方面,主要研究方向有文本結(jié)構(gòu)分析、文本語義分析、文本摘要分析、文本自動分類、文本多語言翻譯等。文本挖掘的應(yīng)用方面,研究成果和應(yīng)用都比較成熟,文本挖掘已成熟應(yīng)用微博熱點話題監(jiān)測[5]、情感分析[6]、用戶評論語義分析[7]、垃圾郵件分類等應(yīng)用場景中。
所謂的工單分類,既是對工單文本內(nèi)容進行挖掘分析,借助人工智能、自然語言處理技術(shù),在文本中找出字、詞、句的特征、上下文關(guān)系、變化規(guī)律等,理解文本內(nèi)容的目的、意義及要素,對文本進行分類,實現(xiàn)工單的自動分類。
工單的情感分析是指通過對文本中的服務(wù)、產(chǎn)品、對象等內(nèi)容進行歸類,對文本中的人物、事件、評價等內(nèi)容進行歸類,采用情感分類策略,對該文本的意見與該對象的喜好態(tài)度進行關(guān)聯(lián)挖掘分析,從而得到工單文本的情緒分類。工單的情緒分類在電力應(yīng)用中比較典型的場景是對95598 客服工單內(nèi)容,結(jié)合文本情感分析與文本分類技術(shù),將建議、投訴類工單優(yōu)先級進行類型劃分,其中優(yōu)先級較高的工單應(yīng)當進行優(yōu)先處理。
文本聚類作為自然語言處理技術(shù)中的一個重要技術(shù),在文本挖掘技術(shù)的領(lǐng)域占據(jù)了不可代替的地位,由于不需要手工標記的樣本數(shù)據(jù),不需要人工處理文檔內(nèi)容,實現(xiàn)的代價較小,能夠快速應(yīng)用到各類場景,特別是對于像電力這類行業(yè),普遍存在樣本少、數(shù)據(jù)量大的特點,采用文本聚類可以作為對文本數(shù)據(jù)分類的預(yù)處理技術(shù)。
對于電力客服工單的分類,由于客戶的訴求不斷在改變,應(yīng)對此類變化的最好方式就是采用文本聚類技術(shù),可實時對所有工單進行分析,將同類工單進行歸并,輔助下一步的文本挖掘分析。
工單分類算法模型的構(gòu)建過程即通過相關(guān)算法,根據(jù)文本處理后的樣本數(shù)據(jù)進行訓(xùn)練生成分類模型,并利用該分類模型對新的工單文本數(shù)據(jù)進行自動分類,常見的文本自動分類算法包括條件隨機場、梯度提升決策樹、卷積神經(jīng)網(wǎng)絡(luò)算法等。
中文句子中的每個詞語之間無類似英文空格類的天然的分隔符,開展中文文本的挖掘分析,中文分詞是開展文本挖掘的基礎(chǔ)工作,自動分詞是建立文本表示模型的首要問題。常用的分詞算法有最大匹配算法、HMM、CRF 等[8]。其中CRF 算法適應(yīng)性更好、準確度更高,是目前比較成熟的分詞算法。
條件隨機場CRF(Conditional random f ield)分詞算法是一種基于概率圖模型的標注算法,是馬爾科夫隨機場的條件概率約束的一種特殊情況。如果存在隨機變量X、Y,其中隨機變量Y 構(gòu)成了一個無向圖G=(V,E) 表示的馬爾科夫隨機場,即:
對任意節(jié)點γ成立,則稱條件概率分布P(Y|X) 為條件隨機場。式中“ω-γ”表示在圖G=(V,E)中與節(jié)點v 有邊連接的所有節(jié)點w,“γ~”表示節(jié)點v 外的所有節(jié)點,YV和YW為節(jié)點v、w 對應(yīng)的隨機變量。
CRF 分詞中所采用的條件隨機場是馬爾科夫隨機場的一種特例,是一種X、Y 具有相同圖結(jié)構(gòu)的線性鏈條件隨機場(linear chain conditional random field)。
設(shè)X={X1,X2,X3,…,Xn}、Y={Y1,Y2,Y3,…,Yn}均為線性鏈表示的隨機變量序列,在給定隨機變量序列X 的條件下,隨機變量序列Y 的條件概率P(Y|X)構(gòu)成了隨機場,i代表序列位置,n代表了序列的長度,即:
在中文分詞標注處理中,X 表示著等待處理的輸入序列,Y 表示著輸出的標記序列。通過對電力文本訓(xùn)練語料的學(xué)習(xí),可得出分詞的隨機場模型的參數(shù),從而得到分詞訓(xùn)練模型。
梯度提升決策樹GBDT 算法是機器學(xué)習(xí)中應(yīng)用較廣泛的一類算法,它是基于決策樹的一類分類算法[9],GBDT 對于分類樹的每一次的計算是為了減少上一次的殘差,在殘差減少的梯度方向上建立一個新的模型,從而實現(xiàn)殘差的消除,設(shè)F(x,P) 是分類函數(shù),P 是參數(shù)集,將加法函數(shù)延伸成如下格式:
上式中的h(x;αm)是基函數(shù),h(x;αm)是對輸入變量x 的單參數(shù)化函數(shù),其中α={α1,α2,α3,…,αn},對于上式(1)中的兩個參數(shù)求解,可通過優(yōu)化損失函數(shù){βm,αm}來求解,計算公式如下:
針對以上損失函數(shù)的求解,可利用Greedy Stagew ise 方法,結(jié)果如下:
最后得到最終分類函數(shù):
目前深度學(xué)習(xí)已成為人工智能在行業(yè)應(yīng)用中的主流算法,其中的卷積神經(jīng)網(wǎng)絡(luò)模型是典型代表,它由Lecun 在1989 年提出[10],卷積神經(jīng)網(wǎng)絡(luò)CNN 模型如圖1 所示,模型是具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò),在神經(jīng)網(wǎng)絡(luò)的至少有一層使用卷積計算層代替一般矩陣乘法網(wǎng)絡(luò)層。卷積神經(jīng)網(wǎng)絡(luò)具有表征學(xué)習(xí)、局部感知、權(quán)值共享等特點,這樣可極大減少訓(xùn)練參數(shù)的數(shù)目,提高網(wǎng)絡(luò)計算效率,近年被廣泛應(yīng)用到計算機視覺、自然語言處理等領(lǐng)域。
圖1 卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)圖
卷積神經(jīng)網(wǎng)絡(luò)CNN 由很多層組成,輸入層可以處理多維數(shù)據(jù),其后包含卷積層、池化層和全連接層,其中輸出層的上游通常是全連接層,其結(jié)構(gòu)和原理與前饋神經(jīng)網(wǎng)絡(luò)的輸出層相同,模型各層的結(jié)構(gòu)如下:
輸入層(Input layer):輸入層接收多維數(shù)組,用梯度下降算法進行學(xué)習(xí),一般輸入特征需要進行標準化處理。
卷積層(Convolutional layer):卷積層包含多個卷積核,其結(jié)構(gòu)類似于一個前饋神經(jīng)網(wǎng)絡(luò)的神經(jīng)元,每個卷積核的參數(shù)都是通過反向傳播算法優(yōu)化得到,卷積層的目的是提取輸入的多種特征。
池化層(Pooling layer):通常在卷積層之后會得到維度很大的特征,在池化層進行特征選擇和信息過濾,通過最大、最小、平均等計算,得到新的、維度較小的特征。
全連接層(Fully-Connected layer): 全連接層等價于前饋神經(jīng)網(wǎng)絡(luò)中的隱含層,通過把所有局部特征結(jié)合變成全局特征,是隱含層的最后部分。
輸出層(Output layer):輸出層使用邏輯函數(shù)或歸一化指數(shù)函數(shù)將結(jié)果轉(zhuǎn)換為分類標簽。
谷歌于2018 年發(fā)布了基于雙向Transformer大規(guī)模預(yù)訓(xùn)練BERT 語言模型,憑借基于預(yù)訓(xùn)練的fine-turning 模型刷新了11 項NLP 任務(wù)的最優(yōu)性能記錄,引起了國內(nèi)研究熱潮。
對于預(yù)訓(xùn)練模型的選擇,本文使用基于多頭自注意力機制的預(yù)訓(xùn)練分類模型,模型使用的是預(yù)訓(xùn)練模型中的典型編碼器加解碼器結(jié)構(gòu),如圖2 所示,其中左邊部分為編碼器,用于將源序列的編碼;右邊部分為解碼器,用于輸出目標序列的解碼。
圖2 預(yù)訓(xùn)練BERT模型基本結(jié)構(gòu)圖
其中,編碼器部分由N 個層堆疊在一起構(gòu)成,每一層的結(jié)構(gòu)都是相同的,每一層包含了兩個支層:第一個支層由一個多頭自注意力子層(M ulti-Head-A ttention)和一個前饋神經(jīng)網(wǎng)絡(luò)子層(Feed Forw ard)構(gòu)成;第二個支層由一個簡單的全連接前饋網(wǎng)絡(luò)組成。另外,第一個支層和第二個支層的外面都采用殘差進行連接,并對結(jié)果進行了層規(guī)范化(Add& Normalize)的處理。
模型的解碼器部分也由N 個相同的層堆疊而成。每一層除了沿用編碼器中的兩個支層結(jié)構(gòu),還加入了第三個支層編碼- 解碼注意力子層(Encode-Decoder A ttention),用于計算編碼器中輸出結(jié)果對當前結(jié)果的影響。另外,第一個多頭自注意力子層也和編碼器部分的子層不完全一樣,在編碼器基礎(chǔ)上添加了掩碼結(jié)構(gòu),處理訓(xùn)練階段屏蔽的詞,解碼器中同樣進行了殘差連接以及層規(guī)范化(Add& Normalize)的處理。
電力客服工單中存在較多的標點符號,以及助詞、副詞、介詞、連詞等非功能性的停用詞,模型訓(xùn)練前需要對文本數(shù)據(jù)進行預(yù)處理,圖3 給出了基于預(yù)訓(xùn)練BERT 算法模型的自動分類流程,分類流程包含文本預(yù)處理、模型構(gòu)建、效果評估三大環(huán)節(jié),分類的詳細流程步驟如下:
1)數(shù)據(jù)輸入:一個工單文本描述作為一條數(shù)據(jù),標識為一個數(shù)據(jù)集Y,得到待訓(xùn)練向量集合Zy={zy1,zy2,zy3,…,zym};
2)中文分詞:工單文本中詞與詞之間沒有空格的自然分界,本文采用上述所述的CRF 分詞算法,并借助自行編纂的電力專業(yè)詞典,對電力文本進行分詞Aij={A11,A12,A13,…,A1m},其中一個工單文本為i,工單文本中的一個分詞為j;
3)數(shù)據(jù)預(yù)處理:剔除無意義的標點符號、表情符號,剔除非功能性的助詞、副詞、介詞、連詞等停用詞;
4)文本表示:采用分布式文本表示,將文本分詞后的每一個詞轉(zhuǎn)換為向量化的數(shù)值,如“變壓器”的向量化表示為[0.50451,0.68607,-0.59517,-0.022801,0.60046,…,0.68229,0.81722];
5)特征構(gòu)建:構(gòu)建工單文本分類的特征詞庫矩陣,完成特征提取,可有效降低特征空間維數(shù),提高運行效率、降低復(fù)雜度、提高分類準確率,特征矩陣如下:
6)模型訓(xùn)練:將特征矩陣∑AIJ作為算法模型輸入,其中70%數(shù)據(jù)訓(xùn)練集,30%數(shù)據(jù)測試集,對分類模型進行訓(xùn)練;
7)效果評估:本文采用準確率、召回率、精度、F1 值四個指標對分類效果進行綜合評價,逐步調(diào)整模型參數(shù),指標符合預(yù)期為止。
圖3 工單自動分類流程圖
本文從某供電局營銷部門收集了共35900 條與停電有關(guān)的工單。通過數(shù)據(jù)預(yù)處理,除去冗余、重復(fù)等意義不大的文本數(shù)據(jù),由于本文所采用的分類方法為有監(jiān)督學(xué)習(xí)機制,又去除了停復(fù)電咨詢、催繳費等無關(guān)的數(shù)據(jù),取剩余14000 條文本作為實驗樣本。該停電故障集涉及的類別如表1 所示。
表1 停電故障類別
文本的分布式表示最早由Hinton 提出,本文采用的思路是以Bengio 等人提出的NNLM模型為基礎(chǔ),在對大量客服工單文本數(shù)據(jù)進行預(yù)處理的基礎(chǔ)上,將這些客服工單數(shù)據(jù)作為語料庫訓(xùn)練詞的分布式詞向量。通過NNLM 處理后,可得到不同維度的詞的語義,如圖4 表示一個三維的詞向量示例:
圖4 詞向量的分布式表示
圖4 中每一個圓點表示一個詞向量,x、y、z 軸分別表示詞向量的3 個語義維度。采用分布式表示詞向量時,詞義相近的詞對應(yīng)的詞向量在特征空間中距離也比較接近,而詞義相差較大的詞對應(yīng)的向量距離也比較遠,例如“潛油泵”和“絕緣化”兩詞的相關(guān)性較大,在圖4詞向量分布空間中,也可看出兩詞的特征空間距離比較接近。在電力實際應(yīng)用中,詞向量維度大小可根據(jù)語料庫的大小來進行選定,通常取100~300 維,每個維度代表機器自動學(xué)習(xí)到的一個詞特征。
輸入的文本轉(zhuǎn)換為詞向量后,就可以輸入預(yù)訓(xùn)練BERT 算法模型中,在進行模型的預(yù)訓(xùn)練時,將輸入的詞向量中融入電力客服工單場景的上下文特征,如圖5 是工單文本“進戶線三相電表關(guān)閉空開后有電”的預(yù)訓(xùn)練模型中的標準輸入形式。
圖5 電力文本輸入結(jié)構(gòu)圖
文本序列的每個句子首位和末尾都打上特殊標記,首位標記[cls],末尾標記[sep],對于句子分類任務(wù),中間字依此進行標記,最終完成整個句子的表征描述。針對一個段落,算法模型使用兩種手段來使模型區(qū)分多個句子:1)用標記[SEP]分隔兩個句子。2)添加段向量到輸入中,段向量采用A 型、B 型、C 型來分別表示多個句子。
針對模型的每一步訓(xùn)練,例如輸入句子A,有50%的概率選擇句子B 作為下一個連續(xù)的輸出,有50%的概率從語料中選擇不連續(xù)的句子C 取而代之。圖6 給出了替換的前后對比。
圖6 句子屏蔽前后對比
采用遮蔽詞策略的預(yù)測訓(xùn)練過程,模型輸入序列中的任何一個元素都會被隨機標記[mask] 代替,通過隨機遮蔽詞策略來避免模型學(xué)習(xí)中的過擬合問題。經(jīng)過模型的屏蔽編碼后,標記[mask]的最終輸出結(jié)果會用來預(yù)測被遮蔽詞。另外,在此模型訓(xùn)練時的輸出除了保證句子本身的完整外,還采用是或否的標簽來判斷多個句子的連續(xù)性。
標準的預(yù)訓(xùn)練BERT 模型給出了兩個版本,一個是base 版本,另一個是large 版本,考慮到實驗數(shù)據(jù)量相對較少,分類結(jié)果不是太多的情況,本文選擇的是large 版本,雖然訓(xùn)練過程相對速度較慢,但能夠從工單文本中學(xué)到的特征較多,擬合程度也會更好,分類模型采用的參數(shù)如表2 所示:
表2 分類模型參數(shù)
算法模型的學(xué)習(xí)訓(xùn)練采用有放回重復(fù)抽樣的方式來構(gòu)建訓(xùn)練集和測試集,其中訓(xùn)練集和測試集按照70%和30%的比例來劃分。訓(xùn)練過程中為了訓(xùn)練出有深度雙向語言向量,需要遮住句子里某些單詞,采用的屏蔽策略為1)80%概率保持這個詞不變;2)10%概率用隨機的一個詞來替換;3)10%概率用mask token 來代替。
本文采用的屏蔽詞策略能夠提升編碼器的泛化能力,由于編碼器不知道哪些詞是需要預(yù)測的,哪些詞是被屏蔽為錯誤的,因此編碼器將被迫學(xué)習(xí)每一個token 的分布向量,由于每個句子中只有20%的詞會被屏蔽標記[mask]遮蓋,保證了模型的泛化能力,為此多付出的性能開銷也不大。
為合理評價電力客服工單文檔的自動分類效果,我們重點關(guān)注分類模型的準確率、召回率、精度、F1 值四個評價指標,指標的定義如下:
■ 準確率(accuracy):
■ 召回率(recall):
■ 精度(precision):
■ F1 值(F1-score):
另外,為了對比預(yù)訓(xùn)練BERT 分類模型與傳統(tǒng)機器學(xué)習(xí)分類模型的效果差異,本文選取幾種典型的傳統(tǒng)機器學(xué)習(xí)方法進行對比實驗。文本表示采用分布式向量表示,分類算法采用GBDT 梯度提升決策樹、LSTM 長短期記憶網(wǎng)絡(luò)、RNN 循環(huán)神經(jīng)網(wǎng)絡(luò)。
采用上述4 種算法模型進行分類訓(xùn)練,得到的結(jié)果按照準確率、召回率、精度、F1 值、耗時進行對比,統(tǒng)計結(jié)果如表3 所示。
從表3 的對比可看出,采用GBDT 的模型訓(xùn)練耗時最小,原因在于GBDT 模型是由多顆決策樹構(gòu)成,復(fù)雜度小,可并行程度高,計算性能要優(yōu)于其他模型。不過準確率、召回率、精度等其他評價指標都是最低的,整體指標偏低,說明模型對于數(shù)據(jù)的擬合度不夠,也從側(cè)面說明客服工單文本上下文關(guān)系、隱含語義較復(fù)雜,常用的機器學(xué)習(xí)模型效果不理想。
預(yù)訓(xùn)練BERT 模型除計算性能低于GBDT模型,其他三個評價指標都是最優(yōu)的,其中準確率和召回率都明顯要高于其他模型,深度學(xué)習(xí)類的RNN、LSTM 模型對于樣本量少的電力工單訓(xùn)練的效果不夠好,預(yù)訓(xùn)練類BERT 模型可以將其他領(lǐng)域訓(xùn)練的文本特征帶入電力業(yè)務(wù)場景,能夠顯著提升電力工單文本自動分類的準確度。
在電力客服工單的自動分類處理上通過引入基于預(yù)訓(xùn)練的BERT 模型,并將預(yù)訓(xùn)練模型與常用的機器學(xué)習(xí)、深度學(xué)習(xí)模型進行全面對比,通過對各類算法模型的準確率、召回率、精度、F1 值、耗時進行了綜合對比,給出了在電力95598 客服工單文本分類的一種優(yōu)選方案。
預(yù)訓(xùn)練模型中除了較成熟BERT 模型,目前基于預(yù)訓(xùn)練策略還發(fā)展出MASS、XLNET 等一系列更復(fù)雜的預(yù)訓(xùn)練模型,可以預(yù)計,隨著人工智能、自然語言處理技術(shù)的成熟,電力業(yè)務(wù)中更專業(yè)、更復(fù)雜的場景必將迎來巨大變更。