如何采样DTM?我尝试了很多代码,但返回了相同的错误
dtm [splitter,]中的错误:尺寸数不正确
这是代码:
n <- dtm$nrow
splitter <- sample(1:n, round(n * 0.75))
train_set <- dtm[splitter, ]
valid_set <- dtm[-splitter, ]
您可以为此使用Quanteda软件包。请参见下面的示例:
基于tm的原始数据集创建的数据示例:
library(tm)
data("crude")
crude <- as.VCorpus(crude)
crude <- tm_map(crude, stripWhitespace)
crude <- tm_map(crude, removePunctuation)
crude <- tm_map(crude, content_transformer(tolower))
crude <- tm_map(crude, removeWords, stopwords("english"))
crude <- tm_map(crude, stemDocument)
dtm <- DocumentTermMatrix(crude)
library(quanteda)
# Transform your dtm into a dfm for quanteda
my_dfm <- as.dfm(dtm)
# number of documents
ndocs(my_dfm)
[1] 20
set.seed(4242)
# create training
train_set <- dfm_sample(my_dfm,
size = round(ndoc(my_dfm) * 0.75), # set sample size
margin = "documents")
# create test set by select the documents that do not match the documents in the training set.
test_set <- dfm_subset(my_dfm, !docnames(my_dfm) %in% docnames(train_set))
# number of documents in train
ndoc(train_set)
[1] 15
# number of documents in test
ndoc(test_set)
[1] 5
之后,您可以使用Quanteda函数convert
将您的训练集和测试集转换为与topicmodels,lda,lsa等一起使用。有关?convert
更多信息,请参见。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句