kmeans job eclipse

從92行開始,腳本完成了一系列操作:提取語料庫中的文本保存到指定目錄,把指定目錄的文件轉換爲sequencefile,一氣呵成!

        實際上,mahout通過MapReduce執行的操作比上面的更詳細。深入分析這一過程,可以瞭解到更多的處理細節。一起來分析它的處理步驟:

  1. 將文本文件轉換爲sequencefile
  2. 分詞(DocumentProcessor::DocumentTokenizer)
  3. 統計詞頻(DictionaryVectorizer::WordCount)
  4. 生成分區向量空間(DictionaryVectorizer::MakePartialVectors)
  5. 合併分區向量空間(PartialVectorMerger)
  6. 用tfidf算法計算文檔向量空間各分量的權重(VectorTfIdf Document Frequency Count )
  7. 優化向量空間(Prune Vectors)——將維
  8. 合併優化後的向量空間(PrunerPartialVectorMerger)
  9. 再次生成分區向量空間(MakePartialVectors)
  10. 再次合併分區向量空間(PartialVectorMerge)
  11. 聚類(Cluster Iterator running)
  12. 分類(Cluster Classification Driver running)
  13. 輸出聚類結果(Representative Points Driver running)

        最終的聚類輸出20個分類以及他們的編號,並給出每一個分類的類間密度:

        每一個類包含的節點信息保存在目錄${WORK_DIR}/reuters-kmeans/clusteredPoints中:

-rw-r--r--   1 hadoop supergroup          0 2014-05-04 19:21 /tmp/mahout-work-hadoop/reuters-kmeans/clusteredPoints/_SUCCESS
-rw-r--r--   1 hadoop supergroup    7899885 2014-05-04 19:21 /tmp/mahout-work-hadoop/reuters-kmeans/clusteredPoints/part-m-00000

        part-m-00000是一個由map過程輸出的文件,裏面內容格式如下:

2949    wt: 1.0 distance: 0.7671613509177753  vec: /reut2-008.sgm-192.txt = [398:8.248, 443:3.997, 594:3.212, 1026:3.985, 1046:6.728, 1068:9.864, 1090:6.639, 1095:7.016, 1181:9.097, 1188:7.796, 1196:7.709, 1202:8.402, 1330:5.989, 1489:7.486, 1620:8.248, 2830:3.341, 3388:4.419, 5470:3.374, 5593:3.610, 7218:6.556, 7402:9.002, 7748:5.569, 7766:12.140, 8010:5.197, 8089:7.103, 8657:7.421, 8660:6.169, 8755:4.137, 8791:7.486, 9130:2.906, 9571:3.948, 9623:7.997, 9650:4.837, 9651:5.398, 9654:9.095, 9678:13.436, 9889:3.717, 9910:5.812, 9911:4.926, 10348:4.147, 10619:7.486, 10850:7.976, 10907:9.348, 10909:7.709, 11540:6.862, 11550:3.386, 12189:4.392, 12347:4.480, 12384:5.458, 12729:1.946, 13185:7.629, 13332:3.595, 13502:5.640, 13819:5.799, 13953:13.436, 14245:3.098, 14380:7.421, 14393:4.435, 14894:4.796, 15045:8.362, 15164:6.827, 15262:7.709, 15402:6.187, 15509:2.681, 16067:6.760, 16138:5.041, 16581:3.413, 17029:6.697, 17119:7.709, 17183:7.016, 17455:3.826, 17759:5.001, 18283:5.256, 18348:6.151, 18392:3.186, 19333:6.898, 19363:8.808, 19457:7.058, 19815:5.125, 19939:5.619, 19940:5.640, 20541:3.328, 21239:4.413, 21245:6.167, 21280:4.248, 21389:7.103, 21642:8.808, 21824:5.138, 22158:10.684, 22677:7.103, 22797:12.456, 23046:2.600, 23077:7.709, 23085:8.011, 23191:8.584, 23332:4.278, 23346:4.709, 23411:7.304, 23583:9.095, 23615:13.436, 23637:8.292, 23641:8.248, 23788:5.157, 24080:5.799, 24088:5.792, 24239:8.674, 24376:6.302, 24769:8.584, 25116:7.997, 25680:3.463, 25939:5.366, 26190:5.304, 26508:4.445, 26873:4.947, 26874:5.640, 26920:6.506, 26973:2.397, 26975:3.605, 27356:7.796]

        2949是類編號,[]中的是(詞,權重)鍵值對。這裏的詞經過詞典轉換,存的是詞典索引,具體的詞典放在${WORK_DIR}/reuters-out-seqdir-sparse-kmeans/dictionary.file-0件中。

...
last    17455
lasted  17456
lasting 17457
...

        空白符的前部分是詞,後半部分是詞索引。

        整個過程分析下來,mahout的聚類過程變得更清晰?但還有幾點沒有涉及:

  1. 分詞,特別是中文分詞如何處理。
  2. 讀取聚類結果,展示給最終用戶。
  3. 權重算法。
  4. 向量空間將維算法。
  5. 距離算法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章