LDA算法(Latent Dirichlet allocation)是Blei,Andrew NG,Jordan等在2003年左右发表的算法,主要是以一系列单词为输入,以一系列Topic单词作为输出。该算法不考虑单词之间的顺序关系,衍生出了很多以LDA为基础的算法。
对于小的单独的文本,可以使用在线工具Voyant:http://voyant-tools.org/,得到一张包含Topic的图片。
多种开源工具实现了LDA算法,如 Stanford Topic Modeling Toolbox(http://nlp.stanford.edu/software/tmt/tmt-0.4/)和Mallet(http://mallet.cs.umass.edu/download.php)。
Mallet的下载与安装:
http://mallet.cs.umass.edu/download.php
建议从github上clone,自行编译。
Step1:使用Mallet生成某个文件的topic的时候,需要将该文件的格式转化成mallet格式,使用下面的命令,所得的mallet文件是下一步的输入:
bin/mallet import-dir --input path/to/the/dir/of/your/target/txt/file --output outputfile.mallet --keep-sequence --remove-stopwords
Step2:利用上面的结果,生成topic单词,及每个单词相关的单词:
bin/mallet train-topics --input outputfile.mallet --num-topics 20 --output-state topic-state.gz --output-topic-keys topic_file_keys.txt --output-doc-topics topic_file_topic.txt
上面的命令会生成20个topic单词,并且找出每个topic单词相关的单词,结果保存在topic_file_keys.txt中,topic_file_topic.txt中保存了各topic单词的权重。