利用貝葉斯分類器進行文本挖掘---筆記

1. 調用庖丁分詞器,分詞

grid@server01:~/data$ hadoop jar mrtokenize.jar tokenize.TokenizeDriver /home/grid/data/lesson8 /home/grid/output/sportwords

14/08/31 21:59:33 INFO input.FileInputFormat: Total input paths to process : 10205

.....

14/08/31 22:05:25 INFO mapred.JobClient:     Map output records=10205

共處理:10205個文件,耗時 6 分鐘



分詞後的結果:

badminton       尤伯 伯杯 中國 泰國 挺進 決賽 王儀 儀涵 機敏 回球 月 日 中國 中國隊 選手 王儀 儀涵 比賽 中回 回球 她最 最終 戰勝 泰國 隊 選手 手拉 差諾 當日 武漢 體育 中心 中心體 體育 體育館 舉行 年尤 尤伯 伯杯 羽毛 羽毛球 球賽 決賽 半決賽 中 中國 中國隊 總比 比分 戰勝 泰國 隊 晉級 決賽 新華 新華社 記者 孟永 永民 民攝 關注 體育 瞭解 更多 體壇 資訊 

badminton       尤伯 伯杯 中國 泰國 挺進 決賽 王儀 儀涵 比賽 中 發球 月 日 中國 中國隊 選手 王儀 儀涵 比賽 中 發球 她最 最終 戰勝 泰國 隊 選手 手拉 差諾 當日 武漢 體育 中心 中心體 體育 體育館 舉行 年尤 尤伯 伯杯 羽毛 羽毛球 球賽 決賽 半決賽 中 中國 中國隊 總比 比分 戰勝 泰國 隊 晉級 決賽 新華 新華社 記者 孟永 永民 民攝 關注 體育 瞭解 更多 體壇 資訊 


2. load 分詞集

grunt> processed = load'/home/grid/output/sportwords' as (category:chararray, doc:chararray);


3. 隨機 20% 生成 測試集

grunt> test = sample processed 0.2;


4. 生成訓練集

grunt> jnt =join processed by (category,doc) left outer, test by (category, doc);

grunt> filt_test = filter jnt by test::category is null;  

grunt> train = foreach filt_test generate processed::category as category, processed::doc as doc;


5. 導出測試集和訓練集

grunt> store test into '/home/grid/data/lesson8.2/test';


6. 統計測試集分類 

grunt> test_ct= foreach(group test by category) generate group, COUNT(test.category);

grunt> dump test_ct;   


result:

(f1,196)

(golf,206)

(swim,170)

(tennis,187)

(football,209)

(pingpong,220)

(badminton,212)

(billiards,236)

(basketball,201)

(volleyball,204)



7. 統計訓練集

grunt> train_ct= foreach(group train by category) generate group, COUNT(train.category);

grunt> dump train_ct;


8. 利用樸素貝葉斯分類器,來訓練模型


grid@server01:~/data$ mahout trainclassifier \

> -i /home/grid/data/lesson8.2/train \

> -o /home/grid/output/model-bayes8.2 \

> -type bayes \

> -ng 1 \

> -source hdfs


result:

14/08/31 23:31:15 INFO mapred.JobClient:     Map output records=228211

14/08/31 23:31:15 INFO common.HadoopUtil: Deleting /home/grid/output/model-bayes8.2/trainer-docCount

14/08/31 23:31:15 INFO common.HadoopUtil: Deleting /home/grid/output/model-bayes8.2/trainer-termDocCount

14/08/31 23:31:15 INFO common.HadoopUtil: Deleting /home/grid/output/model-bayes8.2/trainer-featureCount

14/08/31 23:31:15 INFO common.HadoopUtil: Deleting /home/grid/output/model-bayes8.2/trainer-wordFreq

14/08/31 23:31:15 INFO common.HadoopUtil: Deleting /home/grid/output/model-bayes8.2/trainer-tfIdf/trainer-vocabCount

14/08/31 23:31:15 INFO driver.MahoutDriver: Program took 1265118 ms (Minutes: 21.0853)



9. 測試模型 


grid@server01:~/data$ mahout testclassifier \

> -d /home/grid/data/lesson8.2/test \

> -m /home/grid/output/model-bayes8.2 \

> -type bayes \

> -ng 1 \

> -source hdfs \

> -method mapreduce

14/08/31 23:45:52 INFO bayes.BayesClassifierDriver: =======================================================
Confusion Matrix
-------------------------------------------------------
a       b       c       d       e       f       g       h       i       j       <--Classified as
190     0       1       1       0       3       0       0       0       0        |  195         a     = basketball
0       249     0       0       0       0       1       0       0       0        |  250         b     = billiards
0       0       198     0       0       1       0       0       0       0        |  199         c     = badminton
0       0       0       224     0       0       0       0       0       0        |  224         d     = football
0       0       0       0       190     0       0       0       0       0        |  190         e     = volleyball
0       0       0       0       0       181     0       0       0       0        |  181         f     = swim
0       1       0       0       0       0       204     0       0       0        |  205         g     = pingpong
1       0       0       0       0       0       0       193     0       0        |  194         h     = golf
0       0       0       0       0       0       0       0       196     0        |  196         i     = f1
0       0       0       0       0       0       1       0       0       206      |  207         j     = tennis


10. 用戶瀏覽記錄分詞,同1

grid@server01:~/data$ hadoop jar mrtokenize.jar tokenize.TokenizeDriver /home/grid/data/les8-usersport /home/grid/lesson8/output/userwords



11. 利用sport 生成的模型對用戶瀏覽內容進行分類

grid@server01:~/data$ hadoop jar mrclassify.jar  classifier.ClassifierDriver \

> /home/grid/lesson8/output/userwords \

> /home/grid/lesson8/output/classify \

> /home/grid/output/model-bayes8.2 \

> bayes



result:

grid@server01:~/data$ hadoop fs -cat /home/grid/lesson8/output/classify/part-r-00000 | head -20

Warning: $HADOOP_HOME is deprecated.


10511838|badminton|7

10511838|basketball|5

10511838|billiards|8

10511838|f1|7

10511838|football|11

10511838|golf|5

10511838|pingpong|5

10511838|tennis|2

10511838|volleyball|12

10564290|badminton|2

10564290|basketball|12

10564290|billiards|11

10564290|f1|12

10564290|football|16

10564290|golf|1

10564290|pingpong|18

10564290|swim|6

10564290|tennis|3

10564290|volleyball|7

107879|basketball|7



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章