我是量化文本分析的新手,正在尝试从朴素贝叶斯分类器的输出中提取与特定分类类别相关的关键词。我正在运行下面的示例(将电影评论分类为正面或负面)。我希望得到两个向量,每个向量包含与正面和负面类别相关的关键词。我是否应该关注summary()输出中的“估计特征分数”,如果是的话,如何解释这些分数?
require(quanteda)require(quanteda.textmodels)require(caret)corp_movies <- data_corpus_moviereviewssummary(corp_movies, 5)# 生成1500个不重复的数字set.seed(300)id_train <- sample(1:2000, 1500, replace = FALSE)head(id_train, 10)# 创建包含ID的文档变量corp_movies$id_numeric <- 1:ndoc(corp_movies)# 获取训练集dfmat_training <- corpus_subset(corp_movies, id_numeric %in% id_train) %>% dfm(remove = stopwords("english"), stem = TRUE)# 获取测试集(不在id_train中的文档)dfmat_test <- corpus_subset(corp_movies, !id_numeric %in% id_train) %>% dfm(remove = stopwords("english"), stem = TRUE)tmod_nb <- textmodel_nb(dfmat_training, dfmat_training$sentiment)summary(tmod_nb)
回答:
如果你只想知道最负面和最正面的词,可以考虑对整个语料库创建的dfm进行分区,划分为正面和负面的评论,然后使用textstat_keyness()
。这不会创建两个词向量,而是一个带有分数的单一词向量,表示与负面或正面类别的关联强度。
library("quanteda", warn.conflicts = FALSE)## 软件包版本: 2.1.1## 并行计算: 使用了12个线程中的2个。## 请访问 https://quanteda.io 查看教程和示例。data("data_corpus_moviereviews", package = "quanteda.textmodels")dfmat <- dfm(data_corpus_moviereviews, remove = stopwords("english"), stem = TRUE, groups = "sentiment")tstat <- textstat_keyness(dfmat, target = "pos")textplot_keyness(tstat)