2017-12-05 20 views
1

tmパッケージを使用して準備されたドキュメント用語マトリックスで、構造化トピックモデル(stmパッケージを使用)を実行しようとしています。STM:tmからstmへの変換時にメタデータを保持する方法

私は、次のメタデータが含まれていtmパッケージ内のコーパス構築された:いくつかのテキストクリーニングを行うと、clean_corpus2(まだ存在するメタデータ)として結果を保存した後

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 

を、私はマトリックス・ターム文書にそれを変更

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") 

これまでのところ、とても良い:その後、stm互換行列としてそれを読みます。しかし、私はstm互換データを使用してメタデータを指定しようとすると、メタデータがなくなっている:

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

> metaTM 
NULL 

にはどうすればtmからメタデータを保持しないstm互換文書長期行列にコーパスを-generated?どんな提案もありがとうございます。

答えて

1

quantedaパッケージを試してみてはいかがですか?

あなたのオブジェクトにアクセスする能力がなければ、私はこれがそのまま動作する保証はできませんが、それが必要:

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

こんにちは、私は最後にそれを考え出したが、ここでは偉大な答えを投稿してくれてありがとう! –

関連する問題