陳亮+王剛+王震
摘 要:為提升電力客戶服務(wù)質(zhì)量,在進(jìn)行電力客服工單文本挖掘時(shí),對工單文本首先進(jìn)行切詞,然后應(yīng)用分布式內(nèi)存計(jì)算框架構(gòu)建并行LDA主題模型,對工單進(jìn)行文本主題分析。使用國網(wǎng)公司某網(wǎng)省電力客服工單進(jìn)行了主題分析,結(jié)合業(yè)務(wù)專家經(jīng)驗(yàn)確定主體數(shù)k=10較合適,結(jié)果表明分布式內(nèi)存計(jì)算框架下的并行LDA主題模型可以應(yīng)用于客服工單的文本挖掘。
關(guān)鍵詞:工單文本挖掘 并行LDA 分布式內(nèi)存計(jì)算
中圖分類號:F407.61 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-098X(2017)04(c)-0245-05
Abstract:Applicate distributed computing framework to construct parallel theme LDA model, then modeling power customer service work order text theme. Use SGC a net province electric power customer service work order are analyzed in the text theme, calculation results show that the distributed memory parallel theme LDA model under the framework of text mining can be applied to customer service work order.
Key Words:Worksheet semantic analysis; Parallel LDA; Distributed memory computing
優(yōu)質(zhì)服務(wù)是一切企業(yè)生存與發(fā)展的基礎(chǔ)和前提。國家電網(wǎng)公司將電力的優(yōu)質(zhì)服務(wù)定位成“國家電網(wǎng)的生命線”,足見其對于電力企業(yè)的重要作用。國網(wǎng)某省公司為充分發(fā)揮電力客戶服務(wù)中心“對客戶服務(wù)的窗口作用、對市公司的橋梁作用、對業(yè)務(wù)部門的決策支撐作用、對供電服務(wù)質(zhì)量的監(jiān)督作用”,基于國網(wǎng)南中心辦結(jié)與轉(zhuǎn)派的海量工單數(shù)據(jù),對分散在95598日常業(yè)務(wù)工單中的用戶訴求與供電服務(wù)質(zhì)量的關(guān)系進(jìn)行全方位、多維度、多層次的統(tǒng)計(jì)分析。依托現(xiàn)有國網(wǎng)95598系統(tǒng)、營銷業(yè)務(wù)系統(tǒng)等數(shù)據(jù),通過95598模塊優(yōu)化提升,對營業(yè)普遍和專題性問題、客戶服務(wù)效率問題、客戶服務(wù)滿意度提升方面進(jìn)行深入分析,探究客戶用電服務(wù)中的共性問題以及分布、趨勢和原因,挖掘用戶用電的普遍性規(guī)律,找出用戶用電過程中敏感的、重點(diǎn)關(guān)注的,受行為習(xí)慣、外界因素影響的深層次原因。進(jìn)一步挖掘分析業(yè)務(wù)處理各流程環(huán)節(jié)的短板、問題和原因所在,將加強(qiáng)各類業(yè)務(wù)督辦和服務(wù)協(xié)同,提升95598業(yè)務(wù)服務(wù)能力,提高客戶服務(wù)質(zhì)量。
該文的方法首先將電力客服工單文本根據(jù)自建的電力關(guān)聯(lián)詞庫及非關(guān)聯(lián)詞庫進(jìn)行文本切詞,然后在分布式內(nèi)存計(jì)算框架下構(gòu)建并行LDA主題模型,最后利用該模型進(jìn)行文本主題挖掘,得到電力客服工單的主題描述。該方法結(jié)合國家電網(wǎng)某省公司實(shí)際電力工單文本數(shù)據(jù),進(jìn)行文本主題分析,結(jié)果表明可以有效描述電力客服工單主題。
1 并行LDA主題模型
隱含狄利克雷分布(Latent Dirichlet allocation,LDA)是一種主題模型(Topic Model),也是一種詞袋模型,采用無監(jiān)督學(xué)習(xí)算法,由Blei等于2003年提出。LDA主題模型可以以概率分布的形式給出文檔集中每篇文檔主題,并且在訓(xùn)練時(shí)不需要帶標(biāo)注的訓(xùn)練集。目前,LDA主題模型在文本挖掘領(lǐng)域中的文本主題識別、文本分類及相似度計(jì)算等方面都有廣泛應(yīng)用。
1.1 LDA主題模型
LDA主題模型是一種詞袋模型,將語料庫看作文檔集合,將文檔看作單詞集合。文檔就像一個裝單詞的袋子,袋子中的單詞獨(dú)立并可交換(即沒有單詞順序和語法結(jié)構(gòu)),基于此可將文檔文本轉(zhuǎn)換成對應(yīng)的詞頻向量,完成文檔數(shù)字化抽象。LDA主題模型將文檔視為“文檔—主題—詞”的三層貝葉斯結(jié)構(gòu),每篇文檔是若干主題的概率分布,每個主題是若干詞的概率分布[1]。LDA主題模型的概率圖模型見圖1。
圖1中,是文檔—主題的Dirichlet分布的超參數(shù);是主題—詞的Dirichlet分布的超參數(shù);是第i篇文檔中主題的多項(xiàng)式分布的超參數(shù);是第k個主題中詞的多項(xiàng)式分布超參數(shù);是第i篇文檔中第j個詞的主題;Wi,j是第i篇文檔中第j個詞;M是預(yù)料庫中的文檔數(shù);Ni是第i篇文檔中詞數(shù)。
根據(jù)LDA主題模型的文檔生成方式,模型中可見變量和隱變量的聯(lián)合概率分布:
公式(1)中各變量含義與圖1中一致。
根據(jù)極大似然估計(jì),可以由對公式(1)得到一篇文檔中單詞的分布:
公式(2)中各變量含義與圖1中一致。
通過的極大似然估計(jì),最終可以使用吉布斯采樣(Gibbs Sampling)方法估計(jì)模型中的參數(shù)。
1.2 LDA主題模型的并行化
應(yīng)用吉布斯采樣方法可以估計(jì)模型中的參數(shù),但是必須獲取到除當(dāng)前參數(shù)外其他全部參數(shù)的狀態(tài)。所以,標(biāo)準(zhǔn)的LDA主題模型是一個串行學(xué)習(xí)的過程。近似分布LDA(AD-LDA)是一種分布式并行化的LDA算法。AD-LDA基于吉布斯采樣,采用數(shù)據(jù)并行方式及參數(shù)全局融合思想,可以構(gòu)建近似的并行化LDA主題模型。首先初始化LDA主題模型的全局參數(shù),優(yōu)化各分布的主題模型,然后采用同步或異步方式融合的到全局LDA主題模型參數(shù)[2]。AD-LDA算法見圖2。
圖2中,(W, T)(1)是并行處理的預(yù)料數(shù)據(jù)塊,W是文本,T是主題,上標(biāo)是數(shù)據(jù)塊標(biāo)號;Nt,d(1)是文檔—主題頻率計(jì)數(shù)矩陣,上標(biāo)是與數(shù)據(jù)塊對應(yīng)的矩陣標(biāo)號;Nw,t(1)是主題—單詞頻率計(jì)數(shù)矩陣,上標(biāo)是任務(wù)標(biāo)號;Local(Nw,t(1))是并行的本地模型;Global(Nw,t)是全局模型。
AD-LDA算法簡述為:
(1)將語料數(shù)據(jù)分塊為(W,T)(i),構(gòu)建對應(yīng)的文檔—主題頻率計(jì)數(shù)矩陣Nt,d(i);
(2)構(gòu)建并行采樣任務(wù),使用分塊語料數(shù)據(jù)訓(xùn)練本地模型Local(Nw,t(i));
(3)并行任務(wù)之間采用同步或異步方式借助全局參數(shù)服務(wù)器融合Global(Nw,t)全局模型。
近似分布LDA是標(biāo)準(zhǔn)LDA主題模型的近似,會使得訓(xùn)練收斂速度變慢,在幾輪迭代后可以收斂到與串行吉布斯采樣相同的超參數(shù)??梢栽诖笠?guī)模分布式計(jì)算框架下加速收斂速度。
2 分布式內(nèi)存計(jì)算框架
Apache Spark是UC Berkeley大學(xué)AMPLab實(shí)驗(yàn)室于2009年創(chuàng)建的分布式內(nèi)存計(jì)算框架項(xiàng)目,并于2010年將其作為開源項(xiàng)目貢獻(xiàn)給Apache基金會。截止到Spark 2.0版本,該項(xiàng)目由核心模塊(Apache Spark Core)、類SQL查詢模塊(Spark SQL)、機(jī)器學(xué)習(xí)模塊(MLlib)和圖計(jì)算模塊(GrapheX)組成,其架構(gòu)見圖3。
Apache Spark是一種與Apache Hadoop類似的基于MapReduce并行計(jì)算范式的分布式計(jì)算框架。Apache Spark與ApacheHadoop的關(guān)鍵不同在于,Apache Spark是基于內(nèi)存的分布式計(jì)算框架,即計(jì)算作業(yè)的中間結(jié)果保存在內(nèi)存中,在非必要時(shí)不需要頻繁的讀寫外部存儲介質(zhì),從而減少大量的I/O操作。而Apache Hadoop在Map階段之后與Reduce階段之前的中間結(jié)果硬性要求進(jìn)行I/O操作。Apache Spark的這種內(nèi)存計(jì)算特性使得在進(jìn)行大規(guī)模迭代式機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘時(shí)效率很高。
Apache Spark的核心組件是彈性分布式數(shù)據(jù)集(Resilient Distributed Dataset, RDD),是一個分布式內(nèi)存的抽象。RDD提供了以操作本地?cái)?shù)據(jù)集合的方式來操作分布式數(shù)據(jù)集合的抽象。將頻繁使用的RDD緩存到內(nèi)存,這樣對該RDD的計(jì)算可以直接在內(nèi)存中進(jìn)行,避免了大量I/O操作。但是,在內(nèi)存消耗較大時(shí)RDD仍需要存儲到外存中,這時(shí)需要要求其中的數(shù)據(jù)集是可序列化的(serializable)。RDD內(nèi)部實(shí)現(xiàn)由5部分組成:
(1)數(shù)據(jù)塊列表,即數(shù)據(jù)集分區(qū)列表。
(2)由父RDD生成子RDD時(shí)執(zhí)行的數(shù)據(jù)塊函數(shù)。
(3)對父RDD的依賴關(guān)系列表。
(4)用于分割數(shù)據(jù),確定所在分區(qū)的partitioner()函數(shù)。
(5)數(shù)據(jù)塊預(yù)定義存儲地址列表。
Apache Spark RDD有兩類計(jì)算方式,Transformation計(jì)算和Action計(jì)算。Transformation計(jì)算是懶執(zhí)行的,即一個RDD通過執(zhí)行Transformation計(jì)算生成新RDD時(shí),該計(jì)算并不執(zhí)行,而僅僅是記錄該計(jì)算,當(dāng)遇到Action計(jì)算時(shí)才執(zhí)行計(jì)算。Transformation計(jì)算主要包括:map\filter\flatMap\mapPartitions\groupByKey\join\cogroup\repartition等。Action計(jì)算是立即執(zhí)行的,執(zhí)行完畢后將結(jié)果寫入外部存儲系統(tǒng)。Action計(jì)算主要包括:reduce\collect\count\countByKey\foreach\saveAsTextFile等。圖4說明了計(jì)算的執(zhí)行過程。
Apache Spark RDD提供了審計(jì)容錯機(jī)制,是通過在RDD的計(jì)算過程中設(shè)置Checkpoint完成的。在RDD的計(jì)算過程中對RDD的轉(zhuǎn)換過程進(jìn)行記錄,記錄RDD之間的準(zhǔn)換過程和關(guān)系,設(shè)置Checkpoint,轉(zhuǎn)換記錄被稱為Lineage。當(dāng)系統(tǒng)需要回滾時(shí),Apache Spark根據(jù)這些Lineage轉(zhuǎn)換記錄重新計(jì)算,完成作業(yè)操作。
3 應(yīng)用分析
應(yīng)用上述方法,選取國網(wǎng)公司某網(wǎng)省公司某年1~6月份95598客服工單數(shù)據(jù)(約204萬條)進(jìn)行分析。結(jié)合電力行業(yè)詞庫與非電力行業(yè)詞庫,對工單文本數(shù)據(jù)進(jìn)行切詞處理,表1為部分工單文本切詞結(jié)果數(shù)據(jù)。
應(yīng)用并行LDA主題模型,在分布式內(nèi)存計(jì)算框架下,以主題數(shù)為10(k=10)進(jìn)行文本分析,各主題包括的主題詞見表2。
4 結(jié)語
結(jié)合電力工單文本數(shù)據(jù)的非結(jié)構(gòu)化數(shù)據(jù)特點(diǎn),使用某網(wǎng)省電力客戶文本工單數(shù)據(jù),首先對工單文本結(jié)合電力詞典進(jìn)行分詞,然后應(yīng)用分布式內(nèi)存計(jì)算框架,構(gòu)建并行LDA主題模型對其進(jìn)行文本挖掘。結(jié)合客戶業(yè)務(wù)專家經(jīng)驗(yàn)進(jìn)一步進(jìn)行語義分析,提高了工單文本分析的效率。通過仿真計(jì)算表明能夠較好的提取工單文本語義信息,滿足實(shí)際應(yīng)用需求。
參考文獻(xiàn)
[1] Blei, David M, Ng A Y, Jordan M I. Latent dirichlet allocation[C]. Neural Information Processing System, 2001:601-608.
[2] Newman D. Asuncion A U, Smyth P, et al. Distributed inference for latent dirichlet allocation[C]. Neural Information Processing Systems, 2008:81-88.
[3] 劉興平,章曉明,沈然,等.電力企業(yè)投訴工單文本挖掘模型[J].電力需求側(cè)管理,2016,18(2):57-60.
[4] 王震,代巖巖,陳亮,等.基于LDA模型的95598熱點(diǎn)業(yè)務(wù)工單挖掘分析[J].電子技術(shù)與軟件工程,2016(22):190-192.
[5] 高陽,嚴(yán)建峰,劉曉升.樸素并行LDA[J].計(jì)算機(jī)科學(xué),2015,42(6):243-246.
[6] 王旭仁,姚葉鵬,冉春風(fēng),等.一種并行LDA主題模型建立方法研究[J].北京理工大學(xué)學(xué)報(bào),2013,33(6):590-593.