2014-01-25 2 views
1

아래에 설명 된 절차에 따라 일반 텍스트 파일의 디렉토리에서 CVB를 실행하려고합니다. 그러나 나는 vectordump를 볼 수 없다 (6 단계). "-c csv"플래그없이 실행하면 생성 된 파일이 비어 있습니다. 내가 unigrams의 순으로 조직 된 일련의 다음에 일련의 번호로 생성 된 파일이 시작 플래그 "-c CSV"를 사용하는 경우에는 (아래 참조)Mahout (0.8) CVB VectorDump

#1,10,1163,12,121,13,14,141,1462,15,16,17,185,1901,197,2,201,2227,23,283,298,3,331,35,4,402,4351,445,5,57,58,6,68,7,9,987,a.m,ab,abc,abercrombie,abercrombies,ability 

누군가가 내가 뭘 잘못을 지적 할 수 있습니까? 경로 설정이

> export HDFS_PATH=/path/to/hdfs/ 
> export LOCAL_PATH=/path/to/localfs 

1 : [이것 저것 집어 넣어 ...]

> hadoop fs -put $LOCAL_PATH/test $HDFS_PATH/rawdata 

2 거려 하둡 FS를 사용하여 HDFS에 넣어 문서가 : 시퀀스를 생성

0 감사합니다 디렉토리의 파일 (텍스트)

> mahout seqdirectory \ 
-i $HDFS_PATH/rawdata \  
-o $HDFS_PATH/sequenced \  
-c UTF-8 -chunk 5 

3 텍스트 순서에서 스파 스 벡터를 생성은

> mahout seq2sparse \ 
-i $HDFS_PATH/sequenced \ 
-o $HDFS_PATH/sparseVectors \ 
-ow --maxDFPercent 85 --namedVector --weight tf 

3- ROWID를 파일 :지도 SequenceFile를 {SequenceFile, SequenceFile}

> mahout rowid \ 
-i $HDFS_PATH/sparseVectors/tfidf-vectors \ 
-o $HDFS_PATH/matrix 

5 실행 CVB에

> mahout cvb \ 
-i $HDFS_PATH/matrix/matrix \ 
-o $HDFS_PATH/test-lda \ 
-k 100 -ow -x 40 \ 
-dict $HDFS_PATH/sparseVectors/dictionary.file-0 \ 
-dt $HDFS_PATH/test-lda-topics \ 
-mt $HDFS_PATH/test-lda-model 

6 시퀀스 파일에서 텍스트로 벡터 덤프

> mahout vectordump \ 
-i $HDFS_PATH/test-lda-topics/part-m-00000 \ 
-o $LOCAL_PATH/vectordump \ 
-vs 10 -p true \ 
-d $HDFS_PATH/sparseVectors/dictionary.file-0 \ 
-dt sequencefile \ 
-sort $HDFS_PATH/test-lda-topics/part-m-00000 \ 
-c csv 
; cat $LOCAL_PATH/vectordump 

답변

3

문제는 4 단계에서 발생했습니다. 3 단계에서 TF 벡터 (- 가중치 tf)를 생성하지만 4 단계에서tf- 벡터의 튜플을 <IntWritable, VectorWritable> (cvb가 예상하는 값)으로 변환하는 rowid 작업을 실행했습니다. tfidf 벡터로

그래서 4 단계에서 변경 :

> mahout rowid \ 
-i $HDFS_PATH/sparseVectors/tfidf-vectors \ 
-o $HDFS_PATH/matrix 

> mahout rowid \ 
-i $HDFS_PATH/sparseVectors/tf-vectors\ 
-o $HDFS_PATH/matrix 

수정 문제

한다.