之前几篇文章讲到了文档主题模型,但是毕竟我的首要任务还是做分类任务,而涉及主题模型的原因主要是用于text representation,因为考虑到Topic Model能够明显将文档向量降低维度,当然TopicModel可以做比这更多的事情,但是对于分类任务,我觉得这一点就差不多了。
LDA之前已经说到过,是一个比较完善的文档主题模型,这次试用的是JGibbsLDA开源的LDA代码做LDA的相关工作,简单易用,用法官网上有,也可以自行谷歌。
按照官网上的参数和格式规范,就可以训练生成语料相关的结果了,一共会产生以下几个文件:
- model-final.twords:topic-word,也就是每个主题对应的单词分布
- model-final.others:LDA的一些参数
- model-final.phi:该文件是一个主题数×词数量的矩阵
- model-final.tassign:这个是统计文档单词的tf-idf
- model-final.theta:这个就是我们需要的,表示文档对应的主题概率
- wordmap.txt:这个是用来统计单词词频
当然我们需要用到的是model-final.theta这个文件,并将它作为文档神经网络分类器的输入文章向量;
然后开始我们的实验:
实验语料:20_newsgroups,包含20类的分类新闻,并将测试集和训练集按照1:1分开
实验环境:JDK1.8 windows7
使用LDA开源工具:JGibbsLDA
分类器使用:100*300*20的简单三层神经BP神经网络,神经网络的工具选取的是JOONE