Конвертировать один документ на строку в формат lda-c / dtm Блея для моделирования тем? - PullRequest
5 голосов
/ 06 января 2012

Я делаю скрытые анализы Дирихле для некоторых исследований и продолжаю сталкиваться с проблемой. Большинство программного обеспечения lda требует, чтобы документы были в формате doclines, то есть файл CSV или другой файл с разделителями, в котором каждая строка представляет весь документ. Однако для lda-c Blei и программного обеспечения динамической тематической модели требуется, чтобы данные были в формате: [M] [term_1]:[count] [term_2]:[count] ... [term_N]:[count], где [M] - количество уникальных терминов в документе и [количество], связанное с каждым термин, сколько раз этот термин появился в документе. Обратите внимание, что [term_1] является целым числом, которое индексирует срок; это не строка.

Кто-нибудь знает утилиту, которая позволит мне быстро конвертировать в этот формат? Спасибо.

Ответы [ 4 ]

3 голосов
/ 07 декабря 2012

Если вы работаете с R, пакет lda содержит функцию lexicalize, которая преобразует необработанный текст в формат lda-c, необходимый для пакета lda.

example <- c("I am the very model of a modern major general",
             "I have a major headache")

corpus <- lexicalize(example, lower=TRUE) 

Аналогично, в пакете topicmodels есть функция dtm2ldaformat, которая преобразует матрицу терминов документа в формат lda. Вы можете преобразовать простой текстовый документ в матрицу терминов документа, используя пакет tm, также в R.

Таким образом, благодаря этим существующим функциям существует большая гибкость при вводе текста в R для моделирования тем.

2 голосов
/ 25 февраля 2013

Другой вариант - пакет Маллет из Массачусетского университета в Амхерсте.

А вот отличная пошаговая демонстрация того, как использовать Маллет:

Вы можете использовать молоток только с обычными текстовыми файлами в качестве источника ввода.

1 голос
/ 04 января 2013

Gensim предлагает реализацию формата корпуса Blei.Смотрите здесь .Вы можете написать быстрый корпус на основе вашего CSV-файла в Python , а затем сохранить его в lda-c с помощью gensim.Это не должно быть слишком сложно.

0 голосов
/ 16 мая 2018

Для Python для этого есть доступная функция (может быть недоступна на момент вопроса).

lda.utils.dtm2ldac

Документ https://pythonhosted.org/lda/api.html#module-lda.utils

...