如何用lda-ruby获得p(单词|主题)

时间:2016-04-14 08:07:30

标签: python ruby

我的算法需要计算p(words|topic)。 通过Python lda,我们可以很容易地得到p(words|topic)

>>> print(ldamodel.print_topics(num_topics=2, num_words=4))
['0.054*pressur + 0.054*drive + 0.054*brother + 0.054*mother', '0.070*brocolli + 0.070*good + 0.070*health + 0.050*eat']

但是,对于lda-ruby gem,print_top_words只能输出已排序的单词(根据主题),但它们的概率仍然未知:

2.2.3 :066 > lda.top_words 2
{
     0 => [
        [0] "i",
        [1] "new"
    ],
     1 => [
        [0] "government",
        [1] "officials"
    ],

    ...

    19 => [
        [0] "i",
        [1] "children"
    ]
}

我发现top_words正在使用lda#beta对每个主题的单词进行排序,beta是[topic_num * words_num] 2D_matrix,其中填充了负浮点数,范围从-800~0(大约),浮点数越大(接近0),top_words排名的单词越高。

我认为我接近我的对象(get p(words|topic)),但我不知道如何解释这个beta矩阵。它不同于其他矩阵lda#gamma([doc_num * topic_num],填充正浮点数,在归一化后可以解释为p(topic|doc),因为beta充满了负数,我还没有找到关于它的指令。

有没有人知道如何在lda-ruby中使用测试版或其他任何内容来获取p(words|topic)

0 个答案:

没有答案