如何对文档术语矩阵进行子集化以进行训练
How to subset a document term matrix for training
我有一个文档术语矩阵,我想将其分成两部分,一组用于训练,另一组用于测试。
我试过下面的代码:
library(tm)
text.vector <- c("The quick brown dog",
"jumped over",
"the lazy fox",
"How now brown cow",
"The cow jumped over the moon")
text.corpus <- VCorpus(VectorSource(text.vector))
text.dtm <- DocumentTermMatrix(text.corpus)
set.seed(123)
train.vector <- sample(5,2,replace=F)
train.vector
train.boolean <- text.dtm$i %in% train.vector
train.boolean
text_train.dtm <- text.dtm[train.boolean,]
text_test.dtm <- text.dtm[!train.boolean,]
table(text.dtm$i)
table(text_train.dtm$i)
table(text_test.dtm$i)
text.dtm
text_train.dtm
text_test.dtm
实际结果为:
> table(text.dtm$i)
1 2 3 4 5
4 2 3 4 5
> table(text_train.dtm$i)
1
5
> table(text_test.dtm$i)
1 2 3 4
4 2 3 4
我的预期结果是包含两个文档(#2 和 #4)的训练矩阵和包含三个文档(#1、#3 和 #5)的测试矩阵:
> table(text.dtm$i)
1 2 3 4 5
4 2 3 4 5
> table(text_train.dtm$i)
2 4
2 4
> table(text_test.dtm$i)
1 3 5
4 3 5
谁能帮我理解为什么这不起作用?谢谢
您可以简化您的代码,仅通过 dtm$dimnames$Documents 中的位置信息进行子集
希望对您有所帮助:
set.seed(123)
train.vector <- sample(5,2,replace=F)
train.vector
text_train.dtm <- text.dtm[text.dtm$dimnames$Docs %in% train.vector,]
text_test.dtm <- text.dtm[!(text.dtm$dimnames$Docs %in% train.vector),]
table(text.dtm$i)
1 2 3 4 5
4 2 3 4 5
table(text_train.dtm$i)
1 2
2 4
table(text_test.dtm$i)
1 2 3
4 3 5
我有一个文档术语矩阵,我想将其分成两部分,一组用于训练,另一组用于测试。
我试过下面的代码:
library(tm)
text.vector <- c("The quick brown dog",
"jumped over",
"the lazy fox",
"How now brown cow",
"The cow jumped over the moon")
text.corpus <- VCorpus(VectorSource(text.vector))
text.dtm <- DocumentTermMatrix(text.corpus)
set.seed(123)
train.vector <- sample(5,2,replace=F)
train.vector
train.boolean <- text.dtm$i %in% train.vector
train.boolean
text_train.dtm <- text.dtm[train.boolean,]
text_test.dtm <- text.dtm[!train.boolean,]
table(text.dtm$i)
table(text_train.dtm$i)
table(text_test.dtm$i)
text.dtm
text_train.dtm
text_test.dtm
实际结果为:
> table(text.dtm$i)
1 2 3 4 5
4 2 3 4 5
> table(text_train.dtm$i)
1
5
> table(text_test.dtm$i)
1 2 3 4
4 2 3 4
我的预期结果是包含两个文档(#2 和 #4)的训练矩阵和包含三个文档(#1、#3 和 #5)的测试矩阵:
> table(text.dtm$i)
1 2 3 4 5
4 2 3 4 5
> table(text_train.dtm$i)
2 4
2 4
> table(text_test.dtm$i)
1 3 5
4 3 5
谁能帮我理解为什么这不起作用?谢谢
您可以简化您的代码,仅通过 dtm$dimnames$Documents 中的位置信息进行子集
希望对您有所帮助:
set.seed(123)
train.vector <- sample(5,2,replace=F)
train.vector
text_train.dtm <- text.dtm[text.dtm$dimnames$Docs %in% train.vector,]
text_test.dtm <- text.dtm[!(text.dtm$dimnames$Docs %in% train.vector),]
table(text.dtm$i)
1 2 3 4 5
4 2 3 4 5
table(text_train.dtm$i)
1 2
2 4
table(text_test.dtm$i)
1 2 3
4 3 5