使用R中的文本分类和大稀疏矩阵

Ed.*_*Ed. 2 r classification text-mining r-caret quanteda

我正在研究一个文本多类分类项目,我需要构建文档/术语矩阵,并用R语言进行训练和测试.

我已经有了不适合R中基矩阵的有限维度的数据集,并且需要构建大的稀疏矩阵才能对例如100k的推文进行分类.我正在使用quanteda软件包,因为它现在比包tm更有用和可靠,其中使用字典创建DocumentTermMatrix,使得过程难以置信地使用小数据集.目前,正如我所说的,我使用quanteda来构建等效的Document Term Matrix容器,稍后我将其转换为data.frame来执行培训.

我想知道是否有办法建立这么大的矩阵.我一直在阅读有关的bigmemory包,允许这种容器的,但我不知道它会与插入符号为后来的分类.总的来说,我想了解这个问题并构建一个解决方法,以便能够处理更大的数据集,因为RAM不是(大)问题(32GB),但我正试图找到一种方法来做到这一点,我觉得完全失去了关于它.

Dmi*_*nov 6

你什么时候达到了ram约束?

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

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

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

  1. 具有L1惩罚的逻辑回归(见glmnet包)
  2. 线性SVM(参见LiblineaR,但值得搜索备选方案)
  3. 也值得尝试`xgboost.我更喜欢线性模型.所以你可以试试线性助推器.