训练
基于gibbs分布的LDA大概训练过程:
推断过程: 主题分布数值的大小与长度无关。
1. 参数解释 返回的是
theta 其中 迭代iterations次后, theta[k] = (nd [k]+ alpha) / (ndsum + K * alpha)
V : 词典长度 K:topic个数 N:doc中词的个数
nw[V][K] : doc 的每个词v,被分配到 topic_k 的次数。
nd[K]: doc 中 命中 topic_k 词的个数。 <n ?
nwsum[K] : 所有词总共被分配给topic_k 的总次数。 每次iteration都累加?
ndsum: 数值 ,初始为doc中词的个数N。doc中还剩余多少个词。
z[N]: doc中每个词n对应的topic_id。
1. 初始化
随机为 doc的每个词 n 分配主题 , z[N];随之更新 nw、nd、nwsum
2. 迭代interactions 次,每次从前到后,迭代N个词。
1)取第n个词的topic,假设将这个词扔掉。因此随之更新 nw,nd,nwsum ;
2) 重新估计该词的topic。用多项式方法采样多项式分布,得到该词分配给每个topic的概率(次数),P[K] 。累计多项式分布的参数? 遍历P,得到第一个p[k]> 某值(随机值*所有概率的和) 的那个topic。即为新的topic。
3)随之更新各个参数。
3. 得到theta。
长短文本相似度计算(与短文本长度无关。但是,用topic-word共现次数,而不是用概率,是否相关。对于在语料库中出现比较少的词计算出来的相似度,是否有影响。)
http://blog.csdn.net/pipisorry/article/details/42129099
https://github.com/hankcs/LDA4j.git
http://blog.csdn.net/tanglizhe1105/article/details/50741356
http://nanjunxiao.github.io/2015/08/08/Topic-Model-LDA%E5%AE%9E%E6%88%98%E7%AF%87/