在 R 中处理文本分类和大型稀疏矩阵

Working with text classification and big sparse matrices in R

我正在处理文本多class class化项目,我需要构建文档/术语矩阵并使用 R 语言进行训练和测试。

我已经有不适合 R 中基矩阵 class 有限维数的数据集,需要构建大的稀疏矩阵才能 classify,例如, 10 万条推文。我正在使用 quanteda 包,因为它现在比 tm 包更有用和可靠,后者使用字典创建 DocumentTermMatrix,小数据集使得这个过程非常需要内存。目前,正如我所说,我使用 quanteda 构建等效的文档术语矩阵容器,稍后我将其转换为 data.frame 来执行训练。

我想知道有没有办法建立这么大的矩阵。我一直在阅读允许这种容器的 bigmemory 包,但我不确定它是否会与 caret 一起用于以后的 [=27] =] 化。总的来说,我想了解这个问题并构建一个解决方法,以便能够处理更大的数据集,因为 RAM 不是一个(大)问题(32GB),但我正在尝试找到一种方法来解决这个问题,但我感到完全迷失了关于它。

您是在什么时候达到 ram 限制的?

quanteda 是在中等数据集上使用 NLP 的好包。但我也建议尝试我的 text2vec 包。一般来说,它对内存非常友好,不需要将所有原始文本加载到 RAM 中(例如,它可以为 16gb 笔记本电脑上的维基百科转储创建 DTM)。

第二点,我强烈不建议将数据转换成data.frame。尝试直接使用 sparseMatrix 对象。

以下方法适用于文本分类:

  1. 带 L1 惩罚的逻辑回归(参见 glmnet 包)
  2. 线性 SVM(参见 LiblineaR,但值得搜索替代品)
  3. 也值得一试 `xgboost。我更喜欢线性模型。所以你可以试试线性助推器。