李 楊,陳福海,韓小波
(中國(guó)電子科技集團(tuán)第二十八研究所,江蘇 南京 210000)
互聯(lián)網(wǎng)技術(shù)的廣泛應(yīng)用及移動(dòng)計(jì)算和分布式計(jì)算的快速發(fā)展,使得統(tǒng)一管理和組織海量信息變得更加復(fù)雜[1]。從Kafka平臺(tái)上獲取需要的信息時(shí),龐大的發(fā)布訂閱消息數(shù)量使得人工選擇和分類變得復(fù)雜[2]。當(dāng)下常見的分類算法存在明顯的問題,例如使用最近鄰分類器時(shí),如果分類的類別屬于跨領(lǐng)域,那么識(shí)別難度較大且存在誤差,需要通過人工定制相應(yīng)的特征信息,但人工定制的信息存在先天性的不足,如特征較少等。
以語(yǔ)義嵌入模型為代表的神經(jīng)網(wǎng)絡(luò)算法能夠較好地解決上述問題。通過語(yǔ)義嵌入模型能夠大大較低人工獲取特征的難度,在降低難度的同時(shí)還能夠更加準(zhǔn)確地獲取特征。準(zhǔn)確獲取的特征可以廣泛運(yùn)用于人工智能等領(lǐng)域,且性能十分強(qiáng)大。因此,本文基于語(yǔ)義嵌入模型的良好性能,提出了一種基于語(yǔ)義嵌入模型的Kafka平臺(tái)發(fā)布訂閱信息分類方法,將發(fā)布訂閱信息中的每一個(gè)詞都映射成語(yǔ)義空間向量[3]。詞向量表現(xiàn)了詞上下文的基本特征,將該詞向量輸入到長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)中[4],會(huì)輸出一個(gè)向量來(lái)代表該信息特征。每一個(gè)發(fā)布訂閱的信息不僅含有其自身屬性信息,而且含有與其他信息的關(guān)聯(lián)信息[5],包含訂閱發(fā)布信息的邏輯等。通過組合信息語(yǔ)義向量與關(guān)聯(lián)信息,基于語(yǔ)義嵌入模型的Kafka平臺(tái)能夠自動(dòng)生成信息歸類類別。基于此,闡述研究背景和研究現(xiàn)狀,給出基于語(yǔ)義嵌入模型Kafka平臺(tái)發(fā)布訂閱信息分類方法的實(shí)現(xiàn)過程,生成代碼語(yǔ)義向量并進(jìn)行實(shí)驗(yàn)對(duì)比分析。實(shí)驗(yàn)結(jié)果表明,采用該改進(jìn)方法可有效提高信息分類精度。
為使Kafka平臺(tái)中發(fā)布和訂閱信息能夠?qū)崿F(xiàn)更好的分類效果,設(shè)計(jì)了整個(gè)Kafka平臺(tái)框架。為了解決特征的問題,將Kafka平臺(tái)中發(fā)布和訂閱信息中的每一個(gè)詞都映射成一個(gè)語(yǔ)義空間向量,在獲取單個(gè)信息的同時(shí)還需獲取全面且完整的信息。此外,使用長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)可將獲取到的完整信息以一個(gè)全局信息向量的形式輸出。
經(jīng)過以上步驟后,發(fā)布和訂閱信息被轉(zhuǎn)換成了一個(gè)語(yǔ)義空間向量V。信息相關(guān)的搜索蘊(yùn)含了信息的分類、發(fā)布和訂閱信息的分類過程,可以反映信息的內(nèi)部邏輯。通過分析發(fā)布訂閱信息的關(guān)聯(lián),可提取關(guān)聯(lián)信息特征向量T={t1,t2,…,tn}。
結(jié)合關(guān)聯(lián)信息特征向量T和語(yǔ)義空間向量V的信息,將兩個(gè)組合連接成一個(gè)向量輸入到前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Network,F(xiàn)NN)(為獲取非線性特征關(guān)系設(shè)置一層隱藏層),由Softmax層輸出每個(gè)類標(biāo)簽{C1,C2,…,Cn}的概率,且所有的概率相加為1。文中取概率最大的類標(biāo)簽作為發(fā)布訂閱信息的標(biāo)簽[6]。
信息的源代碼中包含著變量名等信息。得到發(fā)布訂閱信息的源碼后,由于發(fā)布訂閱信息之間可以互相調(diào)用,且一個(gè)信息的功能需要另一個(gè)信息的配合才能完成,因此有調(diào)用關(guān)系的信息在功能上存在一定的聯(lián)系。在預(yù)處理過程中,如果一個(gè)信息調(diào)用了一個(gè)信息函數(shù),那么需將被調(diào)用的函數(shù)擴(kuò)充到調(diào)用函數(shù)的對(duì)應(yīng)位置。
通過長(zhǎng)短時(shí)記憶模型(Long-Short Term Memory,LSTM)可生成源代碼的代碼語(yǔ)義向量。LSTM可實(shí)現(xiàn)向量到向量的映射,靈活控制輸出向量的大小,因此本文選擇用LSTM生成發(fā)布訂閱信息的語(yǔ)義向量。
每一套代碼都可以將其看成一個(gè)詞的序列{w1,w2,…,wn}。在詞嵌入層中將每一個(gè)詞wi映射成一個(gè)300維的稠密詞嵌入向量[7]。生成詞嵌入向量后,將其輸入到LSTM。初始階段,每一個(gè)新的詞嵌入向量都要被輸入到LSTM中,通過LSTM輸出一個(gè)向量,這個(gè)向量位于語(yǔ)義空間向量中,最終可得出結(jié)論:信息相關(guān)性較高的句子的向量在該語(yǔ)義空間向量中的距離較近,且可以歸為一類信息;信息相關(guān)性較低的句子的向量在語(yǔ)義空間向量中的距離較遠(yuǎn),代表的不是同一類信息。
LSTM[8]可擴(kuò)展自循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent neural network,RNN)。設(shè)當(dāng)前的輸入為xt,上一步的輸出為ht-1,則可利用循環(huán)神經(jīng)網(wǎng)絡(luò)計(jì)算下一個(gè)輸出ht為:

其中,W與Wr是模型的參數(shù),b是偏差,lt是隱含狀態(tài)。
LSTM主要通過輸入門、遺忘門以及輸出門3種類型門來(lái)解決時(shí)序問題[9]。在輸入較長(zhǎng)時(shí),LSTM能夠比RNN更好地獲取到輸入的依賴關(guān)系[10]。設(shè)置LSTM記憶狀態(tài)為ct、輸入狀態(tài)為it、之前的狀態(tài)ft,給定一個(gè)輸入xt、上一個(gè)輸出ht-1、上一狀態(tài)ct-1,輸出ht計(jì)算過程為:

式(3)~式(7)中,矩陣W和偏差bi、bf、bc、bo是要學(xué)習(xí)的參數(shù),σ是Sigmoid函數(shù)[2]。輸入最后一個(gè)詞后,最終的輸出結(jié)果代表源代碼的語(yǔ)義向量。這個(gè)向量可以獲取源碼的上下文語(yǔ)義信息,并進(jìn)行下一步處理。得到發(fā)布訂閱信息源代碼的向量表示后,再將向量表示與發(fā)布訂閱信息結(jié)合起來(lái)輸入到前饋神經(jīng)網(wǎng)絡(luò)中,得到的輸出結(jié)果為發(fā)布訂閱源碼可能的類標(biāo)簽及其對(duì)應(yīng)概率。
通過分析Kafka平臺(tái)的相關(guān)應(yīng)用,本文將發(fā)布訂閱的主要用途分為經(jīng)濟(jì)相關(guān)類、家居娛樂類和其他類。本文所有試驗(yàn)均由一臺(tái)Intel Xeon E5八核的電腦完成,CPU主頻為3.7 GHz,內(nèi)存為8 GB,程序使用Jave JDK 1.8編寫完成。由于Kafka平臺(tái)數(shù)據(jù)集規(guī)模在單機(jī)可處理,因此本文算法無(wú)需使用集群訓(xùn)練與驗(yàn)證,可以方便地移植。
采用語(yǔ)義嵌入算法模型的目的是高效地將發(fā)布訂閱信息源碼分類。為了驗(yàn)證它的效果,將該模型的效果與其他兩種常見算法進(jìn)行對(duì)比。
2.2.1 樸素貝葉斯算法模型(NBC)
為與語(yǔ)義嵌入模型進(jìn)行對(duì)比,先用詞袋模型將源碼轉(zhuǎn)換為相應(yīng)向量,然后將發(fā)布訂閱信息作為樸素貝葉斯的輸入。樸素貝葉斯能夠計(jì)算出每一個(gè)類別的概率,取概率最大的信息與發(fā)布訂閱信息的預(yù)測(cè)進(jìn)行對(duì)比。
2.2.2 支持向量機(jī)算法模型(SVM)
該模型主要用于分類問題,主要的應(yīng)用場(chǎng)景包括字符識(shí)別、面部識(shí)別、行人檢測(cè)以及文本分類等。通常使用SVM將多元分類問題分解為多個(gè)二元分類問題后再繼續(xù)進(jìn)行分類。為了能讓SVM進(jìn)行多種類型的分類,可在分類時(shí)采用one vs all算法。
本文利用precision、recall、accuracy以及flscore共4個(gè)評(píng)估指標(biāo)來(lái)評(píng)估語(yǔ)義嵌入模型模型、樸素貝葉斯模型及支持向量機(jī)模型[2]。發(fā)布信息和訂閱信息在3種不同算法模型的不同場(chǎng)景下(如經(jīng)濟(jì)相關(guān)類和家居娛樂類等)的評(píng)估結(jié)果分別如表1~表3所示。通過對(duì)比3種算法模型的結(jié)果,證實(shí)了語(yǔ)義嵌入算法模型的效果較好。

表1 語(yǔ)義嵌入算法模型評(píng)估結(jié)果

表2 樸素貝葉斯算法模型評(píng)估結(jié)果

表3 支持向量機(jī)算法模型評(píng)估結(jié)果
通過深入了解Kafka平臺(tái)上的發(fā)布訂閱信息,結(jié)合語(yǔ)義嵌入模型,提出了一種基于語(yǔ)義嵌入模型的Kafka平臺(tái)發(fā)布訂閱信息分類方法。通過用詞嵌入模型對(duì)發(fā)布訂閱信息代碼的語(yǔ)義信息建模,能夠更深入地理解發(fā)布訂閱信息的邏輯行為。經(jīng)實(shí)驗(yàn)證實(shí),基于語(yǔ)義嵌入模型的Kafka平臺(tái)發(fā)布訂閱信息分類方法應(yīng)用性能優(yōu)良,可更好地對(duì)Kafka平臺(tái)發(fā)布的訂閱信息進(jìn)行分類和搜索。