3

全部,

我一直在一组文档上运行 Y!LDA (https://github.com/shravanmn/Yahoo_LDA),结果看起来很棒(或者至少是我所期望的)。现在我想使用生成的主题对语料库执行反向查询。有谁知道运行 learntopics 可执行文件后生成的 3 个人类可读文本文件是否是该库的最终输出?如果是这样,那是我需要解析来执行我的查询吗?在这一点上,我有点耸耸肩……

谢谢,亚当

4

1 回答 1

1

如果 LDA 以我认为的方式工作(我使用 java 实现,因此解释可能会有所不同),那么你得到的是以下三件事:

  1. P(word,concept) -- 给定一个概念得到一个词的概率。因此,当 LDA 确定语料库中存在哪些概念时,这个 P(w,c) 将告诉您(理论上)哪些词映射到哪些概念。

    确定概念的一种非常简单的方法是将此文件加载到矩阵中,并以某种方法(加法、乘法、均方根)将测试文档的所有可能概念的所有这些概率组合起来,并对概念进行排序。

    请注意,上述方法无法识别由弱表示主题或 LDA 中的主导主题引入的各种偏差。为了适应这种情况,您需要更复杂的算法(例如吉布斯采样),但这会给您一些结果。

  2. P(concept,document)——如果你试图在语料库的文档中找到内在概念,你会看这里。您可以将文档用作具有特定概念分布的文档的示例,并将您的文档与 LDA 语料库文档进行比较……这有一些用途,但它可能不如 P(w,c) 有用。

  3. 其他可能与单词、文档或概念的权重有关的东西。这可以像一组带有 beta 权重(对于概念)的概念示例或从 LDA 输出的一些其他变量一样简单。这些可能重要也可能不重要,具体取决于您在做什么。(如果您尝试将文档添加到 LDA 空间,具有 alpha 或 beta 值 - 非常重要。)

要回答您的“反向查找”问题,以确定测试文档的概念,请对测试文档中的每个单词 w 使用 P(w,c)。

要确定哪个文档与测试文档最相似,请确定上述概念,然后将它们与 P(c,d) 中找到的每个文档的概念进行比较(使用每个概念作为向量空间中的维度,然后确定余弦两个文件之间往往工作正常)。

要确定两个文档之间的相似性,与上述相同,只需确定两个概念向量之间的余弦即可。

希望有帮助。

于 2012-12-31T03:34:20.787 回答