定义
对于一个文档集合来说,假如一篇文章是讲猫科动物的,那么可能会一部分讲猫, 一部分讲老虎, 一部分讲猎豹。那么讲猫的那一部分与猫有关的词语出现的频率应该高一些,比如“鱼”,“老鼠”等,讲老虎的那一部分与老虎有关的词语出现的频率应该高些,比如“森林之王”,“一山不容二虎”等,讲猎豹那一部分与猎豹有关的词语出现的频率应该高些,比如"速度",“豹纹”等等。所以一篇文档应该有多个主题,每个主题的比例不同,每一个主题下面也应该有很多词语,每个词语的比例也不同。
主题模型就是用数学框架来体现出文档的这种特点,主题模型自动分析每篇文档,统计文档内的词语,根据统计的信息来断定当前文档含有哪些主题,以及每个主题所占的比例各为多少。
从上面的定义可以看出,主题模型其实主要在学习两个分布,文档-主题分布(doc-topic)和主题-词分布(topic-word)。既然是分布就要满足两个条件,第一是非负性,第二是积分或者求和为1。也就是doc-topic矩阵或topic-word矩阵中,任意一行元素均为非负数且元素和为1。
研究模型
对于主题模型的研究其实很早就开始了,传统的代表性研究方法主要包括3个:潜在语义索引(LSA或LSI),概率性潜在语义索引(PLSA或PLSI)和隐含狄利克雷分配(LDA)。
上面三个模型分别与1998年,1999年和2003年提出,查资料发现,LDA的提出者里还有吴恩达。
后面的很多模型其实都是在LDA的基础上做的改进,主要有下面两个。
LDA也有一些缺点,比如LDA无法建模主题之间的相关性,所以有人针对这个问题于2007年提出了correlated topic model。LDA是无监督模型,但是有一些文本是有标签的,比如论文有关键词,那么关键词应该对主题有一定的约束,有人针对这个问题于2009年提出了Labeled LDA。
15年之后深度学习就开始大火了,所以有人将LDA和变分自编码器结合起来,使用神经网络来求解变分参数。主流的模型有NVDM,prodLDA和NTMR,分别于16年,17年,18年发表在ICML,ICLR和EMNLP上面。
下面我会分别更新LSA,PLSA和LDA等主题模型的讲解。