朱肖穎,賴紹輝,陸科達(dá)
(1.2.3.梧州學(xué)院 大數(shù)據(jù)與軟件工程學(xué)院,廣西 梧州 543002)
隨著經(jīng)濟(jì)的發(fā)展,互聯(lián)網(wǎng)成為了人們生活不可缺少的一部分,方便了人們生活的方方面面。但互聯(lián)網(wǎng)上的新聞信息魚龍混雜,且每天都以爆炸式的趨勢在增長,用戶想大致瀏覽新聞信息非常困難,想在大量的信息中精準(zhǔn)地獲取自己感興趣的信息更是難上加難,因此迫切需要對互聯(lián)網(wǎng)新聞信息進(jìn)行有效的分類整理。文本分類技術(shù)是實現(xiàn)信息重組、文本數(shù)據(jù)挖掘的基礎(chǔ),可以在很大程度上解決互聯(lián)網(wǎng)新聞信息雜亂無章的問題,幫助用戶快速準(zhǔn)確地定位所需信息,是當(dāng)下處理大規(guī)模數(shù)據(jù)信息的重要手段。針對大規(guī)模新聞數(shù)據(jù)信息整理的問題,不少學(xué)者將文本分類技術(shù)引入其中,如張志平采用“中文新聞信息分類與代碼”文本分類體系[1];徐保鑫等將樸素貝葉斯算法應(yīng)用到我國的新聞分類中[2];藍(lán)雯飛等的研究采用卷積神經(jīng)網(wǎng)絡(luò)新聞分類體系[3]。但張志平等的研究只是針對小規(guī)模的數(shù)據(jù),在處理大規(guī)模數(shù)據(jù)的過程中算法模型需要耗費大量的時間;徐保鑫等使用的樸素貝葉斯算法屬于傳統(tǒng)機器學(xué)習(xí)分類算法,在訓(xùn)練模型的過程中需要手動提取文本特征,處理效率較差;藍(lán)雯飛等采用的CNN算法由于自身的卷積功能對文本的整體結(jié)構(gòu)有一個統(tǒng)攬的能力,所以在短句子配對上占有一定的優(yōu)勢,而在處理長句子時,卷積神經(jīng)網(wǎng)絡(luò)只能處理窗口內(nèi)的信息,相鄰窗口信息的融合需要借助后一層卷積層,這加大了對卷積窗口和移動的步長參數(shù)的依賴,即存在調(diào)參難度大的問題。因此本文利用TensorFlow平臺搭建了基于LSTM循環(huán)神經(jīng)網(wǎng)絡(luò)的新聞分類算法,從時間上、質(zhì)量上對新聞分類進(jìn)行了優(yōu)化。
LSTM(Long Short Term Memory Network,長短期記憶網(wǎng)絡(luò))算法是一種能長久儲存序列信息的循環(huán)神經(jīng)網(wǎng)絡(luò),在語言分類模型、機器翻譯、語音識別等領(lǐng)域都得到了廣泛的應(yīng)用[4]。LSTM適合處理和預(yù)測時間序列中延遲和間隔相對較長的重要事件,可以通過刻意的設(shè)計來避免長期依賴問題。實踐證明,記住長期的信息是LSTM算法自身具備的能力,不需要付出很大的代價。
LSTM是一種特殊的RNN(Recurrent neural network,循環(huán)神經(jīng)網(wǎng)絡(luò)),RNN作為神經(jīng)網(wǎng)絡(luò)的總稱,常用于處理一系列的序列數(shù)據(jù),是深度學(xué)習(xí)中序列處理的關(guān)鍵技術(shù)[5]。目前已在語音識別、語言處理、機器翻譯、視頻識別等領(lǐng)域取得突破性的進(jìn)展,然而梯度消失現(xiàn)象制約著RNN的實際應(yīng)用。為了解決該問題,研究人員提出了許多解決方法,其中最為成功且應(yīng)用最為廣泛的就是加入門限機制的RNN,而LSTM就是門限RNN中使用最廣泛的一個。LSTM的特別之處在于通過新增輸入門、輸出門和遺忘門3個門限來改變自循環(huán)的權(quán)重,通過這種方式,只要模型參數(shù)固定不變,就可以保證不同時刻的積分尺度動態(tài)改變,從而有效地避免梯度消失/梯度膨脹的問題。
由于LSTM由RNN演變而來,在介紹LSTM算法模型的框架結(jié)構(gòu)之前,先來介紹一下RNN的模型結(jié)構(gòu),方便大家理解。RNN的算法結(jié)構(gòu)如圖1所示。

圖1 RNN的算法結(jié)構(gòu)
由圖1可知,傳統(tǒng)RNN中每一步的隱藏單元只是執(zhí)行一個簡單的tanh操作。
LSTM的算法結(jié)構(gòu)如圖2所示。

圖2 LSTM的算法結(jié)構(gòu)
圖2中各標(biāo)記的含義如下頁表1所示。
表1 LSTM算法結(jié)構(gòu)標(biāo)記含義表

標(biāo)記英文名中文名Neural Network Layer神經(jīng)網(wǎng)絡(luò)層Pointwise Operation逐點操作Vector Transfer傳輸向量Concatenate向量的連接Copy復(fù)制
由圖2可知,LSTM的網(wǎng)絡(luò)結(jié)構(gòu)大體上和傳統(tǒng)RNN相似,重復(fù)結(jié)構(gòu)A看起來也比RNN要復(fù)雜一些,但分開解釋就變得很簡單了。
LSTM的關(guān)鍵之處在于cell的狀態(tài)和橫穿cell的水平線,cell狀態(tài)的傳輸類似于一個簡單的傳送帶,傳送帶結(jié)構(gòu)如圖3所示。信息橫穿整個cell的過程中只做少量的線性操作,即這種結(jié)構(gòu)能輕松地實現(xiàn)信息橫穿而不做任何改變。但這樣的結(jié)構(gòu)無法實現(xiàn)信息的添加和刪除操作,從而引入了“門”結(jié)構(gòu),“門”結(jié)構(gòu)如下頁圖4所示。“門”結(jié)構(gòu)的引入實現(xiàn)了對信息的自主選取通行,而這一功能的實現(xiàn)主要依靠一個sigmoid神經(jīng)層和一個逐點相乘之間的相互操作。

圖3 傳送帶結(jié)構(gòu)

圖4 門結(jié)構(gòu)(sigmoid層)
sigmoid神經(jīng)層輸出的都是實數(shù),而且都處在0和1之間,0和1表示允許信息通過的占比,其中0表示“不允許任何信息通過”,1表示“允許所有信息通過”。
(1)遺忘門
在信息通過cell時,遺忘門(forget gate layer)可以決定哪些信息應(yīng)該被遺棄。A結(jié)構(gòu)中,輸入的ht-1和xt就是通過cell的信息,而輸出的信息為一個處在0和1之間的實數(shù),實數(shù)和cell狀態(tài)中的Ct-1一樣,表示讓Ct-1的各信息通過的占比。遺忘門結(jié)構(gòu)如圖5所示。

圖5 遺忘門(forget gates)
(2)傳入門
傳入門(input gate layer)用于決定哪些信息需要加入到cell狀態(tài)中,這個過程分兩個步驟,首先,由sigmoid 層決定更新的信息有哪些,而tanh層則會生成一個向量,此向量表示用于更新的備選內(nèi)容Ct。其次,會將第一步驟中的兩部分信息聯(lián)合起來,對整個cell的狀態(tài)進(jìn)行更新。傳入門結(jié)構(gòu)及更新cell狀態(tài)分別如下頁圖6、圖7所示。

圖6 傳入門(input gates)

圖7 更新 cell 狀態(tài)
(3)輸出門
輸出門(output gate layer)用于決定最終輸出什么樣的信息,這里輸出的信息主要由cell狀態(tài)中的Ct決定,但又不全是Ct,還需要經(jīng)過過濾的處理。這個過程也分為兩個步驟,首先,由sigmoid層決定哪些信息應(yīng)該被輸出,而此時的tanh層會對Ct進(jìn)行過濾處理,將Ct的值歸到-1和1之間。其次,再將第一步中sigmoid層的輸出和tanh層的輸出進(jìn)行權(quán)重相乘,從而得到最終的輸出結(jié)果。輸出門結(jié)構(gòu)如圖8所示。

圖8 cell 輸出
本文采用LSTM算法處理新聞分類的過程主要分成數(shù)據(jù)預(yù)處理(數(shù)據(jù)爬取和數(shù)據(jù)清洗),特征提取,模型訓(xùn)練,測試結(jié)果總共4個階段,具體如圖9所示。

圖9 LSTM算法處理流程
使用Python語言從“中國新聞網(wǎng)”上爬取新聞標(biāo)題,數(shù)據(jù)規(guī)模達(dá)兩百多萬,其中,爬取的新聞標(biāo)題附帶有新聞類別標(biāo)簽,需要對爬取的所有原始數(shù)據(jù)進(jìn)行轉(zhuǎn)碼,刪除數(shù)字和空字符處理,并使用jieba分詞器分詞,去除標(biāo)點符號,刪除停用詞。jieba分詞有全模式j(luò)ieba.cut和搜索引擎模式j(luò)ieba.cut_for_search。
輸入:原始新聞標(biāo)題
輸出:序列分詞文件
如輸入:seg_list = jieba.cut_for_search(“清華大學(xué)計算機系冠名教授基金捐贈儀式舉行”,cut_all=True)
輸出:清華,大學(xué),計算機,系,冠名,教授,基金,捐贈,儀式,舉行
處理過程中由于新聞標(biāo)題分類數(shù)據(jù)分布不均衡,會在一定程度上影響模型的準(zhǔn)確度,為了達(dá)到數(shù)據(jù)均衡,筆者剔除掉了數(shù)據(jù)量少于3萬條的類別和一些明顯沒有區(qū)分度的新聞類別,處理過后的數(shù)據(jù)集總共包含20個分類類別的220萬條新聞的標(biāo)題和對應(yīng)的分類。其中20種分類如下:互聯(lián)網(wǎng)、體育、健康、人文、軍事、動物、歷史、娛樂、房產(chǎn)、國內(nèi)、教育、數(shù)碼、旅游、時尚、汽車、游戲、社會、科技、藝術(shù)、財經(jīng)。
本階段對分詞后的新聞列表進(jìn)行特征提取,由于本文使用的是LSTM神經(jīng)網(wǎng)絡(luò)算法,首先將新聞列表數(shù)據(jù)映射為LSTM算法能處理的數(shù)據(jù),并根據(jù)特征提取算法選出特征向量,本實驗采用keras的Tokenizer來實現(xiàn),具體步驟為:
Step1:將新聞標(biāo)題處理成單字索引序列,字與序號之間的對應(yīng)關(guān)系靠字的索引表。
Step2:所有分類標(biāo)簽使用數(shù)字從1開始映射,生成一個分類標(biāo)簽映射的列表,通過與數(shù)字映射生成一個字典,分別是{分類名稱:數(shù)字}方便映射和查找。
Step3:將標(biāo)題直接進(jìn)行單字轉(zhuǎn)換映射,生成基于字的映射字典,得到一個6820個字的字典。
Step4:將字映射為數(shù)字。
Step5:預(yù)訓(xùn)練word2vec向量。
word2vec使用分布式詞向量的表示方式,通過訓(xùn)練模型將每個詞映射成K個維度的實數(shù)向量后,再通過詞與詞之間的距離來判斷它們之間的語義相似度[6]。word2vec有CBOW模型(Continuous Bag-of-Word Model)和Skip-gram模型(Continuous Skip-gram Model)兩個重要的模型,本文采用CBOW模型預(yù)訓(xùn)練詞向量,CBOW模型包含輸入層,輸出層和投影層三層結(jié)構(gòu),在已知wt上下文wt-2,wt-1,wt+1,wt+2 的基礎(chǔ)上預(yù)測當(dāng)前詞wt,CBOW 模型處理結(jié)構(gòu)如圖10所示。

圖10 CBOW模型結(jié)構(gòu)圖
在word2vec中,使用層次Softmax函數(shù)和負(fù)采樣(Negative Sampling)來近似計算,目的是減少訓(xùn)練的時間,提高計算速度并改善訓(xùn)練后的詞向量質(zhì)量。NEG與層次Softmax函數(shù)相比,不再使用復(fù)雜的哈夫曼樹,而是采用隨機負(fù)采樣的方法,降低負(fù)樣本的概率同時增大正樣本的概率。在CBOW模型中,已知詞w的上下文為Context(w),需要預(yù)測詞w,因此對于給定的Context(w),詞w就是一個正樣本,其他詞就是負(fù)樣本,對于一個給定的樣本(Context(w),w),盡可能使它最大化。

其中,NEG(w)表示負(fù)樣本集合,正樣本標(biāo)簽為1,負(fù)樣本標(biāo)簽為0,其概率計算公式如下:
本實驗先利用特定語料數(shù)據(jù)訓(xùn)練后的word2vec詞向量做文本分類任務(wù),在一定程度上能提升了詞向量的表達(dá)能力。再使用Scikit-learn將數(shù)據(jù)按7∶1∶2的比例分為訓(xùn)練數(shù)據(jù)、驗證數(shù)據(jù)和測試數(shù)據(jù)。
在新聞樣本訓(xùn)練階段,根據(jù)LSTM算法思想搭建LSTM模型,將文本處理成向量的 Embedding 層,這樣每個新聞標(biāo)題被處理成一個word_dict x 256 的二維向量,其中word_dict為每條新聞標(biāo)題的長度,256為每一行的長度,整體代表這個詞在空間中的詞向量。操作流程如下:
Step1:LSTM層輸出1維長度為256的向量。
Step2:Dropout層設(shè)置初始參數(shù)為0.5,避免產(chǎn)生過擬合現(xiàn)象。
Step3:Dense(全連接層)將向量長度收縮到20,對應(yīng)上文提到的20種新聞分類。
LSTM訓(xùn)練模型結(jié)構(gòu)如圖11所示。

圖11 LSTM訓(xùn)練模型結(jié)構(gòu)
由于訓(xùn)練的結(jié)果為多分類,所以同步使用激活函數(shù)softmax,損失函數(shù)cross-entropy,優(yōu)化器adam,訓(xùn)練過程中的batch_size設(shè)置為128,epoch設(shè)置為80,實際訓(xùn)練一個輪次大約10分鐘,10個輪次后損失變化慢慢變小,最終準(zhǔn)確率約為84%,實驗結(jié)果如下頁圖12所示。

圖12 LSTM模型訓(xùn)練loss-epoch關(guān)系
為了驗證訓(xùn)練后的LSTM模型對新數(shù)據(jù)分類的準(zhǔn)確度,本文采用準(zhǔn)確率(Accuracy)作為評價分類模型的指標(biāo),將其中一個類別作為分類正類別,其余作為分類負(fù)類別,公式如下:
Accuracy=(TP+TN)/(P+N)
其中TP為被正確地劃分為正類別標(biāo)簽的新聞數(shù)量,TN為被正確地劃分負(fù)類別的新聞數(shù)量,P表示實際為正類別的新聞樣本數(shù)量,N表示實際為負(fù)類別的新聞樣本數(shù)量。
輸入:測試訓(xùn)練集
輸出:分類結(jié)果
測試結(jié)果如圖13所示。

圖13 測試訓(xùn)練結(jié)果圖
可見,通過輸入測試數(shù)據(jù),輸出結(jié)果的準(zhǔn)確率能達(dá)到86%。
為了驗證LSTM算法的準(zhǔn)確度及效率,本文搭建了一個hadoop集群,由1個主節(jié)點master和4個從節(jié)點slave構(gòu)成,硬件配置為Intel(R)Xeon(R)CPU E3-1270 V2 @ 3.50GHz,外加一塊NVIDIA GTX1080 的GPU,內(nèi)存為32GB,系統(tǒng)為Ubuntu 16.04,實驗數(shù)據(jù)集來自Python爬取的兩百多萬新聞標(biāo)題,實驗過程將數(shù)據(jù)按7∶1∶2的比例分為訓(xùn)練數(shù)據(jù)集、驗證數(shù)據(jù)集和測試數(shù)據(jù)集。
根據(jù)新聞標(biāo)題對新聞進(jìn)行分類的結(jié)果如表2所示,由表可知,軍事和體育類的新聞準(zhǔn)確率能達(dá)到98%以上,互聯(lián)網(wǎng)類新聞的準(zhǔn)確率相對較低,才87.5%,由于體育類和軍事類相較于其他類別而言,訓(xùn)練數(shù)據(jù)較多。可見,不同的分類,預(yù)訓(xùn)練的規(guī)模不同最終的準(zhǔn)確率也不同,由此可知,想要讓LSTM算法模型的優(yōu)勢得到充分發(fā)揮,用于訓(xùn)練的數(shù)據(jù)規(guī)模必須得到保證。
表2 新聞分類矩陣

新聞標(biāo)題分類一準(zhǔn)確率分類二準(zhǔn)確率分類三準(zhǔn)確率東風(fēng)-41已達(dá)服役標(biāo)準(zhǔn)躋身世界最先進(jìn)導(dǎo)彈行列軍事98.10%國內(nèi)1.62%科技0.24%NBA總決賽落幕勇士橫掃騎士成功衛(wèi)冕體育99.8%汽車0.06%財經(jīng)0.04%IBM幫美政府造目前最快超級計算機互聯(lián)網(wǎng)87.50%科技8.51%財經(jīng)1.21%
本文對LSTM算法進(jìn)行了簡要的論述和分析,并利用TensorFlow平臺搭建了基于LSTM神經(jīng)網(wǎng)絡(luò)的新聞分類算法。實驗結(jié)果表明,對海量的新聞數(shù)據(jù)信息使用LSTM神經(jīng)網(wǎng)絡(luò)新聞分類算法是一種有效的分析處理方法,模型準(zhǔn)確度高且具有良好的擴(kuò)展性,但由于實驗室中實驗器材以及實驗環(huán)境方面的限制,本文僅利用有限的幾臺服務(wù)器搭建了實驗環(huán)境,語料庫數(shù)據(jù)量才兩百多萬,數(shù)據(jù)規(guī)模相對較小,此后,筆者將適當(dāng)?shù)奶砑蛹汗?jié)點數(shù)和擴(kuò)大數(shù)據(jù)規(guī)模,加大對分類模型的訓(xùn)練,為本文算法的分類效果提供更多的論據(jù)。