您的位置:首页 > 其它

LDA(文档主题生成模型)--零基础(一)

2015-08-18 20:45 260 查看
本文目的在于用最简单的语言,给大家介绍LDA的原理以及使用方法。

首先,我们这里有M篇文档,每篇文档有个单词,如果文档是英文,就是每个单独的单词;如果是中文,则需要分词处理,分词处理又需要用已有的分词的算法,比较复杂,所以我们这里先只考虑英文。我们现在想知道,每篇文章,它的主题是什么。最简单直接的想法是,我这里有K的主题,给出一个概率分布,告诉我这篇文章有多大可能属于第k个主题,。当然,概率和 。

如果我们能获得每篇文章关于主题的一个概率分布,那我们取它概率最大的那个主题,我们就能知道每篇文章的主题了。但是怎么去获得文章主题的概率分布呢,这是一个比较头疼的问题。因为,我们现在主题是什么都还不知道~~~尴尬。

那主题到底是什么呢?一般我们可能会想,是一个词,如“金融”,“编程”,“散文”...但这里我们考虑的稍微复杂一点,主题也是一个分布。其实我们仔细想想,为什么我们会说这篇文章属于“金融”类文章呢?如果由人脑来判断,我们可能会分析文章的语义,然后判断文章属于哪个主题。但计算机比人笨,除了运行速度比人脑快一点,它并不能理解语义。如果要让计算机来判断一篇文章属于哪个类别,最好的方法是做个统计,如果类似“金融”“信贷”“基金”的词汇出现的频率最高,那么计算机就判断,这篇文章属于“金融”类文章。

所以,这里我们假定,一个主题代表一个词汇的分布。比如,我们这里有N个词汇,如果我们确定了每个词汇可能出现的概率,我们就确定了一个主题。现在,你可能发现,这里已经有两个分布了,一个是文章关于主题的分布;一个是词汇关于主题的分布。

如果你发现这点,恭喜你已经达到机器的水平了,其实机器就是这么理解一篇文章的生成的。假设我们有一篇包含个单词的文章,并有K个主题。现在,文章关于主题的分布我们知道了,每个主题关于词汇的分布我们也知道了。首先,我们先根据文章的主题分布随机生成一个主题,不要问我怎么生成,你就当是在投骰子;然后,根据这个主题,我们再投一次骰子,于是我们就确定了一个单词。重复上面的过程次,我们就生成了一篇文章。

其实,细心的你会发现,这里一共有K+1个骰子。有一个骰子有K面,每一面代表一个主题。另外K个骰子,每个骰子有N面(假设总共只有N个词汇),每一面代表一个词汇。



请看下文。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息