java - 从 Mallet 中的 LDA 模型获取词主题矩阵

标签 java matrix lda mallet

我正在使用 Java 中的 Mallet 计算 LDA 的模型估计,并且正在寻找 term-topic-matrix

计算模型并顺利得到主题-文档-矩阵:

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);
}

现在我只能得到前 n 个词:

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 的命令行版本。

最佳答案

这段代码将为您提供特定文档的所有单词的主题分配。

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");

关于java - 从 Mallet 中的 LDA 模型获取词主题矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27933283/

相关文章:

java - 为什么 [import java.awt.*] 不包括 [import java.awt.event.ActionEvent]?

matlab - 将 bsxfun 与具有三维矩阵的单例扩展一起使用

c - 添加两行并将总和存储在最后一行

Python如何创建一个文档矩阵,其中(i,j)条目作为术语索引

machine-learning - 如何使用 LDA 或任何主题建模算法获取文档的意图

java - 创建没有 Vaadin 插件的 Vaadin 项目

java - Hibernate 继承 JOINED + TABLE PER CLASS

java - 如何检查一个对象是否存在于java中的LinkedList中?

c - FLOPS Intel 内核并使用 C(内积)对其进行测试

scikit-learn - 使用 scikit-learn 为 LDA 查找每个主题的文档数