2014-01-24 19 views
2

我有一個模型生成的功能lda.collapsed.gibbs.sampler,從lda包,我需要知道頂部的「相關性」話。 當使用lda.collapsed.gibbs.sampler模型和頂級單詞排名

top.topic.words(result$topics, 10, by.score=TRUE) 

我得到的前10個字每個主題的列表,但我想看到的題目的百分比的10個字代表。我猜這些信息是存在的,因爲有一個「分數」,但我對吉布斯採樣器的統計方法並不十分熟悉。

提前致謝!

+0

你能澄清你的話題的百分比是什麼意思?你的意思是這個話題中的任何一個詞出現的概率是多少?或者可能是這些主題詞對的Gibbs分配的一部分? –

+0

第二個,我想。我想知道這個詞在這個話題中有多重「重量」。我不太確定那個正式表達式爲:( –

回答

2

我覺得這樣的事情可能是你想要什麼:

for (ii in 1:nrow(result$topics)) { 
    print(
    head(
     cumsum(
     sort(result$topics[ii,], decreasing=TRUE) 
    ), 
     n = 20 
    )/result$topic_sums[ii] 
) 
} 

讓我們來分析一下。如果你想要吉布斯分配的一小部分,那很簡單。 LDA例程返回每個(單詞,主題)對的分配數量。因此,您所要做的就是對result$topics的每一行進行排序以獲取最前面的單詞(如果您設置by.score=FALSE,這基本上就是top.topic.words所做的)。一旦按排序順序排列後,您可以針對每個主題查看該單詞與整個主題的統計數量。爲此,我除以result$topic_sums,其中包含該主題的分配總數。最後,我使用cumsum,以便您可以看到該主題中單詞的運行總重量。