轉載原文:http://www.cnblogs.com/panweishadow/p/4320720.html
一、簡介
關於Mahout的介紹,請看這裏:http://mahout.apache.org/
關於Naive Bayes的資料,請戳這裏:
Mahout實現了Naive Bayes分類算法,這裏我用它來進行中文的新聞文本分類。
官方有一組分類例子,使用20 newsgroups data (http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz) 總大小約爲85MB。
對於中文文本,相比英文文本,只多一步切詞的步驟,使用搜狗實驗室的語料庫,總大小約爲300M。請戳這裏:http://www.sogou.com/labs/resources.html?v=1
二、詳細步驟
1.寫切詞小程序,工具包爲IK,用空格分開,將所有新聞集中到一個文本中,一行代表一篇新聞~
2.上傳數據到hdfs,數據量大小,親測數小時~~~
user@hadoop:~/workspace$hadoop dfs -cp /share/data/Mahout_examples_Data_Set/20news-all .
3.從20newsgroups data創建序列文件(sequence files)
user@hadoop:~/workspace$mahout seqdirectory -i 20news-all -o 20news-seq
4.將序列文件轉化爲向量
user@hadoop:~/workspace$mahout seq2sparse -i ./20news-seq -o ./20news-vectors -lnorm -nv -wt tfidf
5.將向量數據集分爲訓練數據和檢測數據,以隨機40-60拆分
user@hadoop:~/workspace$mahout split -i ./20news-vectors/tfidf-vectors --trainingOutput ./20news-train-vectors --testOutput ./20news-test-vectors --randomSelectionPct 40 --overwrite --sequenceFiles -xm sequential
6.訓練樸素貝葉斯模型
user@hadoop:~/workspace$mahout trainnb -i ./20news-train-vectors -el -o ./model -li ./labelindex -ow -c
7.檢驗樸素貝葉斯模型
user@hadoop:~/workspace$mahout testnb -i ./20news-train-vectors -m ./model -l ./labelindex -ow -o 20news-testing –c
8.檢測模型分類效果
user@hadoop:~/workspace$mahout testnb -i ./20news-test-vectors -m ./model -l ./labelindex -ow -o ./20news-testing -c
參考資料:http://openresearch.baidu.com/activitybulletin/448.jhtml;jsessionid=28BD4187550DCA6F8AD6FEA4DCCA2480