提问者:小点点

如何将大型标记化dfm转换为R中的矩阵?


我有一个尺寸为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)])

我无法再继续下去了。需要一些帮助来解决这个问题。

提前感谢。


共1个答案

匿名用户

似乎你的dfm太大了。因此,首先问问自己是否真的需要将你的dfm对象转换为矩阵。如果你想拟合一个将你的标记化文档作为输入的模型(例如,主题模型),你很可能不需要将dfm对象转换为矩阵!

如果您不明确需要矩阵,我建议您首先将dfm对象转换为非量子格式;这可以使用

non_dfm

然后,您可以使用将dfm内容提取为列表列表dfm_list