張鑫
摘要:本文借助R軟件,采用來自某新聞媒體官方微信公眾號中16個類別的中文文本數據,對所發布內容進行分類。首先對文本進行預處理,主要是進行分詞和去除停用詞,并加入自定義詞典,然后采用TF-IDF權重法提取文本特征,按照訓練集與測試集10:3的比例,用支持向量機(SVM),隨機森林(RF),Boosting,最大似然的廣義線性回歸(GLMNET),最大熵(MAXENT)這5種分類算法,對選取的訓練文本進行訓練得到不同的分類模型,進而對測試文本進行自動分類,并采用5折交叉驗證法比較不同算法的分類性能。結果顯示Boos~ng分類算法對于該文本的分類準確率最高。
關鍵詞:TF-IDF;支持向量機;隨機森林;Boosting;分類模型
一、引言
文本分類是指依據文本的內容,根據某種自動分類算法按照一定分類體系或標準,對大量文本進行判斷并歸類為預先定義好的一個或者多個類別的過程。本文根據微信公眾號發布內容,建立分類模型進行文本自動分類,主要采用支持向量機(SVM)、隨機森林、Boosting、最大似然的廣義線性回歸、最大熵這5種分類技術。
二、描述性統計
從該新聞媒體官方微信公眾號的發布內容及其所屬類別來看,共發布了780條新聞,其中社會類新聞達到了352條,生活服務類新聞共有118條,健康類新聞有65條。因此,該新聞媒體比較關注有關社會民生、身體健康等方面的內容,較適合普通民眾閱讀。
詞云圖是一種信息文本可視化技術,可過濾掉大量的龐雜文本信息,容易看出哪些類型的關鍵詞出現頻率最高,從而更容易對其進行分類。以下是對該新聞媒體的幾種具有代表性的新聞類型分別作出詞云圖,可以觀察到在某類型新聞中哪些詞出現的頻率較高,從而更容易對一則新的新聞進行分類。
圖1-圖5分別展示出的是社會類新聞、生活服務類新聞、房產類新聞、財經類新聞、環保類新聞。但若僅僅通過觀察來判斷一條信息屬于哪一類型,不僅工作量大且正確率有待考究,因此需要通過文本分類算法來規范化新聞的分類。由于篇幅受限未給出詞云圖。
三、實證分析
3.1文本集整合
在提取文本特征之前,要對文本做預處理,主要是對文本進行分詞和去除停用詞處理。去除停用詞一般通過導入中文停用詞表來實現,本文采用的中文停用詞表含有4545個停用詞。去除這些與主題無關的詞以后,按照實際需求選取權重最高的幾個詞匯來代表該文本的核心內容。此外,在文本信息處理過程中,通過從搜狗細胞詞庫中選擇自定義詞典將文本中出現的特殊詞加進去,有助于識別文本,提高分類的準確率。
3.2提取特征文本
選取能夠反映文本類別的文本特征。各個詞匯對文本分類的影響是不同的,一些通用的或者各個類別中都普遍存在的詞匯對文本分類的影響很小,去除掉這些沒有影響力的詞匯,篩選出代表該類的特征項集合。特征提取是文本分類中的關鍵問題,它對分類精確率有很大影響。文本特征提取有很多方法,其中最常用的方法是通過詞頻選擇特征。通過詞頻計算出權重。采用TF-IDF(詞頻率-逆文檔頻率)法計算權重。
3.3利用訓練集訓練模型
本文選用某新聞媒體官方微信公眾號的發布內容為研究文本,文本類別為時政、社會、頭條新聞、視頻、生活服務、財經、科技、健康、房產、環保等16類。取600篇作為訓練文本,其余180篇作為測試文本。在模型訓練時,對訓練文本進行詞頻統計,得到詞頻統計矩陣,構造不同算法對應的分類器模型。分別是支持向量機(SVM),隨機森林(RF),Boosting,最大似然的廣義線性回歸(GLMNET),最大熵(MAXENT)這5種分類算法。
3.4利用測試集對模型測試
對于選取的180篇測試文本,根據不同的分類器模型,對測試文本進行自動分類,以支持向量機和最大熵算法為例,得到的分類結果見表1。(藍字標注的表示分錯的類別)
進一步,針對這兩種算法的180篇測試文本分類結果及各個類別正確分類和錯誤分類的文本數。對應計算出各類別的正確率。
在支持向量機SVM算法下,社會和活動這兩個類別分類的正確率相對較高,分別為81%,68%。在最大熵MAXENT算法下,社會、時政、活動、生活服務這四個類別分類的正確率分別為63%,67%,78%,66%。
3.5分類性能的比較
針對五種分類算法,采用5折交叉驗證,得到分類準確率Accuracy。支持向量機(SVM)、隨機森林(RF)、Boosting、最大似然的廣義線性回歸(GLMNET)、最大熵(MAXENT)這五種算法的5折交叉驗證準確率分別為0.573、0.667、0.692、0.608、0.574。這五種分類算法的準確率都基本上在60%以上,其中Boosting的準確率最高,近70%。Boosting算法對于此文本分類是分類性能最好的算法。
四、結論
由實證部分交叉驗證結果得到Boosting算法是此文本分類中性能最好的分類算法。Boosting算法具有速度快、簡單、編程容易、適應性強和精度高的特點,并在進行分類的同時能夠進行特征選取,可以提高弱分類算法的識別率。