我有一个维度为2656242 x 630566的大标记dfm。我想把它转换成矩阵,但是对它的任何操作都会给出以下错误
asMethod(object)中的错误:文件./Core/ Cholmod _dense.c中的cholmod错误“问题太大”,第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)])我不能再继续下去了。想办法解决这个问题需要一些帮助。
提前谢谢。
发布于 2020-08-05 08:32:58
看起来你的dfm太大了。因此,首先问问自己是否真的需要将dfm对象转换为矩阵。如果您想要拟合一个以您的标记化文档作为输入的模型(例如,一个主题模型),您很可能不需要将dfm对象转换为一个矩阵!
如果不显式地需要矩阵,我建议首先将dfm对象转换为非quanteda格式;这可以使用
non_dfm <- quanteda::convert(train_tokens_dfm)。
然后,可以使用dfm_list<-non_dfm$vocab将dfm内容提取为列表列表。每个list元素与一个文档相关联,包含两行:第一行给出令牌的索引,第二行是该标记在文档中出现的次数。因此,您的信息与文档功能矩阵中包含的信息完全相同。
https://stackoverflow.com/questions/63260215
复制相似问题