馮 勇, 屈渤浩, 徐紅艷, 王嶸冰, 張永剛
1.遼寧大學信息學院,沈陽110036
2.吉林大學符號計算與知識工程教育部重點實驗室,長春130012
隨著Web2.0 的興起以及移動智能設備的發(fā)展,用戶由傳統(tǒng)的信息消費者轉變?yōu)樾畔⒐┙o者.以微博、微博評論、電商評論等為代表的中文短文本已成為網絡用戶自由表達主觀興趣、觀點和情感的主要方式.開展中文短文本分類方法研究對用戶興趣挖掘、熱點話題發(fā)現、電商商品質量檢測以及個性化推薦等領域具有重要價值.
目前,針對短文本分類方法的研究大多基于向量空間模型(vector space model,VSM)[1]、連續(xù)詞袋模型(continuous bag-of-words,CBoW)[2]、語義信息等.如:文獻[3]在使用Word2Vec 的基礎上引入TF-IDF(term frequency-inverse document frequency)對詞向量進行加權,以實現加權的分類模型;文獻[4-5]借助維基百科知識庫對短文本的特征進行擴展,以輔助短文本分類;文獻[6]采用正則化權值的方式對KNN(K-nearest neighbor)進行改進,并結合粒子群優(yōu)化(particle swarm optimization,PSO)算法提高了計算效率和文本分類的效率.文獻[7]提出的深度學習框架可用于提取結構化文本的高級特征,將該特征與隱含狄利克雷分布(latent Dirichlet allocation,LDA)獲取的主題特征相結合能產生更好的分類效果;文獻[8]基于決策樹算法對文本進行分類,并對傳統(tǒng)機器學習方法進行了改進以提升文本分類的精確率和效率.
現有的文本分類方法取得了較為顯著的應用效果,但應用于短文本分類環(huán)境時仍存在不足.短文本相比于長文本具有稀疏性、不規(guī)范等特點,因而使用傳統(tǒng)向量空間模型時,短文本的稀疏性使得分類不夠準確.為了彌補上述不足,通常借助外部知識庫對短文本進行特征補充.但因外部知識庫語料龐大,且包含的領域以及主題分布廣泛,導致計算開銷大,進而影響算法的性能.另外,外部知識庫詞匯更新速度慢,不適合互聯(lián)網環(huán)境下對高速變化的中文短文本進行特征補充.
本文提出一種融合TF-IDF 和LDA 的中文FastText 短文本分類方法(簡稱TL-FastText).該方法首先在FastText 的基礎上對n 元語法模型(n-gram)處理后的輸入詞序列進行TFIDF 計算,并篩選高區(qū)分度的詞條構建保留詞典[9];然后使用LDA 模型對語料庫進行主題分析,將詞典中的詞與LDA 結果進行對比,如果有相同的詞,則將LDA 結果中含有該詞的主題詞序列加入保留詞典,使模型在進行輸入詞序列向量平均值計算時向區(qū)分度高的詞條偏移,從而使其更適用于中文短文本分類環(huán)境,實現快速準確地對中文短文本進行分類的目標.
目前,針對中文短文本的分類大多采用基于深度學習的方法,但深度學習的模型訓練時間過長,導致算法無法實現高速迭代.FastText 分類模型雖具有訓練速度快、分類精度高的優(yōu)勢,但FastText 分類模型主要是根據英文短文本的特點設計實現的.本文將結合中文短文本的特點對FastText 分類模型進行改進,使之能適用于中文短文本分類環(huán)境.
TF-IDF[10]是用于評估詞條對于文本文件重要程度的經典統(tǒng)計方法,傾向于過濾去除區(qū)分度低的高頻詞,保留重要區(qū)分度高的低頻詞.詞頻TF 表示詞條在文檔中出現的頻率,用fi,j表示,其計算公式為
式中,ni,j為詞條ti在文本dj中出現的次數,分母表示文本dj中所有詞條出現的次數總和.
IDF 是詞條普遍性的度量,表示詞條的類別區(qū)分能力,用qi表示,其計算公式為
式中,|D|為文本總數,分母為包含詞條ti的文本數量.
TF-IDF 值由fi,j值和qi值相乘得到,用si,j表示,其計算公式為
如果某一文本內的高頻詞條在文本集合中呈現低頻率,該詞條便可在TF-IDF 值上產生高權重,從而將其挑選出來作為區(qū)分度較高的詞條.
LDA 主題概率生成模型[11]是一種非監(jiān)督學習的機器學習方法.該模型分為詞條、主題和文檔3 層結構,用以獲取大規(guī)模文檔中潛在的主題分布信息.對于一篇文檔,LDA 采用詞袋模型將文本表示為詞頻向量,模型中詞條出現的位置及先后順序與最終得出的主題分布無關.LDA 是在PLSA 模型的基礎上加貝葉斯框架得到的,并且加入Dirichlet先驗分布影響.LDA 模型結構如圖1所示.
圖1 LDA 模型結構Figure1 LDA model structure
圖1中,θm表示文檔m的主題分布,a表示θm的先驗分布,zm,n表示從θm中取樣生成文檔m的第n個詞的主題,φzm,n表示詞分布,β表示詞分布的先驗分布,wm,n表示最終生成的第m篇文章的第n個詞語,Nm表示文檔m中的詞條總數,共有M篇文檔.
LDA 中所有變量的聯(lián)合分布計算公式為
式中,p(wm,n|zm,n)為在主題下采樣詞條的概率.在第m篇文檔中各詞條的概率分布公式為
本文LDA 的推導采用了Gibbs 采樣法,Gibbs 采樣是馬爾科夫蒙特卡羅理論中用來獲取一系列近似等于指定多維概率分布觀察樣本的算法[11-12].
FastText[13-14]是2016年由Facebook 公司推出的一款基于Word2Vec 的快速而高效的文本分類器.該分類器分為輸入層、隱藏層和輸出層:在輸入層將輸入的文本詞語轉換為向量作為輸入,并加入了n-gram 特征,使得語義信息更加完整;在輸出層采用樹形的層次Softmax(Hierarchical Softmax)[15]來代替扁平化的標準Softmax,大大提高了計算效率.該模型結構如圖2所示.
圖2 FastText 模型框架Figure2 Frame of FastText model
圖2中,FastText 模型的輸入(w1,w2,··· ,wn)是一個詞序列或一段文本,隱藏層采用單層神經網絡學習,輸出的是這個詞序列或文本屬于不同類別標簽的概率.
FastText 分類器中的n-gram 處理對英文文本具有較好的學習效果,例如從“tabletennis”中可以學習到“tennis”是運動類文本,從“friendly”中學習到“friend”.同時英文單詞中包含著大量的“un”、“in”等英文前綴,這些前綴對英文文本的意思表達非常重要,且使用n-gram 處理時可以學習到這些特征.若將FastText 分類器應用到中文文本中,則不但學習效果不如英文環(huán)境,而且會產生大量的冗余詞條.在處理英文文本后雖然也會出現大量的冗余詞條,但英文環(huán)境可以學習到更多的特征.中文僅在特定的一些詞語中可以學習到特征,因而需要對n-gram 處理后的詞序列向量進行篩選,在構建保留詞典時將無意義的詞條和高頻低區(qū)分度的詞條過濾掉.
TF-IDF 算法適用于過濾去除高頻區(qū)分度低的詞,保留重要的且區(qū)分度高的低頻詞.所以本文使用TF-IDF 算法來計算文本中各詞條的TF-IDF 值,將各詞條按照TF-IDF 值進行排序.通過多次實驗得到合適的閾值,文中閾值取值為0.3,選取TF-IDF 值大于閾值的詞條構建保留詞典.
LDA 主題模型可以挖掘出文檔的主題,本文使用LDA 主題模型對中文短文本構成的語料庫整體進行主題挖掘,得出的主題詞分布都是與主題有關的詞條,具有較高的區(qū)分度.因此,使用LDA 主題挖掘的結果對保留詞典進行特征補充可以取得更好的分類效果.
經典的FastText 由輸入層、隱藏層和輸出層組成.在本文TL-FastText 模型的輸入層中添加計算模型,即先使用TF-IDF 算法對n-gram 處理后的輸入詞序列進行權重計算,得出保留詞典;再由LDA 主題模型對語料庫整體進行主題分析進而得出主題詞序列;最后將詞典中的詞與LDA 結果進行對比,如果有相同的詞,則將LDA 結果中含有該詞的主題詞序列加入保留詞典中,完成保留詞典的重構,并將其送入隱藏層計算.
由于n-gram 會產生大量的冗余詞條,因此需要將無意義的詞條和高頻低區(qū)分度的詞條過濾掉.同時為了得到更好的學習效果,對n-gram 過濾后的保留詞序列進行特征補充.補充的方式如下:使用LDA 對語料庫生成的文檔進行主題分析得出主題詞序列,然后從中選擇符合匹配條件的主題詞序列加入保留詞典.TL-FastText 模型結構如圖3所示:
圖3 TL-FastText 分類方法框架Figure3 Frame of TL-FastText text classification method
圖3中,(w1,w2,··· ,wn)是一個詞序列或一段文本,對其進行n-gram 處理獲得長度為N的字節(jié)片段序列.對序列進行TF-IDF 計算,篩選低頻高區(qū)分度的詞構成保留詞典.將詞典中包含的詞條與LDA 結果進行對比,如果匹配到相同的詞條,則將LDA 結果中含有該詞條的主題詞序列加入到保留詞典中,作為FastText 模型的輸入.
FastText 模型使用輸入的詞序列來預測類別標簽概率,將計算所得的詞序列向量平均值作為文本表征向量.因此,加入LDA 主題詞序列后的詞序列均值將會向主題偏移,從而獲得更好的分類效果.具體公式為
式中,wo1,wo2,··· ,wo2m表示輸入的詞序列,詞典中的索引共有2m個詞條,Lc表示待預測的標簽,Vo1,··· ,Vo2m表示輸入詞的詞語向量,(Vo1+···+Vo2m)/2m為輸入詞向量的平均值,Uc為帶預測標簽的向量,V為文檔詞條總數.
模型層次之間的映射關系描述如下:將輸入層中的詞序列構成特征向量,再將特征向量通過線性變換映射到隱藏層.該隱藏層通過求解最大似然函數后進行層次Softmax 計算,即根據每個類別的權重和模型參數構建并輸出哈夫曼樹.在構建哈夫曼樹的過程中,每個葉子節(jié)點代表一個類別標簽,在每一個非葉子節(jié)點處都需要做出走向左右分支的選擇,走向節(jié)點左、右孩子的概率用邏輯回歸公式表示,正類別概率σ1如式(7)所示,負類別概率σ2如式(8)所示:
式中,θ為哈夫曼樹中間節(jié)點的參數.每個類別標簽在構造的哈夫曼樹中都會有一條路徑,對于訓練樣本的特征向量Xi和對應的類別標簽Yi在哈夫曼樹中會有對應的路徑.而預測樣本Xi所屬的類別,即為計算樣本Xi屬于所對應的類別標簽Yi的概率的計算公式為
將式(7)和(8)代入式(9)得
TL-FastText 分類方法的具體步驟如下:
步驟1按照時間窗口大小選取窗口內對應的數據集d,對數據集d進行分詞以及去除停用詞等預處理操作,將LDA 主題分析應用到預處理后的數據集上,從而得到該數據集的主題詞分布T.按照FastText 模型訓練格式準備訓練數據,在文本的結尾加標簽_label_.
步驟2對數據集d中每條短文本進行n-gram 處理生成數據集g;逐條計算g中每個數據項的TF-IDF 值,篩選高區(qū)分度的詞條構建每條短文本的保留詞典D.
步驟3對保留詞典D中的詞與LDA 主題分析的結果T進行對比,如果有相同的詞,則將結果中含有該詞的主題詞序列加入保留詞典D中,將保留詞典D推入隱含層進行計算.
步驟4本文處理的是文本分類問題,模型輸出模式選擇supervised 方式,選擇模型優(yōu)化函數loss 和梯度下降學習率λ,采用隨機梯度下降算法得到損失函數的梯度grad.
步驟5根據步驟4 設置的參數,輸入的數據對為(D,label,λ),基于梯度下降算法對逐條數據進行相關梯度和權值的更新,直至所有數據訓練完畢.
步驟6模型預測時,測試集的各條文本根據重構后保留詞典的詞序列向量得到該條文本屬于類別i的概率Pi.
構建保留詞典算法描述如下:
算法1構建保留詞典算法
在TL-FastText 方法中,保留詞典屬于程序外接部分,而且詞典中保留的均為文本數據,所占空間很小.經測試,本文構建含有約10 萬條詞匯的保留詞典,所占空間為2.3 MB,一般應用環(huán)境中保留詞典所占空間大小不會超過10 MB.此外,保留詞典在計算過程加入部分數據的同時,也刪除了很多n-gram 處理后沒有意義的詞.因此,保留詞典的引入對算法空間復雜度的影響是微小的.
實驗環(huán)境為Intel Core i5-4460 處理器、主頻3.2GHz、內存8GB、1TB 硬盤的PC 機.操作系統(tǒng)為Win7,編程語言使用Python,編譯環(huán)境JetBrains PyCharm 2017.
本文實驗采集了75 740 條新浪微博數據,在數據預處理階段首先剔除圖片、網址引用等空文本微博,對純文本微博數據使用中科院分詞工具ICTCLSA 進行分詞處理,對分詞后的數據進行數據清洗,去除數據中無意義的語氣詞及表情符號等,將清洗后數據整合成文檔.數據集中的58 056 條用于訓練數據集,15 148 條用于測試數據集.包括明星、政治、體育、旅游、數碼、汽車、游戲、寵物、時尚、財經共10 個主題,如表1所示.
表1 各類別微博數量Table1 Number of microblogs in each category
本文實驗采用精確率、召回率和F-measure 3 個文本分類領域常用的指標來評價實驗結果.
精確率是針對預測結果而言的,它表示預測為正的樣本中有多少是真正的正樣本.預測為正有兩種可能,一種是把正類預測為正類,此類樣本數為TP;另一種是把負類預測為正類,此類樣本數為FP,精確率P的計算公式為
召回率R是針對原來的樣本而言的,它表示樣本中的正例有多少被正確預測.有兩種可能,一種是把原來的正類預測成正類,此類樣本數為TP;另一種就是把原來的正類預測為負類,此類樣本數為FN,召回率的計算公式為
F-measure 又稱為F值,是用來評價分文分類效果的一種綜合指標,計算方式為召回率和精確率的平均值,F值的計算公式為
本文用Python 語言實現了FastText 分類模型和TL-FastText 模型.在實驗過程中,為了與FastText 進行有效的對比,優(yōu)先選用FastText 在supervised 模式下的默認參數:參數學習速率rl=0.1,詞向量維度d=200,上下文窗口大小ws=5,迭代次數Eepoch=5,詞語最小出現次數min_count=1.損失函數loss 的參數選用層次softmax,與原默認參數softmax 相比,層次softmax 作為損失函數的參數可以大幅度提高訓練速度,同時可以提高精確率[13].因為中文的多數詞語由兩個字組成,因此詞語級別n-gram 最大長度word_ngrams=2,以適應中文短文本的特點.
本文實驗對TL-FastText 分類模型、經典FastText 分類模型、基于TF-IDF 特征的文本分類模型以及基于Word2Vec 的文本分類模型在不同分類數量的分類效果進行對比.本文在10 分類、5 分類和2 分類上分別進行對比,4 種算法在3 種不同分類數量下的精確率、召回率和F值3 項指標上的對比結果如圖4~6 所示.
圖4 多分類精確率對比圖Figure4 Precision comparison chart of multi-classification
圖4中的數據表明,本文所提方法與其他3 種對比方法(FastText、TF-IDF、Word2Vec)的精確率在2 分類分別提高了3.32%、8.52%、6.73%;在5 分類分別提高了4.52%、10.62%、8.11%;在10 分類分別提高了5.21%、9.02%、6.29%.
圖5 多分類召回率對比圖Figure5 Recall ratio comparison chart of multi-classification
圖5中的數據表明,本文所提方法與其他3 種對比方法(FastText、TF-IDF、Word2Vec)的召回率在2 分類分別提高了4.95%、8.92%、7.83%;在5 分類分別提高了5.92%、10.42%、8.04%;在10 分類分別提高了6.45%、10.8%、7.65%.
圖6 多分類F 值對比圖Figure6 F value comparison chart of multi-classification
圖6中的數據表明,本文所提方法與其他3 種對比方法(FastText、TF-IDF、Word2Vec)的多分類F值在2 分類分別提高了4.12%、8.71%、7.22%;在5 分類分別提高了5.08%、10.63%、8.08%;在10 分類分別提高了5.56%、9.9%、6.97%.
實驗證明,TL-FastText 在模型輸入時對n-gram 產生的詞典進行了TF-IDF 篩選和LDA主題詞補充,使得在計算輸入詞序列向量均值偏向高區(qū)分度的詞條,更適用于解決中文短文本分類問題,因此分類效果更佳.
為了驗證所提算法的有效性,本文將4 種算法應用在不同規(guī)模的訓練集中進行實驗,對4 種算法的模型訓練時間及模型預測時間進行對比,實驗結果如圖7和8 所示.
圖7 不同數據集規(guī)模的模型訓練時間對比Figure7 Comparison of model training time on different dataset scale
從圖7可以看出,本文所提的TL-FastText 分類方法與經典的FastText 分類模型相比在模型訓練時間上有一定的劣勢,這是因為保留詞典重構需要進行以下處理:1)在輸入層對輸入數據進行n-gram 處理;2)對詞典進行TF-IDF 值計算,并且篩選后構建保留詞典;3)使用TIF-LDA 模型對數據集進行主題提取;4)將所得結果與保留詞典進行對比,根據對比的結果對保留詞典進行內容補充.上述過程中的計算需要耗費一定的時間,因而導致本文方法的模型訓練時間有所延長,但與基于TF-IDF 特征的文本分類方法以及基于Word2Vec 的文本分類方法相比,本文方法在分類模型的訓練時間上依然有很大的優(yōu)勢.
圖8 不同數據集規(guī)模的模型預測時間對比Figure8 Comparison of model prediction time on different dataset scale
從圖8中可以看出,在相同規(guī)模數據集上的模型預測時間方面,當進行短文本分類時,本文的TL-FastText 方法與經典FastText 模型所用時間幾乎沒有差別,而且本文方法大幅度優(yōu)于基于TF-IDF 特征以及基于Word2Vec 的文本分類方法.
本文對FastText 模型進行了適合中文短文本環(huán)境的改進.在改進過程中,使用TFIDF 對n-gram 處理后的數據進行精簡,去除高頻低區(qū)分度的詞條.對詞典進行了重構,同時使用LDA 算法對所有短文本組成的文檔進行LDA 處理,得出主題詞序列,將主題詞添加到重構后的詞典中,使得在計算輸入詞序列向量均值偏向高區(qū)分度的詞條.實驗表明,本文提出的TL-FastText 方法在中文短文本環(huán)境下的分類精確率有所提升.