胡 陽(yáng),胡學(xué)鋼 ,2,李培培
1.合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院,合肥 230009
2.工業(yè)安全與應(yīng)急技術(shù)安徽省重點(diǎn)實(shí)驗(yàn)室,合肥 230009
隨著互聯(lián)網(wǎng)信息技術(shù)的發(fā)展,實(shí)際應(yīng)用領(lǐng)域產(chǎn)生了大量的短文本數(shù)據(jù)流,包括微博、推文和實(shí)時(shí)評(píng)論等。這些短文本數(shù)據(jù)流具有以下三個(gè)顯著特點(diǎn):首先每個(gè)文本都很短,沒(méi)有充分的上下文語(yǔ)義信息,導(dǎo)致特征高維稀疏、信息模糊;其次,隨時(shí)間推移短文本大量涌現(xiàn),導(dǎo)致信息快速發(fā)生變化,上下文信息不對(duì)稱(chēng);再者,文本流會(huì)隨著時(shí)間變化而發(fā)生概念漂移現(xiàn)象,影響所建模型的穩(wěn)定性,導(dǎo)致其預(yù)測(cè)精度降低。上述特點(diǎn)使得傳統(tǒng)的K最鄰近(KNN)、支持向量機(jī)(SVM)、邏輯回歸(LR)等長(zhǎng)文本分類(lèi)方法難以直接應(yīng)用,也使得已有的單機(jī)版短文本數(shù)據(jù)流分類(lèi)方法面臨分類(lèi)精度低與時(shí)間代價(jià)高的挑戰(zhàn)。為了解決短文本的特征稀疏性問(wèn)題,已有的研究工作一方面通過(guò)外部語(yǔ)料庫(kù)獲取詞與詞上下文關(guān)聯(lián)語(yǔ)料以擴(kuò)充短文本,如文獻(xiàn)[1],然而利用外部語(yǔ)料庫(kù)豐富短文本,會(huì)使得分類(lèi)器性能?chē)?yán)重依賴(lài)于外部語(yǔ)料庫(kù)的豐富程度,導(dǎo)致分類(lèi)器性能不穩(wěn)定。另一方面,通過(guò)挖掘短文本自身上下文關(guān)系,利用關(guān)聯(lián)規(guī)則實(shí)現(xiàn)自擴(kuò)展,如文獻(xiàn)[2]。然而,上述技術(shù)僅適用于數(shù)據(jù)規(guī)模恒定的靜態(tài)數(shù)據(jù)集,嚴(yán)重限制了它們?cè)诹鲾?shù)據(jù)上的應(yīng)用。目前,流行的短文本數(shù)據(jù)流分類(lèi)方法如文獻(xiàn)[3]多采用基于滑動(dòng)窗口機(jī)制劃分?jǐn)?shù)據(jù)塊并構(gòu)建集成分類(lèi)器模型,從而進(jìn)行更新與預(yù)測(cè),然而,由于較大時(shí)間開(kāi)銷(xiāo)無(wú)法解決流式數(shù)據(jù)中I/O同步問(wèn)題。同時(shí)在模型更新策略上也忽略了歷史數(shù)據(jù)流樣本對(duì)模型的貢獻(xiàn)以及概念漂移帶來(lái)的影響,導(dǎo)致一定精度的丟失。
因此,本文提出一種基于Spark的分布式快速短文本數(shù)據(jù)流分類(lèi)方法,其主要貢獻(xiàn)如下:(1)利用外部語(yǔ)料庫(kù)構(gòu)建Word2vec詞向量模型向量化表示短文本,以解決短文本的高維稀疏性,并在訓(xùn)練過(guò)程中獲取未在外部語(yǔ)料庫(kù)詞表中出現(xiàn)的新詞文本集合用來(lái)構(gòu)建詞向量擴(kuò)展庫(kù),從而減輕模型分類(lèi)器性能對(duì)外部語(yǔ)料庫(kù)的依賴(lài)程度。(2)提出一種基于在線(xiàn)梯度下降的LR分類(lèi)器集成模型用于短文本數(shù)據(jù)流分類(lèi),降低訓(xùn)練樣本迭代次數(shù),減少對(duì)數(shù)據(jù)塊的處理時(shí)間,從而緩解數(shù)據(jù)流中I/O同步問(wèn)題;同時(shí)引入時(shí)間因子加權(quán)機(jī)制以有效緩解概念漂移帶來(lái)的影響。(3)在Apache Spark分布式環(huán)境實(shí)現(xiàn)所提方法,并行化加速對(duì)海量短文本數(shù)據(jù)流的分類(lèi)處理。(4)實(shí)驗(yàn)結(jié)果表明:所提分布式短文本數(shù)據(jù)流分類(lèi)方法比目前主流的文本分類(lèi)算法具有更高的分類(lèi)精度和較低的時(shí)間代價(jià)。
本章主要介紹短文本與長(zhǎng)文本分類(lèi)的相關(guān)工作。
短文本分類(lèi)的代表工作如下:文獻(xiàn)[4]通過(guò)外部語(yǔ)料庫(kù)構(gòu)建Word2vec與CNN的組合詞向量模型,以提高短文本分類(lèi);文獻(xiàn)[5]利用Web資源構(gòu)建專(zhuān)有的類(lèi)別詞典,來(lái)對(duì)特有的短文本進(jìn)行擴(kuò)展以實(shí)現(xiàn)相關(guān)短文本的情感分類(lèi);文獻(xiàn)[6]將LSTM與詞嵌入結(jié)合檢測(cè)極性短文,用于社交媒體中的情感分類(lèi);文獻(xiàn)[7]同樣利用主題模型挖掘隱含主題,然后將短文本中每一個(gè)詞映射到相應(yīng)的主題上,進(jìn)而利用獲得的主題進(jìn)行分類(lèi);文獻(xiàn)[8]提出一種利用隨機(jī)投影和分段線(xiàn)性模型策略降低文本特征向量以實(shí)現(xiàn)短文本分類(lèi);文獻(xiàn)[9]提出一種從多種語(yǔ)料庫(kù)中挖掘隱含主題來(lái)擴(kuò)展短文本的分類(lèi)方法;文獻(xiàn)[10]首先提出了一種端到端的深存儲(chǔ)網(wǎng)絡(luò)以期望從長(zhǎng)文本集合獲取相關(guān)信息來(lái)擴(kuò)展短文本;文獻(xiàn)[11]利用分層聚類(lèi)在語(yǔ)義空間中獲取聚類(lèi)中心向量,以擴(kuò)展短文本單詞向量;文獻(xiàn)[12]提出一個(gè)通過(guò)基于密度峰值搜索的聚類(lèi)算法用詞嵌入來(lái)擴(kuò)展短文本語(yǔ)義信息;文獻(xiàn)[4]提出一種基于文本擴(kuò)展的短文本分類(lèi)方法,主要抽取短文本中出現(xiàn)的概念,通過(guò)文本概念對(duì)短文本進(jìn)行擴(kuò)展;文獻(xiàn)[13]提出基于神經(jīng)網(wǎng)絡(luò)的短文本自我管理分類(lèi)方法,利用深度神經(jīng)網(wǎng)絡(luò)將短文本投影到緊湊的向量空間;文獻(xiàn)[14]通過(guò)在外部語(yǔ)料庫(kù)上構(gòu)建主題模型,考慮單詞共現(xiàn)信息來(lái)擴(kuò)展文本;文獻(xiàn)[15]構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建擴(kuò)展矩陣,通過(guò)擴(kuò)展矩陣完成對(duì)文本擴(kuò)展;文獻(xiàn)[16]通過(guò)Probase知識(shí)庫(kù)進(jìn)行術(shù)語(yǔ)獲取,利用語(yǔ)義概念擴(kuò)展短文本的特征空間。這些方法雖然降低了短文本的稀疏性,提高了分類(lèi)的準(zhǔn)確性。但是獲取覆蓋所有類(lèi)標(biāo)簽的數(shù)據(jù)域的外部語(yǔ)料庫(kù)是十分困難的。
長(zhǎng)文本分類(lèi)的代表工作如下:文獻(xiàn)[17]提出基于詞袋模型的fastText文本分類(lèi)方法;文獻(xiàn)[18]考慮文本中句法和語(yǔ)義單詞關(guān)系,改進(jìn)Skip-gram模型,引入短語(yǔ)單元,獲取詞與短語(yǔ)的矢量,在訓(xùn)練采用二次負(fù)采樣以加速Skip-gram模型的建立;文獻(xiàn)[19]為了克服LDA模型中主題特征與詞的重要性不一致的問(wèn)題,提出一種改良的LDA模型:引入詞加權(quán)與主題加權(quán)使算法期望最大化以進(jìn)行文本分類(lèi);文獻(xiàn)[20]提出一種結(jié)合TF-IDF與LDA的文本挖掘方法;文獻(xiàn)[21]提出一種基于神經(jīng)網(wǎng)絡(luò)(BP-MLL)的多標(biāo)簽情感學(xué)習(xí)方法;文獻(xiàn)[22]提出一種多協(xié)同訓(xùn)練的文本分類(lèi)方法,利用TF-IDF、LDA、Doc2Vec對(duì)文本進(jìn)行特征變換,訓(xùn)練多個(gè)模型對(duì)文本進(jìn)行加權(quán)預(yù)測(cè),以提高文本分類(lèi)精度。但是,上述分類(lèi)方法都是屬于批處理算法,幾乎不涉及數(shù)據(jù)流的分類(lèi)。同時(shí),他們也未考慮隱藏在短文本數(shù)據(jù)流中的概念漂移問(wèn)題。
本章提出一種基于Spark的分布式快速短文本數(shù)據(jù)流分類(lèi)方法。首先給出短文本數(shù)據(jù)流增量式分類(lèi)方法的問(wèn)題定義,并詳述其技術(shù)細(xì)節(jié):包括擴(kuò)展Word2vec模型,短文本數(shù)據(jù)流集成分類(lèi)模型,模型的增量更新與預(yù)測(cè)。最后,給出算法在Spark環(huán)境下的分布式實(shí)現(xiàn)框架。
圖1給出了所提短文本數(shù)據(jù)流分類(lèi)方法的框架。隨著數(shù)據(jù)塊Dt的到來(lái),記為t時(shí)刻,首先用詞向量集合對(duì)數(shù)據(jù)塊文本Dt進(jìn)行向量化表示,其次訓(xùn)練向量化后的短文本數(shù)據(jù)塊Dt以完成集成模型的構(gòu)建與更新,對(duì)下一個(gè)數(shù)據(jù)塊Dt+1中未知數(shù)據(jù)進(jìn)行預(yù)測(cè)。其中,為了構(gòu)建增量式分類(lèi)器并能夠?qū)崟r(shí)更新參數(shù)模型,分別為t時(shí)刻第r個(gè)類(lèi)構(gòu)建Logistic Regression分類(lèi)器記為 fr(1≤r≤ ||R, ||R ≤L),R為t時(shí)刻已出現(xiàn)的類(lèi)標(biāo)簽集合,從而得到 ||R個(gè)分類(lèi)器集成模型
短文本數(shù)據(jù)流的增量式分類(lèi)方法的問(wèn)題形式化如下:基于滑動(dòng)窗口機(jī)制將給定數(shù)據(jù)流劃分成尺寸大小固定的數(shù)據(jù)塊,記為D={D1,D2,…,Dt,…,DT},其中T→∞,。而在預(yù)測(cè)階段,針對(duì)數(shù)據(jù)塊Dt+1的任一未知短文本,根據(jù)Word2vec訓(xùn)練得到的詞向量集Vec向量化為,利用公式(1)預(yù)測(cè)其標(biāo)簽集合記為;最后利用文本上下文更新擴(kuò)展詞向量集合VecE。
Word2vec是一組用于生成單詞向量的神經(jīng)網(wǎng)絡(luò)模型,主要利用語(yǔ)料庫(kù)文本中詞語(yǔ)上下文關(guān)系訓(xùn)練模型,將詞轉(zhuǎn)化為詞向量,用于度量詞與詞之間相似度,Word2vec提供兩種方法(即CBOW與skip-gram)來(lái)訓(xùn)練模型,在CBOW架構(gòu)中,模型通過(guò)指定窗口截取上下文來(lái)預(yù)測(cè)當(dāng)前詞;在skip-gram架構(gòu)中,模型通過(guò)當(dāng)前詞預(yù)測(cè)上下文單詞,相比于skip-gram架構(gòu),CBOW模型訓(xùn)練時(shí)間少,但是對(duì)不常見(jiàn)的單詞效果不好。因此,利用skip-gram模型架構(gòu)。訓(xùn)練模型主要有分層softmax和負(fù)采樣兩種方法,為了將算法并行化,本文方法采用分層softmax訓(xùn)練外部語(yǔ)料庫(kù)的詞向量集合VecS,同時(shí)為了減少最大化條件對(duì)數(shù)似然函數(shù)的時(shí)間開(kāi)銷(xiāo),引入哈夫曼樹(shù)技術(shù);主要思想如下:遍歷數(shù)據(jù)塊中的每個(gè)短文本,如果文本中單詞并未出現(xiàn)在外部語(yǔ)料庫(kù)詞表中,則將文本加入集合S。遍歷結(jié)束后構(gòu)建Word2vec更新或增加對(duì)應(yīng)詞向量至集合VecE。利用短文本數(shù)據(jù)流中的上下文信息,不斷更新新詞的詞向量,同時(shí)為了避免增加處理的時(shí)間開(kāi)銷(xiāo),設(shè)置更新閾值?,并過(guò)濾在外部語(yǔ)料庫(kù)中已有的詞。擴(kuò)展Word2vec模型如算法1所示。
算法1擴(kuò)展Word2vec算法
輸入:在當(dāng)前時(shí)刻t獲取的數(shù)據(jù)塊D;VecEt-1為t-1時(shí)刻擴(kuò)展詞向量集合;S為新詞文本集合;Vcab為外部語(yǔ)料庫(kù)的詞表;?為S的最大文本數(shù)。
輸出:t時(shí)刻擴(kuò)展詞向量集合VecEt。
4.end if
5.end for
6.ifS.size>?:
7. forwdinS.words:
8. ifVecEt-1haswd vector:
9. UpdateVect-1
10. else
11.VecEt(wd)←zero
圖1 短文本數(shù)據(jù)流分類(lèi)框架圖
12.end if
13.end for
14. UseSBuild Word2vec,updateVecEt
15.S←emptySet
16.end if
針對(duì)外部語(yǔ)料構(gòu)建Word2Vec模型得到詞向量化集合Vec。隨著短文本數(shù)據(jù)塊的到來(lái),利用Word2Vec模型訓(xùn)練出的向量集合進(jìn)行向量化表示。例如,對(duì)數(shù)據(jù)塊Dt中短文本向量化表示記為:
本節(jié)將詳細(xì)介紹基于線(xiàn)性L(fǎng)R分類(lèi)器的增量式分類(lèi)模型的構(gòu)建,同時(shí),為適應(yīng)短文本數(shù)據(jù)流環(huán)境,采用在線(xiàn)梯度下降FTRL算法更新特征權(quán)重。
3.3.1 LR集成模型的構(gòu)建
根據(jù)類(lèi)標(biāo)簽分布將數(shù)據(jù)塊Dt劃分為 ||Rt個(gè)具有相同類(lèi)標(biāo)簽的短文本集合,其中 ||Rt表示數(shù)據(jù)塊Dt中短文本包含的類(lèi)標(biāo)簽個(gè)數(shù)。選擇第r個(gè)具有相同類(lèi)標(biāo)簽的短文本集合作為正例集合,Dt中其他的短文本集合作為負(fù)例訓(xùn)練構(gòu)建線(xiàn)性L(fǎng)R分類(lèi)器,形成分類(lèi)器集成模表示數(shù)據(jù)塊Dt中第r個(gè)類(lèi)標(biāo)簽對(duì)應(yīng)的的線(xiàn)性L(fǎng)R分類(lèi)器,記為對(duì)應(yīng)的權(quán)重集合表示為=,初始值權(quán)值設(shè)為 0;Vec(Dt)表示Dt數(shù)據(jù)塊的所有文檔向量化集合。
這樣做的目的是盡可能地減少分類(lèi)器構(gòu)建過(guò)程中對(duì)樣本的迭代次數(shù),同時(shí)增大分類(lèi)器與分類(lèi)器之間的差異度;以實(shí)現(xiàn)更好的分類(lèi)效果。
3.3.2 在線(xiàn)梯度下降FTRL算法
其中,λ1、λ2、α和β均為算法的超參數(shù)常數(shù),zgn()?為向上取整函數(shù)。
為了適應(yīng)短文本數(shù)據(jù)流環(huán)境,模型增量更新機(jī)制如下:遍歷數(shù)據(jù)塊Dt的短文本,如果類(lèi)標(biāo)簽Ltn∈R,則利用訓(xùn)練樣本更新模型中第r個(gè)分類(lèi)器的學(xué)習(xí)參數(shù),則新建類(lèi)標(biāo)簽的分類(lèi)器并初始化權(quán)重與參數(shù)NPt、ZPt分別為0,并將放入R中,再利用訓(xùn)練樣本更新當(dāng)前參數(shù),最后利用更新好的模型參數(shù)計(jì)算分類(lèi)器新的特征權(quán)重并加入模型Ft。考慮到不同時(shí)間維度的數(shù)據(jù)塊對(duì)模型貢獻(xiàn)程度不一致,以及短文本數(shù)據(jù)流的概念漂移現(xiàn)象。本文在對(duì)當(dāng)前模型進(jìn)行更新的同時(shí),引入時(shí)間因子作為權(quán)值,增大鄰近數(shù)據(jù)塊對(duì)模型參數(shù)的貢獻(xiàn)量,從而緩解發(fā)生概念漂移時(shí)模型的準(zhǔn)確率急速下降,具體如下:對(duì)當(dāng)前數(shù)據(jù)塊Dt,首先利用模型對(duì)其進(jìn)行預(yù)測(cè),獲取模型對(duì)數(shù)據(jù)塊Dt的準(zhǔn)確度Acct,如果相比較之前準(zhǔn)確率發(fā)生較大下滑,即Acct-1-Acct>θ;其中θ為漂移閾值,則增大當(dāng)前數(shù)據(jù)塊對(duì)模型的貢獻(xiàn)量,使模型Ft適應(yīng)可能在此發(fā)生的概念漂移環(huán)境,本文方法是利用當(dāng)前數(shù)據(jù)塊Dt重復(fù)更新模型Ft,直至Acct-1-Acct>θ。否則,執(zhí)行下一個(gè)數(shù)據(jù)塊Dt+1。算法2給出了整體的實(shí)現(xiàn)過(guò)程。
算法2模型更新與預(yù)測(cè)
1.UseF predictDtand calculateAcct
2.Iter=0/*初始化迭代次數(shù)*/
3.if(Acct-1-Acct)<θ:Iter=1
4.else:Iter=3
5.end if
6.iter=1
8. ifLn?R:
9.InitializeNP andZP zero
10. Update Nt-1and Zt-1
11. AddLntoR
12. end if
13.end for
14.iter=iter+1,turn 6,untiliter>Iter
15.modify Nt-1and Zt-1to Ntand Zt
16.calculateWt+1
為了更好對(duì)未知短文本數(shù)據(jù)流進(jìn)行預(yù)測(cè),首先利用算法1獲取詞向量集合,向量化單詞,將短文本轉(zhuǎn)為文本向量;其次構(gòu)建可擴(kuò)展的增量式集成分類(lèi)器模型,根據(jù)數(shù)據(jù)塊類(lèi)標(biāo)簽,動(dòng)態(tài)增加分類(lèi)器個(gè)數(shù);然后通過(guò)每個(gè)短文本對(duì)模型權(quán)重進(jìn)行增量式更新;最后預(yù)測(cè)未知短文本的類(lèi)標(biāo)簽,并且根據(jù)預(yù)測(cè)短文本上下文更新擴(kuò)展詞向量集合。保證擴(kuò)展詞向量的實(shí)時(shí)更新。使得整個(gè)方法中的擴(kuò)展詞向量集合VecE,分類(lèi)器模型隨時(shí)間進(jìn)行實(shí)時(shí)更新擴(kuò)展,使得整個(gè)方法在短文本數(shù)據(jù)流的復(fù)雜環(huán)境下,仍能保證較高分類(lèi)精度。
本節(jié)主要介紹本文所提的短文本數(shù)據(jù)流分類(lèi)方法中模型訓(xùn)練的分布式并行化,模型更新與擴(kuò)展Word2vec分布式并行化,其中以一個(gè)主節(jié)點(diǎn)Driver與三個(gè)子節(jié)點(diǎn)Node構(gòu)成的集群為例。
3.5.1 分布式訓(xùn)練
本文方法主要利用數(shù)據(jù)同步并行的分布式訓(xùn)練策略[24]完成對(duì)模型的構(gòu)建,分布式更新框架如圖2所示。其中每個(gè)數(shù)據(jù)塊數(shù)據(jù)將分布存儲(chǔ)至各個(gè)子節(jié)點(diǎn),以數(shù)據(jù)塊Dt為例,首先Driver主節(jié)點(diǎn)將所有分類(lèi)器的權(quán)重分發(fā)至所有的工作子節(jié)點(diǎn)Node,本文采用三個(gè)子節(jié)點(diǎn),因此Dt劃分成三份數(shù)據(jù)集合,即等待所有子節(jié)點(diǎn)的數(shù)據(jù)塊訓(xùn)練完成之后,聚合每個(gè)節(jié)點(diǎn)處理的子集的權(quán)重更新量得到)可表示為 ||R 維的權(quán)值向量,記為其中表示對(duì)應(yīng)分類(lèi)器 ftr的LR權(quán)值集合,然后主節(jié)點(diǎn)執(zhí)行一次參數(shù)的更新。
3.5.2 分布式預(yù)測(cè)與擴(kuò)展word2vec
本文方法中模型預(yù)測(cè)與Word2vec擴(kuò)展分布式化框架見(jiàn)圖3。以在數(shù)據(jù)塊Dt+1上的分布式預(yù)測(cè)為例,Dt+1劃分成三份數(shù)據(jù)集合,即Dt+1={Dt+11,Dt+12,Dt+13},并根據(jù)3.2節(jié)描述的根據(jù)Word2vec訓(xùn)練的向量化集合對(duì)其向量化表示,得到短文本向量化表示Vec(Dt+11)、Vec(Dt+12)和Vec(Dt+13)。Driver主節(jié)點(diǎn)將集成分類(lèi)器Ft分發(fā)至所有的子節(jié)點(diǎn)Node,等待子節(jié)點(diǎn)完成對(duì)短文本d(d∈Dt+1)的預(yù)測(cè),并將子節(jié)點(diǎn)中的新詞文本選擇出來(lái),獲取所有子節(jié)點(diǎn)的預(yù)測(cè)信息與新詞文本集合信息;然后主節(jié)點(diǎn)將預(yù)測(cè)信息輸出,并聚合所有的新詞文本集合以擴(kuò)展Word2vec。
本章主要為了驗(yàn)證本文提出的短文本數(shù)據(jù)流分類(lèi)算法的有效性,對(duì)比了本文所提算法與相關(guān)基準(zhǔn)算法的分類(lèi)結(jié)果,首先給出了所需的短文本數(shù)據(jù)流數(shù)據(jù)集與使用的相關(guān)基準(zhǔn)算法,然后說(shuō)明了實(shí)驗(yàn)有關(guān)的參數(shù)設(shè)置與性能評(píng)估參數(shù),最后驗(yàn)證了本文所提的方法在短文本數(shù)據(jù)流分類(lèi)上的有效性。
圖2 分布式參數(shù)更新框架圖
圖3 分布式模型預(yù)測(cè)與擴(kuò)展Word2vec框架
選擇了三個(gè)公開(kāi)的短文本數(shù)據(jù)集來(lái)驗(yàn)證本文所提算法的有效性,表1給出數(shù)據(jù)集的元數(shù)據(jù)信息。
表1 數(shù)據(jù)集
(1)Tweet[25]數(shù)據(jù)集:借助推特API進(jìn)行關(guān)鍵字追蹤,從推特中獲取的2012年11月到12月的推文數(shù)據(jù)總共4類(lèi)。實(shí)驗(yàn)中僅使用2012年12月的推文,按時(shí)間順序獲得803 613條短文本數(shù)據(jù)。
(2)News數(shù)據(jù)集:來(lái)源于TagMyNews數(shù)據(jù)集,總共7類(lèi)。獲取短標(biāo)題作為數(shù)據(jù)集,總共有32 597條短文本。
(3)Snip數(shù)據(jù)集:是將預(yù)設(shè)定的表達(dá)放在網(wǎng)絡(luò)搜索引擎上搜索的結(jié)果,總共8個(gè)類(lèi)別,12 340條短文本。
上述三個(gè)數(shù)據(jù)集均是通過(guò)分詞、去停用詞、過(guò)濾特殊字符等預(yù)處理之后得到的。同時(shí)為了驗(yàn)證本文算法能夠很好地抵抗概念漂移,重新修改了News與Snip數(shù)據(jù)集的上下文順序,使得數(shù)據(jù)塊與數(shù)據(jù)塊之間人為發(fā)生概念漂移,并根據(jù)數(shù)據(jù)集大小設(shè)置數(shù)據(jù)塊切分區(qū)間。
本節(jié)給出了目前主流的2個(gè)短文本分類(lèi)框架:fastText與sk-learn,以及一個(gè)短文本數(shù)據(jù)流分類(lèi)算法:擴(kuò)展onlineBTM,用于驗(yàn)證本文提出的增量式短文本數(shù)據(jù)流分類(lèi)算法的有效性,表2為上述分類(lèi)算法的主要信息。其中fastText與sk-learn源碼均來(lái)源于相關(guān)官網(wǎng),擴(kuò)展onlineBTM來(lái)源于文獻(xiàn)[3]。本文基于Word2vec增量式分類(lèi)模型用ICM-Wordvec表示。
表2 基準(zhǔn)算法
本節(jié)通過(guò)獲取模型對(duì)測(cè)試樣本預(yù)測(cè)的增量準(zhǔn)確率來(lái)衡量模型對(duì)短文本數(shù)據(jù)流分類(lèi)的有效性。利用滑動(dòng)窗口將數(shù)據(jù)流劃分為數(shù)據(jù)塊進(jìn)行處理,獲取鄰近數(shù)據(jù)塊來(lái)更新或替換模型,計(jì)算對(duì)當(dāng)前測(cè)試數(shù)據(jù)塊的增量分類(lèi)精度作為性能評(píng)估參數(shù)。其中增量分類(lèi)精度計(jì)算見(jiàn)式(6):
其中,Inc-acct為模型對(duì)第t個(gè)數(shù)據(jù)塊的增量分類(lèi)精度,acci為模型對(duì)第i個(gè)數(shù)據(jù)塊的分類(lèi)精度。
本文中ICM-Word2vec方法的特征維數(shù)為200,增量式學(xué)習(xí)算法中超參數(shù)λ1、λ2、α、β分別為0.01、0.01、0.016、0.01;基準(zhǔn)算法利用前K個(gè)最鄰近數(shù)據(jù)塊對(duì)下個(gè)數(shù)據(jù)塊進(jìn)行進(jìn)行預(yù)測(cè),其中K=4。數(shù)據(jù)集News與Snip中數(shù)據(jù)塊大小設(shè)置為100,而Tweet數(shù)據(jù)集由于數(shù)據(jù)樣本大,將數(shù)據(jù)塊大小設(shè)為1 000。最后基準(zhǔn)實(shí)驗(yàn)fastText,sk-learn(LR),E.Drift-ensenmble在Core i7 4核處理器,頻率為2.80 GHz和8 GB內(nèi)存的centos7 VM虛擬機(jī)上實(shí)現(xiàn)。本文方法ICM-Word2vec在集群上利用spark2.4.0與scala2.11進(jìn)行實(shí)驗(yàn)。其中集群由一個(gè)驅(qū)動(dòng)節(jié)點(diǎn)(Core i7處理器CPU-1核,頻率為2.80 GHz,1 GB內(nèi)存)與四個(gè)工作節(jié)點(diǎn)(Core i7處理器 CPU-2核,頻率為2.80 GHz,4 GB內(nèi)存)構(gòu)成。
本節(jié)主要驗(yàn)證了與基準(zhǔn)對(duì)比算法相比,本文的ICM-Word2vec方法在短文本數(shù)據(jù)流分類(lèi)上的有效性。
4.4.1 分類(lèi)性能對(duì)比
圖4和圖5給出了本文方法ICM-Word2vec與基準(zhǔn)算法在三個(gè)數(shù)據(jù)集上的分類(lèi)精度與增量分類(lèi)精度的實(shí)驗(yàn)結(jié)果。由于第一個(gè)數(shù)據(jù)塊沒(méi)有訓(xùn)練數(shù)據(jù)塊從而無(wú)法預(yù)測(cè),故下面所有的數(shù)據(jù)塊的下標(biāo)都進(jìn)行了減1操作。由實(shí)驗(yàn)結(jié)果可知:(1)fastText在Tweet數(shù)據(jù)集上較其他兩個(gè)數(shù)據(jù)集有較好分類(lèi)精度,因?yàn)閒astText適合于大量訓(xùn)練數(shù)據(jù),類(lèi)標(biāo)簽較少的場(chǎng)景;并且算法fastText的分類(lèi)精度在時(shí)間上發(fā)生劇烈波動(dòng),因?yàn)樗惴](méi)有考慮文本數(shù)據(jù)流中概念漂移。(2)E.Drift-ensenmble算法在 News、Snip兩個(gè)數(shù)據(jù)集具有較好的分類(lèi)精度而在Tweet數(shù)據(jù)集卻發(fā)生精度下降,主要由于Tweet相鄰數(shù)據(jù)塊之間類(lèi)別分布差異較大,而其他兩個(gè)數(shù)據(jù)集中類(lèi)別分布較均勻。并且E.Drift-ensenmble算法在維持算法精度的穩(wěn)定性的同時(shí),導(dǎo)致了一定精度的降低。(3)sk-learn在三個(gè)數(shù)據(jù)集上的分類(lèi)精度都較低,由于sk-learn沒(méi)有對(duì)短文本中存在的信息稀疏問(wèn)題進(jìn)行處理,同時(shí)沒(méi)有考慮數(shù)據(jù)流中存在的概念漂移。從而導(dǎo)致在數(shù)據(jù)集上的分類(lèi)精度較低,并且分類(lèi)精度隨時(shí)間發(fā)生劇烈波動(dòng)。(4)本文所提出的ICM-Word2vec短文本數(shù)據(jù)流分類(lèi)算法在增量分類(lèi)精度與分類(lèi)精度上都優(yōu)于其他三個(gè)基準(zhǔn)算法,由于本文方法并沒(méi)有利用最鄰近的方式構(gòu)建分類(lèi)模型,而是通過(guò)利用所有的數(shù)據(jù)樣本維護(hù)模型參數(shù)NP、ZP,通過(guò)模型參數(shù)更新模型,充分利用所有歷史數(shù)據(jù)樣本,并且本文方法通過(guò)引入時(shí)間因子,以及擴(kuò)展Word2vec的手段,使本文的分類(lèi)精度較穩(wěn)定,通過(guò)實(shí)驗(yàn)結(jié)果可知本文的模型穩(wěn)定性與E.Drift-ensenmble算法相當(dāng),明顯優(yōu)于其他兩個(gè)算法,在Tweet數(shù)據(jù)集上表現(xiàn)尤為明顯,并且分類(lèi)精度也略?xún)?yōu)于E.Drift-ensenmble算法。
圖4 ICM-Word2vec與基準(zhǔn)算法在增量式分類(lèi)精度上的比較
圖5 ICM-Word2vec與基準(zhǔn)算法在分類(lèi)精度上的比較
4.4.2 時(shí)間性能對(duì)比
圖6對(duì)比了ICM-Word2vec算法與基準(zhǔn)算法的時(shí)間消耗,由實(shí)驗(yàn)結(jié)果可知:在Snip與News數(shù)據(jù)集上ICMWord2vec時(shí)間消耗與E.Drift-ensenmble算法相當(dāng),甚至還高,這是因?yàn)楫?dāng)數(shù)據(jù)樣本較少時(shí),Spark集群的每次任務(wù)中資源調(diào)度、信息通信以及并行化的額外開(kāi)銷(xiāo)將占整個(gè)時(shí)間的較大比重,導(dǎo)致時(shí)間消耗不低于E.Driftensenmble。當(dāng)數(shù)據(jù)量大時(shí),本文方法時(shí)間消耗遠(yuǎn)低于E.Drift-ensenmble算法。在Tweet數(shù)據(jù)集上實(shí)驗(yàn)也表明這一特點(diǎn),E.Drift-ensenmble算法在Tweet數(shù)據(jù)集上的時(shí)間消耗急劇上升,而ICM-Word2vec的時(shí)間消耗并沒(méi)有明顯加大。其中fastText與sk-learn在三個(gè)數(shù)據(jù)集的時(shí)間消耗遠(yuǎn)低于ICM-Word2vec與E.Drift-ensenmble算法。這是由于fastText與sk-learn算法在訓(xùn)練數(shù)據(jù)時(shí)并沒(méi)有對(duì)短文本的高維稀疏性進(jìn)行擴(kuò)展,也沒(méi)有對(duì)數(shù)據(jù)流中存在的概念漂移現(xiàn)象進(jìn)行處理,而ICM-Word2vec與E.Drift-ensenmble對(duì)短文本分類(lèi)中存在的問(wèn)題進(jìn)行有效的處理,導(dǎo)致時(shí)間消耗增加。fastText與sk-learn算法雖然其時(shí)間開(kāi)銷(xiāo)明顯減少,但模型分類(lèi)精度卻嚴(yán)重下降。無(wú)法對(duì)短文本進(jìn)行高質(zhì)量的預(yù)測(cè)。
圖6 ICM-Word2vec與基準(zhǔn)算法在時(shí)間上的比較
圖7 ICM-Word2vec與基準(zhǔn)算法在概念漂移上的比較
4.4.3 時(shí)間適應(yīng)概念漂移的性能對(duì)比
圖7表明了ICM-Word2vec算法與基準(zhǔn)算法在時(shí)間序列上對(duì)短文本數(shù)據(jù)流中的概念漂移的適應(yīng)能力。由實(shí)驗(yàn)結(jié)果可知:與基準(zhǔn)算法相比,ICM-Word2vec算法能很好地適應(yīng)概念漂移環(huán)境,在發(fā)生概念漂移的數(shù)據(jù)塊能夠較好地穩(wěn)定分類(lèi)精度。主要是因?yàn)閿?shù)據(jù)流中概念漂移是在已知概念中進(jìn)行漂移,并未產(chǎn)生新的概念,而基準(zhǔn)算法主要是通過(guò)最鄰近數(shù)據(jù)塊機(jī)制構(gòu)建模型,無(wú)法很快適應(yīng)概念漂移環(huán)境,ICM-Word2vec算法是利用歷史信息并引入時(shí)間因子增量式更新模型,故能較好地保持分類(lèi)精度。E.Drift-ensenmble是在發(fā)生概念漂移時(shí),選擇與發(fā)生漂移的數(shù)據(jù)塊具有類(lèi)似主題分布的數(shù)據(jù)塊進(jìn)行模型構(gòu)建來(lái)適應(yīng)概念漂移環(huán)境。
本文提出了一種基于Spark的分布式快速短文本數(shù)據(jù)流分類(lèi)方法。首先用外部語(yǔ)料庫(kù)來(lái)構(gòu)建Word2vec模型,用詞向量來(lái)表示單詞;在訓(xùn)練中,獲取并更新新詞向量進(jìn)行詞向量集合擴(kuò)展;其次,為了能夠很好地抵抗概念漂移,引入了時(shí)間因子來(lái)計(jì)算鄰近數(shù)據(jù)塊對(duì)模型的貢獻(xiàn)值;同時(shí),使用FTRL算法計(jì)算多個(gè)線(xiàn)性分類(lèi)器的特征權(quán)重以構(gòu)建集成模型來(lái)對(duì)未知數(shù)據(jù)塊進(jìn)行預(yù)測(cè)。整個(gè)模型運(yùn)行于大數(shù)據(jù)處理平臺(tái)Spark上,并進(jìn)行分布式并行化對(duì)方法進(jìn)行加速;最后,廣泛的結(jié)果表明,與傳統(tǒng)方法相比,本文方法可以在短文本數(shù)據(jù)流分類(lèi)和抵抗概念漂移中獲得更好的性能。然而,本文方法在處理數(shù)據(jù)集規(guī)模較小的情況下,不具有時(shí)間優(yōu)勢(shì),因此,如何處理缺失數(shù)據(jù)集以獲得更好的分類(lèi)性能是未來(lái)工作的方向。致謝 在論文完成之際,特此感謝合肥工業(yè)大學(xué)計(jì)算機(jī)與信息學(xué)院任恒同學(xué)在論文代碼實(shí)現(xiàn)上的貢獻(xiàn)。