我正在努力对大型推文数据集进行文本分类,如果有人能给我指出正确的方向,我将不胜感激。
\n总体而言,我需要训练一个分类器来区分庞大数据集(最多 600 万个文本)上的两个类。我一直在食谱框架中执行此操作,然后通过tidymodels运行 glmnet lasso 。具体问题是我在计算 tf-idf 时内存不足。
\n我应该朝哪个方向努力来解决这个问题?我基本上可以批量手动获取所有 tf-idf 值,然后再次手动将它们组合成稀疏矩阵对象。这听起来很肛门,肯定有人以前遇到过这个问题并解决了它?另一种选择是 Spark,但它远远超出了我目前的能力范围,并且对于一次性任务来说可能有些过大了。或者也许我遗漏了一些东西,而现有的工具能够做到这一点?
\n具体来说,我在运行以下命令时遇到两种问题(变量应该是不言自明的,但我稍后将提供完整的可重现代码):
\nrecipe <-\n recipe(Class ~ text, data = corpus) %>% \n step_tokenize(text) %>%\n step_stopwords(text) %>% \n step_tokenfilter(text, max_tokens = m) %>% \n step_tfidf(text) %>% \n prep()\nRun Code Online (Sandbox Code Playgroud)\n如果corpus太大或者m太大,Rstudio就会崩溃。如果它们相当大,它会发出警告:
In asMethod(object) :\n sparse->dense coercion: allocating vector of size 1.2 GiB\nRun Code Online (Sandbox Code Playgroud)\n我在网上没有找到相关内容,我也不太明白。为什么它试图强迫某些东西从稀疏变成密集?这对于任何大型数据集来说肯定会带来麻烦。难道我做错了什么?如果这是可以预防的,也许我的完整数据集会有更好的运气?
\n或者是否没有希望step_tfidf应对 600 万个观测值并且对最大令牌没有限制?