朱肖穎,賴紹輝,陸科達
(1.2.3.梧州學院 大數(shù)據(jù)與軟件工程學院,廣西 梧州 543002)
隨著經(jīng)濟的發(fā)展,互聯(lián)網(wǎng)成為了人們生活不可缺少的一部分,方便了人們生活的方方面面。但互聯(lián)網(wǎng)上的新聞信息魚龍混雜,且每天都以爆炸式的趨勢在增長,用戶想大致瀏覽新聞信息非常困難,想在大量的信息中精準地獲取自己感興趣的信息更是難上加難,因此迫切需要對互聯(lián)網(wǎng)新聞信息進行有效的分類整理。文本分類技術是實現(xiàn)信息重組、文本數(shù)據(jù)挖掘的基礎,可以在很大程度上解決互聯(lián)網(wǎng)新聞信息雜亂無章的問題,幫助用戶快速準確地定位所需信息,是當下處理大規(guī)模數(shù)據(jù)信息的重要手段。針對大規(guī)模新聞數(shù)據(jù)信息整理的問題,不少學者將文本分類技術引入其中,如張志平采用“中文新聞信息分類與代碼”文本分類體系[1];徐保鑫等將樸素貝葉斯算法應用到我國的新聞分類中[2];藍雯飛等的研究采用卷積神經(jīng)網(wǎng)絡新聞分類體系[3]。但張志平等的研究只是針對小規(guī)模的數(shù)據(jù),在處理大規(guī)模數(shù)據(jù)的過程中算法模型需要耗費大量的時間;徐保鑫等使用的樸素貝葉斯算法屬于傳統(tǒng)機器學習分類算法,在訓練模型的過程中需要手動提取文本特征,處理效率較差;藍雯飛等采用的CNN算法由于自身的卷積功能對文本的整體結構有一個統(tǒng)攬的能力,所以在短句子配對上占有一定的優(yōu)勢,而在處理長句子時,卷積神經(jīng)網(wǎng)絡只能處理窗口內的信息,相鄰窗口信息的融合需要借助后一層卷積層,這加大了對卷積窗口和移動的步長參數(shù)的依賴,即存在調參難度大的問題。因此本文利用TensorFlow平臺搭建了基于LSTM循環(huán)神經(jīng)網(wǎng)絡的新聞分類算法,從時間上、質量上對新聞分類進行了優(yōu)化。
LSTM(Long Short Term Memory Network,長短期記憶網(wǎng)絡)算法是一種能長久儲存序列信息的循環(huán)神經(jīng)網(wǎng)絡,在語言分類模型、機器翻譯、語音識別等領域都得到了廣泛的應用[4]。LSTM適合處理和預測時間序列中延遲和間隔相對較長的重要事件,可以通過刻意的設計來避免長期依賴問題。實踐證明,記住長期的信息是LSTM算法自身具備的能力,不需要付出很大的代價。
LSTM是一種特殊的RNN(Recurrent neural network,循環(huán)神經(jīng)網(wǎng)絡),RNN作為神經(jīng)網(wǎng)絡的總稱,常用于處理一系列的序列數(shù)據(jù),是深度學習中序列處理的關鍵技術[5]。目前已在語音識別、語言處理、機器翻譯、視頻識別等領域取得突破性的進展,然而梯度消失現(xiàn)象制約著RNN的實際應用。為了解決該問題,研究人員提出了許多解決方法,其中最為成功且應用最為廣泛的就是加入門限機制的RNN,而LSTM就是門限RNN中使用最廣泛的一個。LSTM的特別之處在于通過新增輸入門、輸出門和遺忘門3個門限來改變自循環(huán)的權重,通過這種方式,只要模型參數(shù)固定不變,就可以保證不同時刻的積分尺度動態(tài)改變,從而有效地避免梯度消失/梯度膨脹的問題。
由于LSTM由RNN演變而來,在介紹LSTM算法模型的框架結構之前,先來介紹一下RNN的模型結構,方便大家理解。RNN的算法結構如圖1所示。
圖1 RNN的算法結構
由圖1可知,傳統(tǒng)RNN中每一步的隱藏單元只是執(zhí)行一個簡單的tanh操作。
LSTM的算法結構如圖2所示。
圖2 LSTM的算法結構
圖2中各標記的含義如下頁表1所示。
表1 LSTM算法結構標記含義表
標記英文名中文名Neural Network Layer神經(jīng)網(wǎng)絡層Pointwise Operation逐點操作Vector Transfer傳輸向量Concatenate向量的連接Copy復制
由圖2可知,LSTM的網(wǎng)絡結構大體上和傳統(tǒng)RNN相似,重復結構A看起來也比RNN要復雜一些,但分開解釋就變得很簡單了。
LSTM的關鍵之處在于cell的狀態(tài)和橫穿cell的水平線,cell狀態(tài)的傳輸類似于一個簡單的傳送帶,傳送帶結構如圖3所示。信息橫穿整個cell的過程中只做少量的線性操作,即這種結構能輕松地實現(xiàn)信息橫穿而不做任何改變。但這樣的結構無法實現(xiàn)信息的添加和刪除操作,從而引入了“門”結構,“門”結構如下頁圖4所示?!伴T”結構的引入實現(xiàn)了對信息的自主選取通行,而這一功能的實現(xiàn)主要依靠一個sigmoid神經(jīng)層和一個逐點相乘之間的相互操作。
圖3 傳送帶結構
圖4 門結構(sigmoid層)
sigmoid神經(jīng)層輸出的都是實數(shù),而且都處在0和1之間,0和1表示允許信息通過的占比,其中0表示“不允許任何信息通過”,1表示“允許所有信息通過”。
(1)遺忘門
在信息通過cell時,遺忘門(forget gate layer)可以決定哪些信息應該被遺棄。A結構中,輸入的ht-1和xt就是通過cell的信息,而輸出的信息為一個處在0和1之間的實數(shù),實數(shù)和cell狀態(tài)中的Ct-1一樣,表示讓Ct-1的各信息通過的占比。遺忘門結構如圖5所示。
圖5 遺忘門(forget gates)
(2)傳入門
傳入門(input gate layer)用于決定哪些信息需要加入到cell狀態(tài)中,這個過程分兩個步驟,首先,由sigmoid 層決定更新的信息有哪些,而tanh層則會生成一個向量,此向量表示用于更新的備選內容Ct。其次,會將第一步驟中的兩部分信息聯(lián)合起來,對整個cell的狀態(tài)進行更新。傳入門結構及更新cell狀態(tài)分別如下頁圖6、圖7所示。
圖6 傳入門(input gates)
圖7 更新 cell 狀態(tài)
(3)輸出門
輸出門(output gate layer)用于決定最終輸出什么樣的信息,這里輸出的信息主要由cell狀態(tài)中的Ct決定,但又不全是Ct,還需要經(jīng)過過濾的處理。這個過程也分為兩個步驟,首先,由sigmoid層決定哪些信息應該被輸出,而此時的tanh層會對Ct進行過濾處理,將Ct的值歸到-1和1之間。其次,再將第一步中sigmoid層的輸出和tanh層的輸出進行權重相乘,從而得到最終的輸出結果。輸出門結構如圖8所示。
圖8 cell 輸出
本文采用LSTM算法處理新聞分類的過程主要分成數(shù)據(jù)預處理(數(shù)據(jù)爬取和數(shù)據(jù)清洗),特征提取,模型訓練,測試結果總共4個階段,具體如圖9所示。
圖9 LSTM算法處理流程
使用Python語言從“中國新聞網(wǎng)”上爬取新聞標題,數(shù)據(jù)規(guī)模達兩百多萬,其中,爬取的新聞標題附帶有新聞類別標簽,需要對爬取的所有原始數(shù)據(jù)進行轉碼,刪除數(shù)字和空字符處理,并使用jieba分詞器分詞,去除標點符號,刪除停用詞。jieba分詞有全模式jieba.cut和搜索引擎模式jieba.cut_for_search。
輸入:原始新聞標題
輸出:序列分詞文件
如輸入:seg_list = jieba.cut_for_search(“清華大學計算機系冠名教授基金捐贈儀式舉行”,cut_all=True)
輸出:清華,大學,計算機,系,冠名,教授,基金,捐贈,儀式,舉行
處理過程中由于新聞標題分類數(shù)據(jù)分布不均衡,會在一定程度上影響模型的準確度,為了達到數(shù)據(jù)均衡,筆者剔除掉了數(shù)據(jù)量少于3萬條的類別和一些明顯沒有區(qū)分度的新聞類別,處理過后的數(shù)據(jù)集總共包含20個分類類別的220萬條新聞的標題和對應的分類。其中20種分類如下:互聯(lián)網(wǎng)、體育、健康、人文、軍事、動物、歷史、娛樂、房產(chǎn)、國內、教育、數(shù)碼、旅游、時尚、汽車、游戲、社會、科技、藝術、財經(jīng)。
本階段對分詞后的新聞列表進行特征提取,由于本文使用的是LSTM神經(jīng)網(wǎng)絡算法,首先將新聞列表數(shù)據(jù)映射為LSTM算法能處理的數(shù)據(jù),并根據(jù)特征提取算法選出特征向量,本實驗采用keras的Tokenizer來實現(xiàn),具體步驟為:
Step1:將新聞標題處理成單字索引序列,字與序號之間的對應關系靠字的索引表。
Step2:所有分類標簽使用數(shù)字從1開始映射,生成一個分類標簽映射的列表,通過與數(shù)字映射生成一個字典,分別是{分類名稱:數(shù)字}方便映射和查找。
Step3:將標題直接進行單字轉換映射,生成基于字的映射字典,得到一個6820個字的字典。
Step4:將字映射為數(shù)字。
Step5:預訓練word2vec向量。
word2vec使用分布式詞向量的表示方式,通過訓練模型將每個詞映射成K個維度的實數(shù)向量后,再通過詞與詞之間的距離來判斷它們之間的語義相似度[6]。word2vec有CBOW模型(Continuous Bag-of-Word Model)和Skip-gram模型(Continuous Skip-gram Model)兩個重要的模型,本文采用CBOW模型預訓練詞向量,CBOW模型包含輸入層,輸出層和投影層三層結構,在已知wt上下文wt-2,wt-1,wt+1,wt+2 的基礎上預測當前詞wt,CBOW 模型處理結構如圖10所示。
圖10 CBOW模型結構圖
在word2vec中,使用層次Softmax函數(shù)和負采樣(Negative Sampling)來近似計算,目的是減少訓練的時間,提高計算速度并改善訓練后的詞向量質量。NEG與層次Softmax函數(shù)相比,不再使用復雜的哈夫曼樹,而是采用隨機負采樣的方法,降低負樣本的概率同時增大正樣本的概率。在CBOW模型中,已知詞w的上下文為Context(w),需要預測詞w,因此對于給定的Context(w),詞w就是一個正樣本,其他詞就是負樣本,對于一個給定的樣本(Context(w),w),盡可能使它最大化。
其中,NEG(w)表示負樣本集合,正樣本標簽為1,負樣本標簽為0,其概率計算公式如下:
本實驗先利用特定語料數(shù)據(jù)訓練后的word2vec詞向量做文本分類任務,在一定程度上能提升了詞向量的表達能力。再使用Scikit-learn將數(shù)據(jù)按7∶1∶2的比例分為訓練數(shù)據(jù)、驗證數(shù)據(jù)和測試數(shù)據(jù)。
在新聞樣本訓練階段,根據(jù)LSTM算法思想搭建LSTM模型,將文本處理成向量的 Embedding 層,這樣每個新聞標題被處理成一個word_dict x 256 的二維向量,其中word_dict為每條新聞標題的長度,256為每一行的長度,整體代表這個詞在空間中的詞向量。操作流程如下:
Step1:LSTM層輸出1維長度為256的向量。
Step2:Dropout層設置初始參數(shù)為0.5,避免產(chǎn)生過擬合現(xiàn)象。
Step3:Dense(全連接層)將向量長度收縮到20,對應上文提到的20種新聞分類。
LSTM訓練模型結構如圖11所示。
圖11 LSTM訓練模型結構
由于訓練的結果為多分類,所以同步使用激活函數(shù)softmax,損失函數(shù)cross-entropy,優(yōu)化器adam,訓練過程中的batch_size設置為128,epoch設置為80,實際訓練一個輪次大約10分鐘,10個輪次后損失變化慢慢變小,最終準確率約為84%,實驗結果如下頁圖12所示。
圖12 LSTM模型訓練loss-epoch關系
為了驗證訓練后的LSTM模型對新數(shù)據(jù)分類的準確度,本文采用準確率(Accuracy)作為評價分類模型的指標,將其中一個類別作為分類正類別,其余作為分類負類別,公式如下:
Accuracy=(TP+TN)/(P+N)
其中TP為被正確地劃分為正類別標簽的新聞數(shù)量,TN為被正確地劃分負類別的新聞數(shù)量,P表示實際為正類別的新聞樣本數(shù)量,N表示實際為負類別的新聞樣本數(shù)量。
輸入:測試訓練集
輸出:分類結果
測試結果如圖13所示。
圖13 測試訓練結果圖
可見,通過輸入測試數(shù)據(jù),輸出結果的準確率能達到86%。
為了驗證LSTM算法的準確度及效率,本文搭建了一個hadoop集群,由1個主節(jié)點master和4個從節(jié)點slave構成,硬件配置為Intel(R)Xeon(R)CPU E3-1270 V2 @ 3.50GHz,外加一塊NVIDIA GTX1080 的GPU,內存為32GB,系統(tǒng)為Ubuntu 16.04,實驗數(shù)據(jù)集來自Python爬取的兩百多萬新聞標題,實驗過程將數(shù)據(jù)按7∶1∶2的比例分為訓練數(shù)據(jù)集、驗證數(shù)據(jù)集和測試數(shù)據(jù)集。
根據(jù)新聞標題對新聞進行分類的結果如表2所示,由表可知,軍事和體育類的新聞準確率能達到98%以上,互聯(lián)網(wǎng)類新聞的準確率相對較低,才87.5%,由于體育類和軍事類相較于其他類別而言,訓練數(shù)據(jù)較多??梢?,不同的分類,預訓練的規(guī)模不同最終的準確率也不同,由此可知,想要讓LSTM算法模型的優(yōu)勢得到充分發(fā)揮,用于訓練的數(shù)據(jù)規(guī)模必須得到保證。
表2 新聞分類矩陣
新聞標題分類一準確率分類二準確率分類三準確率東風-41已達服役標準躋身世界最先進導彈行列軍事98.10%國內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算法進行了簡要的論述和分析,并利用TensorFlow平臺搭建了基于LSTM神經(jīng)網(wǎng)絡的新聞分類算法。實驗結果表明,對海量的新聞數(shù)據(jù)信息使用LSTM神經(jīng)網(wǎng)絡新聞分類算法是一種有效的分析處理方法,模型準確度高且具有良好的擴展性,但由于實驗室中實驗器材以及實驗環(huán)境方面的限制,本文僅利用有限的幾臺服務器搭建了實驗環(huán)境,語料庫數(shù)據(jù)量才兩百多萬,數(shù)據(jù)規(guī)模相對較小,此后,筆者將適當?shù)奶砑蛹汗?jié)點數(shù)和擴大數(shù)據(jù)規(guī)模,加大對分類模型的訓練,為本文算法的分類效果提供更多的論據(jù)。