r - 如何在 R 中为 tf-idf 加权 dfm 训练朴素贝叶斯分类器?
问题描述
我是文本分析的新手,我正在尝试quanteda
使用以下代码为数据集训练一个朴素贝叶斯分类器:
library("quanteda")
data(data_corpus_amicus, package = "quanteda.corpora")
# set training class
trainclass <- docvars(data_corpus_amicus, "trainclass")
amicus_train <- which(trainclass == "P" | trainclass == "R" )
# set test class
testclass <- docvars(data_corpus_amicus, "testclass")
amicus_test <- which(testclass == "AP" | testclass == "AR")
# create dfm from the data
amicus_dfm <- dfm(data_corpus_amicus, verbose = FALSE)
我想为tf-idf
加权 dfm 训练分类器,所以我尝试了以下方法:
amicus_dfm_weight <- dfm_tfidf(amicus_dfm, scheme_tf = "count", scheme_df = "inverse")
weight_nb <-textmodel_nb(amicus_dfm_weight[amicus_train,], docvars(data_corpus_amicus, "trainclass")[amicus_train])
上面的代码给了我错误Error: will not group a weighted dfm; use force = TRUE to override
,所以我也尝试过amicus_dfm_weight <- dfm_tfidf(amicus_dfm, scheme_tf = "count", scheme_df = "inverse", force = TRUE)
,但仍然出现同样的错误。
有谁知道该错误是什么意思以及如何解决该错误?
非常感谢!
解决方案
是的:安装最新的quanteda.textmodels (>= 0.9.1) 包,textmodel_nb()
现在就在其中。这个问题已被解决。将来请考虑使用reprex::reprex()
可重现的示例,并始终在输出或解释中包含包版本。
这将更适合作为 GitHub 问题而不是 SO 问题。
推荐阅读
- python - TTK Treeview 仅在插入新行时显示第一个单词
- laravel - 记住我使用 laravel vue js 的功能
- javascript - 如何打印我的单选按钮并在我的文本区域中输入文本?
- python - 使用 bs4 从 div 中提取文本
- php - 有人可以给我一个想法,如何在 Symfony4 中触发 onDelete(remove) 事件
- angular - 如何提取具有不同对象类型的 Observable(Http Post-request)的某些属性
- android - 交易在 Firestore 中成功但在 onFailure 中着陆
- reactjs - React Router 更改 URL,但视图没有改变,但是如果我在 url 位于浏览器选项卡上时按 Enter 键,它会改变
- javascript - Ajax javascript 映射到 Spring 控制器
- python - 如何在python中打印json文件的特定部分?