2015-01-13 55 views
1

我計算LDA的模型的估計與在Java中,我期待爲長期話題矩陣充分利用LDA模型字話題矩陣槌

計算模型,並獲得主題的文檔矩陣得好:

ParallelTopicModel model = ...;  //... estimating the model 
int numTopics = model.getNumTopics(); 
int numDocs = model.getData().size(); 

// Getting the topic-probabilities 
double[][] tmDist = new double[numDocs][]; 
for (int i = 0; i < numTopics; i++) { 
     tmDist[i] = model.getTopicProbabilities(i); 
} 

現在我只能讓高層ñ話:

Object[][] topWords = model.getTopWords(5); 
for(int i = 0; i < topWords.length; i++){ 
    for(int j = 0; j < topWords[i].length; j++){ 
     System.out.print(topWords[i][j] + " "); 
    } 
    System.out.println(); 
} 

的只有關於這個問題的答案我只發現這個問題的問題/答案是關於Mallet的命令行版本。

回答

-1

這段代碼將爲您提供特定文檔所有單詞的主題分配。

for (int topic = 0; topic < numTopics; topic++) { 
      Iterator<IDSorter> iterator = topicSortedWords.get(topic).iterator(); 
      out = new Formatter(new StringBuilder(), Locale.US); 
      out.format("%d\t%.3f\t", topic, model.getTopicProbabilities(docID)[topic]); 
      int rank = 0; 
      while (iterator.hasNext() && rank < 5) { 
       IDSorter idCountPair = iterator.next(); 
       out.format("%s (%.3f) ", dataAlphabet.lookupObject(idCountPair.getID()), idCountPair.getWeight()); 
       rank++; 
      } 
      System.out.println(out); 
     } 

     System.out.println("\n"); 
+1

謝謝Abhishek,但我已經知道這個例子(http://mallet.cs.umass.edu/topics-devel.php)。我正在尋找由字母x term - relation組成的數組/矩陣。 –

+0

是不是隻是將矩陣形式的上述代碼的輸出安排?對不起,如果我沒有正確理解你的問題。 –

+0

是的你是對的,它只是一個矩陣重新排列,填充空單元格(因爲不是每個主題都包含完整的字母表),然後在相對計數上對它們進行歸一化。 –