我有一个尺寸为2656242 x 630566的大型标记化dfm。我想将其转换为矩阵,但任何类型的操作都会给我以下错误
错误asmethod(object): Cholmod错误'问题太大'at file… /Core/cholmod_dense.c,line 105
我到现在的代码如下:
Booker_PreSale = Samp2 %>% filter(Booking_Status=="Booker" & Pre_Post_Sale=="Pre-Sale")
Non_Booker_PreSale = Samp2 %>% filter(Booking_Status=="Non-Booker" & Pre_Post_Sale=="Pre-Sale")
data = rbind(Booker_PreSale,Non_Booker_PreSale)
data = data[,c(5,2)]
data = na.omit(data)
data$Booking_Status = as.factor(data$Booking_Status)
data$TextLength = nchar(as.character(data$comments))
library(caret)
set.seed(32984)
indexes = createDataPartition(data$Booking_Status,times = 1,
p=0.7,list = FALSE)
train = data[indexes,]
test = data[-indexes,]
library(quanteda)
train_tokens = tokens(as.character(train$comments), what = "word",
remove_numbers = TRUE, remove_punct = TRUE,
remove_symbols = TRUE, remove_hyphens = TRUE)
train_tokens = tokens_tolower(train_tokens)
train_tokens = tokens_select(train_tokens, stopwords(),
selection = "remove")
train_tokens = tokens_wordstem(train_tokens, language = "english")
train_tokens_dfm = dfm(train_tokens, tolower = FALSE)
train_tokens_matrix = as.matrix(train_tokens_dfm[,c(1:500)])
我无法再继续下去了。需要一些帮助来解决这个问题。
提前感谢。
似乎你的dfm太大了。因此,首先问问自己是否真的需要将你的dfm对象转换为矩阵。如果你想拟合一个将你的标记化文档作为输入的模型(例如,主题模型),你很可能不需要将dfm对象转换为矩阵!
如果您不明确需要矩阵,我建议您首先将dfm对象转换为非量子格式;这可以使用
non_dfm
然后,您可以使用将dfm内容提取为列表列表dfm_list