我正在尝试Apache Mahout,并且有很多关于如何使用LDA生成主题模型的信息,但是关于如何使用他们的新CVB lda算法进行相同操作的信息很少。我想要做的是生成与原始ldatopic
类似的主题的概率。
任何有关如何执行此操作的信息或示例都将不胜感激!
谢谢!
更新:
好的,所以我做了很多,但它仍然不完整,所以任何帮助都会很棒!
答案 0 :(得分:4)
好的,所以我仍然不知道如何输出主题,但我已经弄清楚如何获取cvb和我认为的文档向量,但是我没有运气倾销它们,所以帮助在这里仍然会受到赞赏!
哦,别忘了设置值:
export MAHOUT_HOME=/home/sgeadmin/mahout
export HADOOP_HOME=/usr/lib/hadoop
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
export HADOOP_CONF_DIR=$HADOOP_HOME/conf
在主人身上,否则这一切都无效。
所以首先使用starclusters put上传文档(显然如果你没有使用starcluster跳过这个:)):
starcluster put mycluster text_train /home/sgeadmin/
starcluster put mycluster text_test /home/sgeadmin/
然后我们需要将它们添加到hadoop的hbase文件系统中(不要忘记-hadoop starcluster):
dumbo put /home/sgeadmin/text_train /user/sgeadmin/ -hadoop starcluster
然后拨打Mahout的seqdirectory
将文本转换为序列文件
$MAHOUT_HOME/bin/mahout seqdirectory --input /user/sgeadmin/text_train --output /user/sgeadmin/text_seq -c UTF-8 -ow
然后拨打Mahout的seq2parse
将其转换为矢量
$MAHOUT_HOME/bin/mahout seq2sparse -i text_seq -o /user/sgeadmin/text_vec -wt tf -a org.apache.lucene.analysis.WhitespaceAnalyzer -ow
最后调用cvb
,我相信-dt
标志指出推断主题应该去哪里,但因为我还没有能够转储它们,所以我无法确认这一点。
$MAHOUT_HOME/bin/mahout cvb -i /user/sgeadmin/text_vec/tf-vectors -o /user/sgeadmin/text_lda -k 100 -nt 29536 -x 20 -dict /user/sgeadmin/text_vec/dictionary.file-0 -dt /user/sgeadmin/text_cvb_document -mt /user/sgeadmin/text_states
-k
标志是主题的数量,-nt
标志是字典的大小,您可以通过计算向量内dictionary.file-0
的条目数来计算(在这种情况下,在/user/sgeadmin/text_vec
下),-x
是迭代次数。
如果有人知道如何从这里获得文档主题概率,那么将非常感谢帮助!
答案 1 :(得分:2)
After completing aboveprocess,you can obtain an output of the computed topics using another Mahout utility called LDAPrintTopics.java by passing following commands
--dict (-d) dict --------->Dictionary to read in, in the same
format as one created by
org.apache.mahout.utils.vectors.lucen
e.Driver
--output (-o) output--------->Output directory to write top words
--words (-w) words--------->Number of words to print
--input (-i) input--------->Path to an LDA output (a state)
--dictionaryType (-dt) dictionaryType--------->The dictionary file type
(text|sequencefile)
答案 2 :(得分:2)
当您运行-dt
时,文档主题分发以序列文件格式存储在您使用--doc_topic_output
或mahout cvb
指定的目录下。在您的情况下,此目录将为/user/sgeadmin/text_cvb_document
要将这些序列文件的内容转储到文本文件,您可以使用mahout vectordump
实用程序,如下所示:
mahout vectordump -i /path/to/doc_topic_seq_input -o /path/to/doc_topic_text_out -p true -c csv
其中:
-i Path to input directory containing document-topic distribution in sequence file format.
-o Path to output file that will contain your document-topic distribution in text format.
-p Key values will be displayed if this parameter is used.
-c Output the Vector as CSV, otherwise it substitutes in the terms for vector cell entries