Преобразование одного документа в строку в формат Blei lda-c/dtm для тематического моделирования?

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

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


person Community    schedule 05.01.2012    source источник
comment
Я сталкиваюсь с подобными проблемами, вы случайно не нашли решения? Спасибо.   -  person user288609    schedule 10.03.2012
comment
Я еще не реализовал ее, но эта утилита Python была отправлена ​​в список рассылки тематических моделей и предполагается брать текстовые файлы и преобразовывать их в нужный формат.   -  person    schedule 10.03.2012
comment
Большое спасибо, это очень полезно.   -  person user288609    schedule 13.03.2012


Ответы (4)


Если вы работаете с 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 для тематического моделирования.

person Ben    schedule 07.12.2012

Еще один вариант — пакет Mallet от Массачусетского университета в Амхерсте.

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

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

person Mountain    schedule 25.02.2013

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

person Karsten    schedule 04.01.2013

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

lda.utils.dtm2ldac

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

person Lei Hao    schedule 16.05.2018