利用LDA分析《天龙八部》中每十回的话题演变情况
一.LDA主题分配模型简介
1.1 LDA是什么
在机器学习领域LDA是两种模型的简称,一种是统计学中的线性判别分析(Linear Discriminant Analysis,简称LDA主要用于降维),另一种是隐狄利克雷分配模型(Latent Dirichlet Allocation,简称LDA)是一种非监督学习技术,可以用来识别大规模文档集(documentcollection)或语料库(corpus)中潜藏的主题信息。它采用了词袋(bag of words)的方法,这种方法将每一篇文档视为一个词频向量,从而将文本信息转化为了易于建模的数字信息。本文主要讨论的为后一种LDA。
传统判断两个文档相似性的方法是通过查看两个文档共同出现的单词的多少,如TF-IDF(TFIDF实际上是:TF* IDF,TF词频,IDF逆向文件频率)等。这些基于词频统计的方法没有考虑到文字背后的语义关联,可能在两个文档共同出现的单词很少甚至没有,但两个文档是相似的。
举个例子,有两个句子分别如下:
“川普王,大美兴”
“希拉里大选落败”
可以看到上面这两个句子没有共同出现的单词,但这两个句子是相似的,如果按传统的方法判断这两个句子肯定不相似,所以在判断文档相关性的时候需要考虑到文档的语义,而语义挖掘的利器是主题模型,LDA就是其中一种比较有效的模型。
1.2 LDA涉及到的基本概念
LDA话题模型中的四个基本概念:
词(word):数据处理的基本单元,如一个英文单词,一个英文词语
文档(document):待处理的数据对象,由一系列无序的词组成
话题(topic):一些列相关的词,以及它们的联合概率
字典:待处理文档集合中的所有词
如图,一个话题就像一个箱子,里面装着在这个概念下出现频率较高的那些词。
假定数据集中包含K个话题和T篇文档,文档中的词来自一个包含N个词的字典。那么我们可以用T个N维向量来表示数据集,每一行代表一篇文档,每一列代表该词在该文档中出现的频度。K个N维向量表示K个话题,每一行表示一个话题,每一列表示该词在该话题中出现的频数。
1.3什么是生成式模型
如果我们要生成一篇文档,它里面的每个词语出现的概率为:
这个概率公式可以用矩阵表示:
其中”文档-词语”矩阵表示每个文档中每个单词的词频,即出现的概率;”主题-词语”矩阵表示每个主题中每个单词的出现概率;”文档-主题”矩阵表示每个文档中每个主题出现的概率。
给定一系列文档,通过对文档进行分词,计算各个文档中每个单词的词频就可以得到左边这边”文档-词语”矩阵。主题模型就是通过左边这个矩阵进行训练,学习出右边两个矩阵。
LDA的三位作者在原始论文中给了一个简单的例子。比如给定这几个主题:Arts、Budgets、Children、Education,在这几个主题下,可以构造生成跟主题相关的词语,如下图所示:
然后可以根据这些词语生成如下图所示的一篇。文章(其中不同颜色的词语分别对应上图中不同主题下的词)
表面上理解LDA比较简单,无非就是:当看到一篇文章后,我们往往喜欢推测这篇文章是如何生成的,我们可能会认为某个作者先确定这篇文章的几个主题,然后围绕这几个主题遣词造句,表达成文。
根据维基百科上,面的介绍,在LDA模型中一篇文档生成的方式如下:
· 从狄利克雷分布 中取样生成文档i的主题分布
· 从主题的多项式分布 中取样生成文档i第j个词的主题
· 从狄利克雷分布 中取样生成主题 的词语分布
· 从词语的多项式分布 中采样最终生成词语
其中,类似Beta分布是二项式分布的共轭先验概率分布,而狄利克雷分布是多项式分布的共轭先验概率分布。
此外,LDA贝叶斯网络结构如下图所示:
我们可以看到上面短短的6句话却接连不断或重复出现了beta分布、狄利克雷分布(Dirichlet分布)、共轭先验概率分布、取样,那么请问,这些都是啥呢?