我試圖找出分配給主題中每個單詞的重量代表了馬槌中的重量。在Mallet中計算的主題中單詞的權重是多少?
我假設這是某種形式的文檔發生計數。不過,我很難弄清楚這個數字是如何得出的。
在我的模型,也有發生在多個主題幾個單詞,每個主題在他們分配不同的權重,這麼清楚的數量是不字數在整個語料庫。我的下一個猜測是,這個數字是分配給該主題的全套文檔中單詞的出現次數,但是當我嘗試手動驗證時,這似乎是不正確的。
作爲一個例子:我訓練模型在約12000文檔語料庫(阿爾法0.1,β0.01,T = 50)。訓練結束後,我的模型有以下主題:
t1 = "knoflook (158.0), olie (156.0), ...."
所以單詞「knoflook」被賦予158的權重然而,當我手動算在我的文集含有該詞和有文檔的數量t1
分配,我得到一個完全不同的數字(1855年)。
這有可能是我的手工驗證是關閉的,當然,但它是需要了解的,一般來講,怎麼每個主題中的詞權重得出的。
順便提及,上面的主題是基於以下代碼渲染:
// The data alphabet maps word IDs to strings
Alphabet dataAlphabet = instances.getDataAlphabet();
// Get an array of sorted sets of word ID/count pairs
ArrayList<TreeSet<IDSorter>> topicSortedWords = topicModel.getSortedWords();
for (int t = 0; t < numberOfTopics; t++) {
Iterator<IDSorter> iterator = topicSortedWords.get(t).iterator();
StringBuilder sb = new StringBuilder();
while (iterator.hasNext()) {
IDSorter idWeightPair = iterator.next();
final String wordLabel = dataAlphabet.lookupObject(idWeightPair.getID()).toString();
final double weight = idWeightPair.getWeight();
sb.append(wordLabel + " (" + weight + "), ");
}
sb.setLength(sb.length() - 2);
// sb.toString is now a human-readable representation of the topic
}
感謝這一點,非常清楚的解釋。 –