如何在 R 中为 tf-idf 加权 dfm 训练朴素贝叶斯分类器?

Posted

技术标签:

【中文标题】如何在 R 中为 tf-idf 加权 dfm 训练朴素贝叶斯分类器?【英文标题】:How to train naive bayes classifier for tf-idf weighted dfm in R? 【发布时间】:2020-06-26 08:29:22 【问题描述】:

我是文本分析的新手,我正在尝试使用以下代码为来自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 &lt;- dfm_tfidf(amicus_dfm, scheme_tf = "count", scheme_df = "inverse", force = TRUE),但仍然出现同样的错误。

有谁知道这个错误是什么意思以及如何解决这个错误?

非常感谢!

【问题讨论】:

【参考方案1】:

是:安装最新的 quanteda.textmodels (>= 0.9.1) 包,textmodel_nb() 现在所在的位置。这个问题已被解决。将来请考虑使用reprex::reprex() 来获取可重现的示例,并始终在输出或解释中包含包版本。

这更适合作为 GitHub 问题而不是 SO 问题。

【讨论】:

以上是关于如何在 R 中为 tf-idf 加权 dfm 训练朴素贝叶斯分类器?的主要内容,如果未能解决你的问题,请参考以下文章

有人可以检查我的tf-idf加权是否正确吗?

如何使用朴素贝叶斯实现 TF_IDF 特征加权

使用 TF-IDF 加权的空间向量模型实现句子相似度计算

对 TF-IDF 特征向量中的特定特征进行加权,用于 k-means 聚类和余弦相似度

在 R 中将 DFM 与 quanteda 合并

MapReduce实现TF-IDF详解