韓洪勇 姜錦琨 楊超然 陳照奇

摘 要:隨著網(wǎng)絡(luò)信息時代的到來和新聞數(shù)據(jù)的不斷增加,人們需要對新聞進(jìn)行分類的難度也不斷加大。那么,是否有一種有效的分類新聞信息的方法將新聞進(jìn)行分類呢?而在文本分類中,有較好的文本分類的算法是樸素貝葉斯算法。本研究以通過網(wǎng)絡(luò)爬蟲的方式爬取某新聞網(wǎng)站的少量新聞數(shù)據(jù)數(shù)據(jù),然后對數(shù)據(jù)進(jìn)行簡單的數(shù)據(jù)預(yù)處理、中文文本分詞等,構(gòu)建樸素貝葉斯分類器,進(jìn)而實現(xiàn)對新聞分類的目的。
關(guān)鍵詞:樸素貝葉斯;新聞文本;中文文本分類
1 緒論
隨著網(wǎng)絡(luò)的迅速發(fā)展和大數(shù)據(jù)時代的到來,與網(wǎng)絡(luò)隨著而來的新聞數(shù)據(jù)也大量增加。面對爆炸的數(shù)據(jù),需要使用恰當(dāng)?shù)姆椒▽ξ谋具M(jìn)行分類。文檔分類大致需要以下三個要素:文本向量模型表示、文本的特征選擇和文本訓(xùn)練分類器。而目前比較流行的分類方法主要有貝葉斯方法、SVM、神經(jīng)網(wǎng)絡(luò)、k2最近鄰算法等等。
本文采用貝葉斯的分類方法。貝葉斯是一種比較簡單、學(xué)習(xí)效率和預(yù)測效率都很高,并且性能又較好的基于概率的一種學(xué)習(xí)算法。樸素貝葉斯是在貝葉斯定理和特征條件獨(dú)立的前提下,給定訓(xùn)練數(shù)據(jù)集,根據(jù)特征條件獨(dú)立學(xué)習(xí)計算輸入輸出的聯(lián)合概率分布,然后這就是構(gòu)建的基礎(chǔ)模型,然后再給定輸入數(shù)據(jù)集x,根據(jù)貝葉斯定理求出后驗概率最大的輸出y。
2 樸素貝葉斯算法描述
一般的樸素貝葉斯分類算法的過程如下:
(1)從網(wǎng)絡(luò)上獲取數(shù)據(jù),然后對數(shù)據(jù)進(jìn)行分類,并標(biāo)記。
(2)將分好類的數(shù)據(jù)進(jìn)行中文分詞。
(3)將數(shù)據(jù)文本中垃圾詞語去除。
(4)將上面整理好的詞條組合成特征組,計算詞條的頻率信息。
(5)通過計算得到的詞條的頻率信息,計算出詞條再各個類別文本的先驗概率。
(6)再次輸入新的數(shù)據(jù)文本,進(jìn)行中文分詞,去除垃圾詞語,合成特征組。
(7)將新的數(shù)據(jù)樣本的特征詞條計算得到的先驗概率帶入樸素貝葉斯公式當(dāng)中,計算得到后驗概率,那么計算得到的最大概率的那個對應(yīng)類別就是新聞文本的類別。
3 新聞文本的獲取及處理
對于新聞數(shù)據(jù)的獲取途徑主要是從新聞官網(wǎng)上進(jìn)行獲取,對于一般的新聞網(wǎng)站,可以采用BeautifulSoup庫的方法編寫代碼爬取頁面數(shù)據(jù),然后對頁面數(shù)據(jù)中的HTML標(biāo)簽進(jìn)行去除。而對于較為復(fù)雜的、大量的頁面新聞,甚至具有反爬取處理的網(wǎng)站,就需要使用scrapy框架和代理池的配合來爬取頁面數(shù)據(jù)。
4 分類器的構(gòu)建
與英文可以通過非字母的方式進(jìn)行語句的分割,但是新聞內(nèi)容中都是中文文本,無法使用這種方式。這里使用第三方的中文分詞:jieba。使用jieba將中文的語句進(jìn)行分割,并標(biāo)記好各自的類別。
在分詞完成之后,會發(fā)現(xiàn)有很多垃圾詞匯(指與分類無關(guān)的詞匯,比如:的、是、在等),過多的垃圾詞匯會降低文本數(shù)據(jù)的分類的準(zhǔn)確率,這里需要自定義一個去除垃圾詞匯的規(guī)則來去除垃圾詞匯。那么,去除垃圾詞匯之后的剩余的所有的分詞,將這些分詞全部用來訓(xùn)練樸素貝葉斯分類器。除此之外,h還要對訓(xùn)練集中的所有分詞進(jìn)行詞頻的統(tǒng)計,將詞頻較高的分詞排列在前面。排列完成之后,將分詞進(jìn)行文本向量化。
由于利用樸素貝葉斯分類器進(jìn)行新聞文本分類時,需要計算各個分詞向量的概率,然后將這些概率進(jìn)行相乘,得到乘積,使用這個乘積來獲得這個新聞對應(yīng)的類別。但是如果這個詞向量中有一個的概率是0,那么最后分類的結(jié)果也是0,無法完成新聞的分類。本文使用拉普拉斯平滑的方法,將所有詞向量的出現(xiàn)的詞頻數(shù)增加1,也就是由之前的最低詞頻0變成現(xiàn)在的最低詞頻1,然后最低分母初始化為2,這樣就阻止了出現(xiàn)0的概率。
為了更加快速構(gòu)建文本分類器,本文直接使用sklearn庫里面的naive_bayes方法直接構(gòu)建分類器,采用先驗概率為多項式分布的樸素貝葉斯方法來進(jìn)行構(gòu)建。在sklearn中我們可以通過觀察多次去掉多少個高頻詞的個數(shù)和最終檢測率的關(guān)系,這里繪制出高頻詞(deleteNs)和準(zhǔn)確率之間的關(guān)系來選擇本文最終決定刪除高頻詞的個數(shù)。
通過觀察上圖,本文最終選定deleteNS的個數(shù)為810,然后使用去掉高頻詞的個數(shù)為810,構(gòu)建新聞分類的樸素貝葉斯分類器。最終測試的分類精確度為79.368%。
5 問題及改進(jìn)
樸素貝葉斯算法是由貝葉斯定理發(fā)展而來,算法比較簡單,對于分類問題有著比較穩(wěn)定的分類效率。同時,樸素貝葉斯分類器對于小規(guī)模的數(shù)據(jù)分類表現(xiàn)很好,并且適合增量式訓(xùn)練。除此之外,樸素貝葉斯算法對于缺失數(shù)據(jù)不太敏感,用于文本分類效果較好。理論上來說,樸素貝葉斯分類算法與其他分類算法相比誤差較小,但是在實際情況上來看,當(dāng)屬性個數(shù)比較多的情況下或者各個屬性之間相關(guān)性比較大時候,分類效果并不是很好,只有在各個屬性之間的相關(guān)性較小的情況下,樸素貝葉斯算法才能達(dá)到較好的分類效果。對于這種情況,可以通過改進(jìn)部分屬性的關(guān)聯(lián)度,也就是半樸素貝葉斯算法。由于樸素貝葉斯是在假設(shè)各個條件相互獨(dú)立的前提下求出的先驗概率,但是在現(xiàn)實情況下先驗概率未必準(zhǔn)確,所以預(yù)測效果可能沒有那么好。除此之外,樸素貝葉斯算法對輸入數(shù)據(jù)的形式也有很大的敏感性。
參考文獻(xiàn):
[1]崔哲.基于樸素貝葉斯方法的文本分類研究[D].河北科技大學(xué),2018.
[2]Peter Harrington.Machine Learning in Action[M].人民郵電出版社,2013.
[3]麥好.機(jī)器學(xué)習(xí)實踐指南[M].機(jī)械工業(yè)出版社,2016.
作者簡介:韓洪勇(1999-),男,山東青島人,現(xiàn)于山東科技大學(xué)攻讀學(xué)士學(xué)位,目前主要從事于計算機(jī)科學(xué)與技術(shù)的專業(yè)研究。