Получение словарно-тематической матрицы из LDA-модели в Mallet

Я рассчитываю модельную оценку LDA с помощью Mallet в Java и ищу матрицу терминов-тем.

Расчет модели и получение матрицы темы-документа проходит успешно:

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 для командной строки.


person Ben Baker    schedule 13.01.2015    source источник


Ответы (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");
person London guy    schedule 15.01.2015
comment
Спасибо, Абхишек, но я уже знал этот пример (mallet.cs.umass.edu/topics- devel.php). Я искал массив/матрицу, состоящую из термина алфавита x - отношение. - person Ben Baker; 19.01.2015
comment
Разве это не просто организация вывода приведенного выше фрагмента кода в виде матрицы? Извините, если я не правильно понял ваш вопрос. - person London guy; 20.01.2015
comment
Да, вы правы, это просто перестановка в виде матрицы, заполнение пустых ячеек (поскольку не каждая тема состоит из полного алфавита), а затем их нормализация по относительным подсчетам. - person Ben Baker; 22.01.2015