我有一组文档,每个文档都包含 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 个单词中进行选择。
如果有人可以提供帮助或提供建议,我将不胜感激。谢谢!