2017-12-05 12 views
1

Ich versuche strukturelle Topic-Modelle (mit stm Paket) auf der Dokument-Term-Matrix, die mit tm Paket vorbereitet wurde.STM: wie Metadaten bei der Konvertierung von tm zu stm Dokument-Term-Matrix zu halten?

ich einen Korpus in tm Paket gebaut, das die folgenden Metadaten enthält:

library(tm) 

myReader2 <- readTabular(mapping=list(content="text", id="id", sentiment = "sentiment")) 
text_corpus2 <- VCorpus(DataframeSource(bin_stm_df), readerControl = list(reader = myReader2)) 

meta(text_corpus2[[1]]) 
    id  : 11 
    sentiment: negative 
    language : en 

Nach einiger Text-Reinigung zu tun und die Ergebnisse als clean_corpus2 (Metadaten noch vorhanden) zu speichern, ich es ändere Zeit dokumentieren Matrix und dann lesen sie es als stm -kompatible Matrix:

library(stm) 

chat_DTM2 <- DocumentTermMatrix(clean_corpus2, control = list(wordLengths = c(3, Inf))) 
DTM2 <- removeSparseTerms(chat_DTM2 , 0.990) 
DTM_st <-readCorpus(DTM2, type = "slam") 

so weit, so gut. Allerdings, wenn ich versuchen, die Verwendung von Metadaten stm -kompatible Daten angeben, werden die Metadaten gegangen:

docsTM <- DTM_st$documents # works fine 
vocabTM <- DTM_st$vocab # works fine 
metaTM <- DTM_st$meta # returns NULL 

> metaTM 
NULL 

Wie halte ich die Metadaten aus tm -Generated Corpus in stm -kompatible Dokument-Begriff-Matrix? Irgendwelche Vorschläge willkommen, danke.

Antwort

1

Wie wäre es mit dem quanteda Paket?

Ohne die Fähigkeit, Ihr Objekt zuzugreifen, kann ich nicht garantieren, das funktioniert wörtlich, aber es sollte:

library("quanteda") 

# creates the corpus with document variables except for the "text" 
text_corpus3 <- corpus(bin_stm_df, text_field = "text") 

# convert to document-feature matrix - cleaning options can be added 
# see ?tokens 
chat_DTM3 <- dfm(text_corpus3) 

# similar to tm::removeSparseTerms() 
DTM3 <- dfm_trim(chat_DTM3, sparsity = 0.990) 

# convert to STM format 
DTM_st <- convert(DTM3, to = "stm") 

# then it's all there 
docsTM <- DTM_st$documents 
vocabTM <- DTM_st$vocab  
metaTM <- DTM_st$meta  # should return the data.frame of document variables 
+1

hallo, ich, dass am Ende herausgefunden, aber danke für hier die große Antwort veröffentlichen! –

Verwandte Themen