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

устраняет проблему

Другие вопросы по тегам