LDA с topicmodels (R), как я могу увидеть, к каким темам относятся разные документы, с сохранением заголовков документов?

Я ценю ответ Бена здесь: LDA с тематическими моделями, как я могу увидеть, к каким темам принадлежат разные документы?

Мой вопрос: как сохранить заголовки документов на последнем шаге? Например:

Вручную создайте три документа.txt в отдельных текстовых файлах и сохраните их в каталоге ~Desktop/nature_corpus

Название первого документа: nature.txt

Содержание первого документа: существительное мира природы, Матери Природы, Матери Земли, окружающей среды; дикая природа, флора и фауна, сельская местность; вселенная, космос.

Название второго документа:servation.txt

Содержание второго документа: существительное сохранение тропических лесов: сохранение, защита, охрана, сохранность; забота, опека, земледелие, надзор; содержание, обслуживание, ремонт, реставрация; экология, экологизм.

Название третьего документа: bird.txt

Третий текст документа: существительное, кормящее птиц: мясо птицы; цыпленок, молодой, птенец; неформальный пернатый друг, птичка; волнистый попугайчик; (птицы) техническая авифауна.

#install.packages("tm")
#install.packages("topicmodels")
library(tm)
# Create DTM
#. The file path is a Mac file path.
corpus_nature_1 <- Corpus(DirSource("/Users/[home folder name]/Desktop/nature_corpus"),readerControl=list(reader=readPlain,language="en US")) 
corpus_nature_2 <- tm_map(corpus_nature_1,removeNumbers)
corpus_nature_3 <- tm_map(corpus_nature_2,content_transformer(tolower))
mystopwords <- c(stopwords(),"noun", "verb")
corpus_nature_4 <- tm_map(corpus_nature_3,removeWords, mystopwords)
corpus_nature_5 <- tm_map(corpus_nature_4,removePunctuation)
corpus_nature_6 <- tm_map(corpus_nature_5,stripWhitespace)
dtm_nature_1 <- DocumentTermMatrix(corpus_nature_6)

inspect(dtm_nature_1)
<<DocumentTermMatrix (documents: 3, terms: 42)>>
  Non-/sparse entries: 42/84
Sparsity           : 67%
Maximal term length: 16
Weighting          : term frequency (tf)
Sample             :
  Terms
Docs               avifauna birdie birds budgie chick feathered feeding fledgling fowl mother
bird.txt                1      1     2      1     1         1       1         1    1      0
conservation.txt        0      0     0      0     0         0       0         0    0      0
nature.txt              0      0     0      0     0         0       0         0    0      2

Модель темы работает с моделями темы:

# Run topic model 2 topics
library(topicmodels)
topicmodels_LDA_nature_2 <- LDA(dtm_nature_1,2,method="Gibbs",control=list(seed=1),model=NULL)
terms(topicmodels_LDA_nature_2,3)
     Topic 1  Topic 2   
[1,] "birds"  "avifauna"
[2,] "mother" "birdie"  
[3,] "chick"  "budgie"  

Как сохранить здесь заголовки документов (видимые в строке inspect(dtm_nature_1))?

# Create CSV Matrix 2 topics
matrix_nature_2 <- as.data.frame(topicmodels_LDA_nature_2@gamma)
names(matrix_nature_2) <- c(1:2)
write.csv(matrix_nature_2,"matrix_nature_2.csv")

#. Rows in this table are documents, columns are topics.
    1           2
1   0.46875     0.53125
2   0.52238806  0.47761194
3   0.555555556 0.444444444

Благодарю.

1 ответ

Я нашел этот обходной путь, но все равно был бы благодарен, если бы было более точное решение. После запуска всего кода выше, запустите это:

wordMatrix = as.data.frame( t(as.matrix(dtm_nature_1)) )
write.csv(wordMatrix,"dtm_nature_1.csv")

Затем импортируйте файл CSV, полученный из этого кода (сверху):

matrix_nature_2 <- as.data.frame(topicmodels_LDA_nature_2@gamma)
names(matrix_nature_2) <- c(1:2)
write.csv(matrix_nature_2,"matrix_nature_2.csv")

в Excel, а затем импортируйте dtm_nature_1.csv во второй лист файла Excel. Затем скопируйте список заголовков документов (заголовки столбцов) из dtm_nature_1.csv и вставьте специальные транспонированные их в чистый столбец таблицы для matrix_nature_2.csv.

Другие вопросы по тегам