标签:
这段时间对LDA比较感兴趣,尝试在工作中使用它。平时做想法的快速验证,都用的是“GibbsLDA++-0.2”,一个c实现版本的LDA。这两天用c++ stl自己写了一个单机版的LDA,初衷如下:
1. “GibbsLDA++-0.2”虽说号称是最popular的LDA工具包,不过依然有明显的bug,参考“【LDA】修正 GibbsLDA++-0.2 中的两个内存问题”。
2. “GibbsLDA++-0.2”基本上使用纯c写的,变量命名采用数学符号,而不是很直观的描述型符号,不容易看懂。甚至在工作中,训练出结果之后,我总要对照着它的说明文件,才能反应过来每个结果文件都对应着什么。
3. “GibbsLDA++-0.2”将词表的提取和模型本身的训练放到一起了。这对于小规模的训练还可以,扫描一遍训练集就把此标题取出来、然后在内存里继续训练。不过对于稍大一点儿的规模,每次训练都抽取一遍词表是很傻的事情,而且很多问题中,训练集不见得能够涵盖词表中的所有词......总之,我把他们分开了。要有一个预处理过程(我没写)先从训练集合中抽取词表,然后和训练样本一起输入到模型当中,参与训练。
4. “GibbsLDA++-0.2”的无关代码太多了,如:解析命令行的代码、等等。实际上,比起命令行这种方式,我更愿意直接使用源代码。
5. 最重要一点原因,其实我是手痒痒了。
代码放到git上面了:https://github.com/henryxiao1997/LDACplus/
完。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/xceman1997/article/details/46884903