Заданный размер вектора слишком велик в R - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь получить твиты для одного из ключевых слов, скажем, "zomato", и пытаюсь выполнить тематическое моделирование для извлеченных твитов.Ниже приводится функция поиска для получения твитов.

 search <- function(searchterm)
 {
 #access tweets and create cumulative file

 list <- searchTwitter(searchterm, n=25000)
 df <- twListToDF(list)
 df <- df[, order(names(df))]
 df$created <- strftime(df$created, '%Y-%m-%d')
 if (file.exists(paste(searchterm, '_stack.csv'))==FALSE) write.csv(df, file=paste(searchterm, '_stack.csv'), row.names=F)
#merge last access with cumulative file and remove duplicates
 stack <- read.csv(file=paste(searchterm, '_stack.csv'))
 stack <- rbind(stack, df)
 stack <- subset(stack, !duplicated(stack$text))

return(stack)

}
ZomatoResults<- search('Zomato') 

После этого я делаю чистку твитов, которая выполняется нормально и хранится в переменной "ZomatoCleaned".Я не добавил этот кусок кода.А затем я формирую корпус для моделирования темы, как показано ниже

options(mc.cores = 1)  # or whatever
tm_parLapply_engine(parallel::mclapply) 

corpus <- Corpus(VectorSource(ZomatoCleaned))  # Create corpus object
corpus <- tm_map(corpus, removeWords, stopwords("en"))  
corpus <- tm_map(corpus, removeNumbers)
corpus <- tm_map(corpus, stemDocument)
pal <- brewer.pal(8, "Dark2")
dev.new(width = 1000, height = 1000, unit = "px")
wordcloud(corpus, min.freq=2, max.words = 100, random.order = TRUE, col = pal)
dat <- DocumentTermMatrix(corpus)
dput(head(dat))
doc.lengths <- rowSums(as.matrix(DocumentTermMatrix(corpus)))
dtm <- DocumentTermMatrix(corpus[doc.lengths > 0])
# model <- LDA(dtm, 10)  # Go ahead and test a simple model if you want

SEED = sample(1:1000000, 1)  # Pick a random seed for replication
k = 10  # Let's start with 10 topics

models <- list(
  CTM       = CTM(dtm, k = k, control = list(seed = SEED, var = list(tol = 10^-4), em = list(tol = 10^-3))),
  VEM       = LDA(dtm, k = k, control = list(seed = SEED)),
  VEM_Fixed = LDA(dtm, k = k, control = list(estimate.alpha = FALSE, seed = SEED)),
  Gibbs     = LDA(dtm, k = k, method = "Gibbs", control = list(seed = SEED, burnin = 1000,
                                                               thin = 100,    iter = 1000))
)

lapply(models, terms, 10)
assignments <- sapply(models, topics) 
head(assignments, n=10)

К сожалению, в

doc.lengths <- rowSums(as.matrix(DocumentTermMatrix(corpus)))

я получаю сообщение об ошибке «Указанный размер вектора слишком велик в R» илиmsgstr "невозможно выделить вектор размером 36.6 Гб".Я использую 8Gb Ram System и Rstudio 3.5.2. Я запустил команду gc () и попытался установить memory.limit (), но не помог.Есть ли обходной путь для работы с этим набором данных?Я знаю, что это проблема с памятью, но, пожалуйста, помогите по этому вопросу о том, как справиться с этим сценарием

Ошибка моделирования темы Zomato

O / P dat: структура (c (0,1, 0, 0, 0, 0), weighting = c ("частота терминов", "tf"), class = c ("DocumentTermMatrix", "simple_triplet_matrix"))

Выходное изображение Dat

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...