使用R

时间:2016-08-03 23:28:07

标签: r classification text-mining r-caret quanteda

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

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

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

1 个答案:

答案 0 :(得分:5)

你什么时候达到公羊限制?

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

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

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

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