Mahout (0,8) CVB VectorDump
Я пытаюсь запустить CVB для каталога файлов с простым текстом, следуя процедуре, описанной ниже. Тем не менее, я не могу видеть vectordump (шаг 6). Запустите без флага "-c csv", сгенерированный файл будет пустым. Однако, если я использую флаг "-c csv", сгенерированный файл начинается с последовательности чисел, за которыми следует алфавитно организованная серия символов (см. Ниже)
#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
Может кто-то указать, что я делаю не так?
благодарю вас
0: установить пути
> export HDFS_PATH=/path/to/hdfs/
> export LOCAL_PATH=/path/to/localfs
1: Поместите документы в HDFS, используя hadoop fs -put [-put...]
> hadoop fs -put $LOCAL_PATH/test $HDFS_PATH/rawdata
2: генерировать файлы последовательности (текста) из каталога
> 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
4- 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
1 ответ
Проблема была в шаге 4. На шаге 3 я генерирую векторы TF (--weight tf), но на шаге 4 я выполнял задание rowid (которое преобразует <Text, VectorWritable>
кортежи тф-векторов, к <IntWritable, VectorWritable>
который ожидает cvb) с 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
устраняет проблему