我正在尝试了解Latent Dirichlet Allocation(LDA)。我有机器学习和概率论的基本知识,并基于这篇博客文章http://goo.gl/ccPvE我能够发展LDA背后的直觉。但是,我仍然没有完全理解其中的各种计算。我想知道有人可以使用一个非常小的语料库向我展示计算(比如说3-5个句子和2-3个主题)。
答案 0 :(得分:7)
Edwin Chen(曾在Twitter上工作)在他的博客中有an example。 5个句子,2个主题:
然后他做了一些“计算”
并猜测主题:
你的问题是他是如何得出这些数字的?这些句子中的哪些词带有“信息”:
现在让我们一个接一个地从每个主题中获取单词:
所以我的数字与陈的略有不同。也许他在“西兰花片”中加入了“片”这个词,指的是食物。
我们在脑海中进行了两次计算:
答案 1 :(得分:0)
LDA程序
第一步:浏览每个文档,并将文档中的每个单词随机分配给K个主题之一(预先选择K个主题)
Step2:这种随机分配可以提供所有文档的主题表示形式和所有主题的单词分布,尽管不是很好
因此,要改善他们: 对于每个文档d,遍历每个单词w并计算:
p(主题t |文档d):文档d中分配给主题t的单词所占的比例
p(单词w |主题t):在所有文档d中,主题w分配给主题t的比例来自单词w
第3步:为单词t重新分配一个新主题t',我们在其中选择主题t'的可能性
此生成模型预测主题t生成单词w的可能性。 我们将对语料库中的每个文档重复最后一步以使其达到稳态。
解决的问题
假设您有两个文档。
医生i:“ 他叫银行要钱。”
文件ii:“ 他的银行说这笔款项已获批准。”
在删除停用词,大写字母和标点符号之后。
之后,我们将从文档i中随机选择一个词(主题分配为 1 的词 bank ),并删除其分配的主题,并计算其新词的概率分配。
与主题1相比,非常适合主题2(区域为更大)的主题2的文档和单词。因此,我们对单词的新分配银行将成为主题2。