2

我有一组文档,每个文档都包含 N 个单词。每个文档的第 i 个词是从一组公共词中选择的,Wi={wi1, wi2, wi3, wi4}。

例如,每个文档中的第一个单词可能选自:{'alpha', 'one', 'first', 'lowest'}。第二个词可能选自:{'beta', 'two', 'second', 'lower'}。等等。

这些词可能属于不同的主题。例如,一个主题可能由 {'alpha', 'beta', 'gamma', etc...} 组成。另一个主题可能是 {'alpha', 'two', 'third', etc...}。每个文档都有不同的主题用法(就像普通的主题模型一样)。

要生成一个新文档,您需要遍历每个位置 1...N。对于第 i 个词,您根据文档的主题用法选择一个主题,然后根据主题的词用法从 Wi 中选择一个词。因此,每个主题总共有 N 个单词 - 每个位置一个。

我的问题是如何学习这个模型中的潜在参数?具体来说,我想知道(1)每个文档的主题用法,以及(2)每个主题的单词组成。这看起来很像一个主题模型,但我不知道我是否可以使用任何开箱即用的东西?

因为我可以写出给定参数的数据的可能性,所以我尝试实现一个 EM 算法来估计 (1) 主题使用情况,然后使用它来更新 (2) 单词使用情况(并不断迭代直到收敛)。但是,这真的很慢。

我读过的另一件事是,如果我可以编写联合密度函数,我可以尝试从后验密度中采样来学习这些隐藏参数(使用 MCMC)。这听起来可行吗?我有大约 100 个文档,每个文档的长度约为 1000 个单词,在每个单词位置,您可以从 6 个单词中进行选择。

如果有人可以提供帮助或提供建议,我将不胜感激。谢谢!

4

2 回答 2

1

纯 EM 不适用于主题模型:您需要使用变分 EM,如Blei 等人的原始论文中所示。进行推理的另一种方法是使用折叠的 Gibbs 采样器,正如 Griffiths 等人的Finding Scientific Topics论文(以及许多其他论文)所描述的那样。

你能解释一下生成过程吗?您是说您从每个位置 i(标准 LDA)的不同主题中汲取灵感吗?您希望位置 i 的主题集与位置 i+1 不同?知道位置 i 的主题分配意味着您知道 i+1..n 的分配?如果您可以将其写为标准生成模型,那么弄清楚如何进行推理应该非常简单(我很乐意编辑我的答案)。

于 2014-01-28T11:26:38.933 回答
0

您没有明确说明这一点,但它在您的第 4 段中看起来很隐含:给定主题,为第 i 个插槽选择的单词的分布与已经(或将要)选择的单词无关插槽。

如果是这种情况,那么您的模型是(符合)朴素贝叶斯分类器,这可能是您最好的选择;这种类型的模型可以配置一次通过训练数据,并且应该比使用 EM 算法好得多。

如果您在给定类的单词之间存在相关性,则可能需要查看“Tree-Augmented Bayesian Classifiers”。

于 2014-01-24T19:04:29.683 回答