6

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

4

2 回答 2

7

Edwin Chen(他在 Twitter 工作)在他的博客中有一个例子。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 解释为关于可爱的动物

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

  • 西兰花, 香蕉, 冰沙, 早餐, 咀嚼, 吃
  • 栗鼠, 小猫, 可爱, 采用, 仓鼠

现在让我们逐句从每个主题中获取单词:

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

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


我们在脑海中做了两个计算:

  • 查看句子并首先提出2个主题。LDA 通过将每个句子视为主题的“混合”并猜测每个主题的参数来做到这一点。
  • 来决定哪些词是重要的。LDA 使用“词频/逆文档频率”来理解这一点。
于 2012-12-14T04:03:25.680 回答
0

LDA 程序

Step1:遍历每个文档,将文档中的每个单词随机分配给K个主题之一(K是预先选择的)

Step2:这个随机分配给出了所有文档的主题表示和所有主题的单词分布,尽管不是很好

因此,为了改进它们:对于每个文档 d,遍历每个单词 w 并计算:

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

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

Step3: 重新分配单词 wa 新主题 t',我们选择主题 t' 的概率

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

该生成模型预测主题 t' 生成单词 w 的概率。我们将为语料库中的每个文档多次迭代最后一步以获得稳定状态。

求解计算

假设您有两个文件。

Doc i:“银行打电话询问这笔钱。”</p>

Doc ii:“银行说这笔钱已获批准。”</p>

删除停用词、大写和标点符号后。

语料库中唯一词: bank call about money boat 已批准 在此处输入图像描述 Next then,

在此处输入图像描述之后,我们将从 doc i(主题分配为1的词库) 中随机选择一个词,我们将删除其分配的主题,并计算其新分配的概率。

在此处输入图像描述

对于主题k=1 在此处输入图像描述

对于主题k=2 在此处输入图像描述

现在我们将计算这两个概率的乘积,如下所示: 在此处输入图像描述

主题 2(面积大于)比主题 1 更适合文档单词。因此,我们对词库的新分配将是主题 2。

现在,由于新的分配,我们将更新计数。 在此处输入图像描述

现在我们将重复相同的重新分配步骤。并遍历整个语料库的每个单词。 在此处输入图像描述

于 2020-12-10T15:48:53.767 回答