赞
踩
LDA算是NLP中相对比较难的一个,涉及到诸多统计方面的理论。虽然从开始准备到这篇文章发布,断断续续准备了近一个月,还是只能把其中主干拎出来,很多细节还需要慢慢沉淀,今天先把这篇粗糙的文章发出来,以示对过去一个月零碎时间的交代。
LDA(Latent Dirichlet Allocation)是主题模型的一种,它基于词袋模型BOW(Bag of words), 与BOW相对的是n-gram模型,前者不考虑词的先后顺序,而后者考虑。因此,我们最终得到的模型——topic-word共现矩阵没有序列的信息。
同其他主题模型一样,LDA模型描述的也是“文章-主题-词”之间的关系。LDA算法复杂的原因之一,则是在算法中用到多个分布和采样收敛。其算法如下:
写到这里,我们就需要解释两个问题:
看完算法之后,我们的疑惑点又来了,在实际项目中,LDA首先要解决的问题是:如何生成主题模型?然而以上算法并不能直接获取主题模型。其实,通过以上算法,我们不难得到其目标函数,有了目标函数就可以像其他算法一样进行迭代计算了(这里没有列出目标函数,笔者并不能自己推导出公式,所以想看目标函数的可以去网上查下即可)。
那么LDA的训练过程如下:
在LDA中,主题的数目算是一个超参,需要在训练模型时,事先设置主题数。这个超参往往需要对业务和数据有一定的了解,或者针对业务特定的一些需要,设置一个值。主题的取值范围可以从1到语料库的所有词总数(无重复词),所以无法得到主题数目的一个最优解,在训练过程中需要手动调参,优化主题数目,进而优化模型效果。
更多内容,欢迎关注“机器爱学习”公众号~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。