我需要生成与dtm中的列完全相同的文档矩阵,我运行建模,否则我无法在新文档上使用随机森林模型。
在quanteda你可以设置一个测试组相同的方法,使用dfm_select()
训练集的特征。例如,为了使下面dfm1
具有相同的功能,以dfm2
:
txts <- c("a b c d", "a a b b", "b c c d e f")
(dfm1 <- dfm(txts[1:2]))
## Document-feature matrix of: 2 documents, 4 features (25% sparse).
## 2 x 4 sparse Matrix of class "dfmSparse"
## features
## docs a b c d
## text1 1 1 1 1
## text2 2 2 0 0
(dfm2 <- dfm(txts[2:3]))
## Document-feature matrix of: 2 documents, 6 features (41.7% sparse).
## 2 x 6 sparse Matrix of class "dfmSparse"
## features
## docs a b c d e f
## text1 2 2 0 0 0 0
## text2 0 1 2 1 1 1
dfm_select(dfm1, dfm2, valuetype = "fixed", verbose = TRUE)
## kept 4 features, padded 2 features
## Document-feature matrix of: 2 documents, 6 features (50% sparse).
## 2 x 6 sparse Matrix of class "dfmSparse"
## features
## docs a b c d e f
## text1 1 1 1 1 0 0
## text2 2 2 0 0 0 0
对于功能方面矩阵(什么text2vec需求的输入),然而,这是行不通的,因为共同出现(至少是那些使用窗口而不是文档上下文进行计算)在各个功能之间是相互依赖的,因此您不能以相同的方式简单地添加和删除它们。
您可以直接在** quanteda **中创建的'fcm'上运行text2vec,从而使用所有** quanteda **特征选择工具。如果您的问题是关于如何从** text2vec **输出中选择项目,则需要更清楚地说明问题的这一部分。一般而言,优秀的SO问题在开始的时候就会使问题变得清晰明了,并且只有在需要回答问题时才提供相关背景。很多你在这里提出的问题都是分心的,因为我不确定你需要答案的部分是什么。 –
对不起。我让它变得柔和。我希望这是可以接受的,我的英语也不是本地人。 –
@KenBenoit我觉得非常有趣,quanteda和text2vec对象可以互换使用。另一方面,我找不到一个关于如何使文本挖掘软件包符合标准dm软件包的简单明了的例子。它们涉及生成具有与学习集中的特征完全一致的特征的数据。 –