使用带有Quanteda的分类器识别不同的关键字

问题描述

我是定量文本分析的新手,我正尝试从朴素的贝叶斯分类器的输出提取与特定分类类别相关的关键字。我正在运行以下示例(将电影评论分为正面评论或负面评论)。我想要两个向量,每个向量包含分别与肯定类别和否定类别相关联的那些关键字。我是说对了,我应该专注于summary()输出中的“估计特征分数”,如果是的话,我该如何解释这些特征?

require(quanteda)
require(quanteda.textmodels)
require(caret)

corp_movies <- data_corpus_moviereviews
summary(corp_movies,5)

# generate 1500 numbers without replacement
set.seed(300)
id_train <- sample(1:2000,1500,replace = FALSE)
head(id_train,10)

# create docvar with ID
corp_movies$id_numeric <- 1:ndoc(corp_movies)

# get training set
dfmat_training <- corpus_subset(corp_movies,id_numeric %in% id_train) %>%
  dfm(remove = stopwords("english"),stem = TRUE)

# get test set (documents not in 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) 

解决方法

如果您只想知道最消极和最肯定的单词,请考虑将textstat_keyness()用于从整个语料库中创建的dfm,并将其分为肯定和否定评论。这不会创建两个单词向量,而是一个单词向量,其得分指示与否定或肯定类别的关联强度。

library("quanteda",warn.conflicts = FALSE)
## Package version: 2.1.1
## Parallel computing: 2 of 12 threads used.
## See https://quanteda.io for tutorials and examples.
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)