潜在Dirichlet分配解决方案示例

时间:2012-05-16 18:48:31

标签: lda topic-modeling

我正在尝试了解Latent Dirichlet Allocation(LDA)。我有机器学习和概率论的基本知识,并基于这篇博客文章http://goo.gl/ccPvE我能够发展LDA背后的直觉。但是,我仍然没有完全理解其中的各种计算。我想知道有人可以使用一个非常小的语料库向我展示计算(比如说3-5个句子和2-3个主题)。

2 个答案:

答案 0 :(得分:7)

Edwin Chen(曾在Twitter上工作)在他的博客中有an example。 5个句子,2个主题:

  • 我喜欢吃西兰花和香蕉。
  • 我早餐吃了香蕉和菠菜冰沙。
  • 龙猫和小猫很可爱。
  • 我姐姐昨天收养了一只小猫。
  • 看看这只可爱的仓鼠嚼着一块西兰花。

然后他做了一些“计算”

  • 第1句和第2句:100%主题A
  • 第3和第4句:100%主题B
  • 句子5:60%主题A,40%主题B

并猜测主题:

  • 主题A:30%西兰花,15%香蕉,10%早餐,10%咀嚼,......
    • 此时,您可以将主题A解释为关于食物
  • 主题B:20%的龙猫,20%的小猫,20%的可爱,15%的仓鼠,......
    • 此时,您可以将主题B解释为关于可爱的动物

你的问题是他是如何得出这些数字的?这些句子中的哪些词带有“信息”:

  • 西兰花,香蕉,冰沙,早餐,咀嚼,吃
  • chinchilla,小猫,可爱,收养,hampster

现在让我们一个接一个地从每个主题中获取单词:

  • 食物3,可爱0 - >的食品
  • 食物5,可爱0 - >的食品
  • 食物0,可爱3 - >的可爱
  • 食物0,可爱2 - >的可爱
  • 食物2,可爱2 - > 50%食物 + 50%可爱

所以我的数字与陈的略有不同。也许他在“西兰花片”中加入了“片”这个词,指的是食物。


我们在脑海中进行了两次计算:

  • 查看句子并首先提出2个主题。 LDA通过将每个句子视为主题的“混合”并猜测每个主题的参数来做到这一点。
  • 决定哪些词很重要。 LDA使用“term-frequency / inverse-document-frequency”来理解这一点。

答案 1 :(得分:0)

LDA程序

第一步:浏览每个文档,并将文档中的每个单词随机分配给K个主题之一(预先选择K个主题)

Step2:这种随机分配可以提供所有文档的主题表示形式和所有主题的单词分布,尽管不是很好

因此,要改善他们: 对于每个文档d,遍历每个单词w并计算:

  • p(主题t |文档d):文档d中分配给主题t的单词所占的比例

  • p(单词w |主题t):在所有文档d中,主题w分配给主题t的比例来自单词w

第3步:为单词t重新分配一个新主题t',我们在其中选择主题t'的可能性

  • p(主题t'|文档d)* p(单词w |主题t’)

此生成模型预测主题t生成单词w的可能性。 我们将对语料库中的每个文档重复最后一步以使其达到稳态。

解决的问题

假设您有两个文档。

医生i:“ 他叫银行要钱。

文件ii:“ 他的银行说这笔款项已获批准。

在删除停用词,大写字母和标点符号之后。

语料库中的独特词: 银行要求批准钱船 enter image description here 接下来,

enter image description here 之后,我们将从文档i中随机选择一个词(主题分配为 1 的词 bank ),并删除其分配的主题,并计算其新词的概率分配。

enter image description here

对于主题 k = 1 enter image description here

对于主题 k = 2 enter image description here

现在,我们将计算以下两个概率的乘积: enter image description here

与主题1相比,非常适合主题2(区域为更大)的主题2的文档单词。因此,我们对单词的新分配银行将成为主题2。

现在,由于新分配,我们将更新计数。 enter image description here

现在,我们将重复相同的重新分配步骤。并遍历整个语料库的每个单词。 enter image description here