1. 程式人生 > >記一個文字分類系統的實現

記一個文字分類系統的實現

基於資訊檢索課程,完成實現了一個文字分類系統,現記錄一下整個實現過程。

文字分類以文字資料為分類物件,本質上是機器學習方法在資訊檢索領域的一種應用,可以繼承機器學習領域的很多概念和方法,但同時也需要結合資訊檢索領域的特點進行處理。主要研究的方向是:文字分詞方法、文字特徵提取方法、分類演算法。

本人主要使用了5種常用的分類演算法,分別是kNN、Rocchio、NBC、SVM和ANN,對每種演算法的結果進行了比較,使用了十折交叉驗證繪製了各自的準確率曲線。由於本系統基於的搜狗語料庫,是中文文字,因此使用的分詞工具是Python實現的中文分詞工具jieba。使用的特徵提取方法是資訊增益。

1、語料

選擇搜狗語料庫的Reduced版本,一共有9個類別每個類別1990篇文章。考慮到實現規模,從每個類別中選擇了600篇文件一共5400篇文件作為訓練樣本。共有

9個類別,標號對應如下:(搜狗語料類別– 分類標號 – 類別名稱)

  • C000008—— 1 —— 財經
  • C000010—— 2 —— IT
  • C000013—— 3 —— 健康
  • C000014—— 5 —— 體育
  • C000016—— 4 —— 旅遊
  • C000020—— 6 —— 教育
  • C000022—— 7 —— 招聘
  • C000023—— 8 —— 文化
  • C000024—— 9 —— 軍事
2、分詞 本系統使用python語言實現,同時是針對中文文章進行分詞,因此選取了jieba(專案見Github)這個專門用於中文分詞的python工具。

針對上述5400篇訓練樣本,首先使用jieba進行分詞,共得到157269個詞項。然後編寫python程式,計算每個類別下的每篇文章的tf,得到所有文件集的倒排記錄表。同時統計每個詞項的df並計算idf儲存到檔案中供後續使用。

3、特徵提取

對分詞後得到的157269個詞項,首先使用jieba工具的標籤抽取函式,輸入idf和停用詞,得到初步的6445個候選特徵。

接著使用資訊增益(IG)這種特徵提取方法,在候選特徵中計算每個詞項對9個類別的資訊增益。資訊增益計算如下:


同時結合文件頻率(DF)進行過濾,將小於DF小於5的詞項過濾掉,然後設定IG的不同閾值得到不同閾值下特徵,最終得出閾值為0.016,特徵數目為967時分類效果最好。

4、向量化表示

根據上述得到的特徵,對5400篇文件進行向量化表示,每篇文章都是一個967維的向量。第一種是使用tf(詞項頻率),分別計算出不同維數下的向量。第二種是使用tf-idf方式,對每篇文件的每個特徵進行向量化,得到每個特徵的tf-idf值。

5、分類器訓練

所選擇的五種分類演算法中,kNN、Rocchio、NBC和ANN是使用python自行實現,SVM是使用python呼叫了libsvm程式實現。這寫演算法的具體實現在此不予贅述,具體可參考各類機器學習方法的書籍。

6、系統實現

最終基於python CGI實現了一個web應用系統,支援輸入一個新聞url後,系統輸入對應的分類結果,同時支援url檔案上傳進行批量分類。介面如下:


上傳url檔案後,分類結果顯示如下:


說明:分類url目前僅支援搜狐、騰訊、網易、新浪四個網站的新聞類頁面的文章。

參考:

[1] Joachims, T. . Textcategorization with Support Vector Machines: Learning with many relevantfeatures. In Machine Learning[C]. ECML-98, Tenth European Conference on MachineLearning, 1998: 137--142.

[2] Wikipedia. Documentclassification [DB/OL].

http://en.wikipedia.org/wiki/Document_classification.2014

[3] Fandywang. 斯坦福大學自然語言處理第六課“文字分類(Text Classification)”[DB/OL].http://52opencourse.com/222/斯坦福大學自然語言處理第六課“文字分類(Text Classification). 2012.

[4] Li F., Yang Y. A LossFunction Analysis for Classification Methods in Text Categorization[C].International Conference on Machine Learning (ICML), 2003: 472-479.

[5] 申紅,呂寶糧,內山將夫,井佐原均. 文字分類的特徵提取方法比較與改進[J]. 計算機模擬, 2006, 23(3): 222-225