如何考虑附加变量
我正在使用 R 中的 quanteda 进行分类任务,我想包括一些我的模型要考虑的变量,而不是词袋。例如,我计算了基于字典的情绪指数,我想包括这些变量,以便模型考虑它们。
这些是我为每个文档创建的索引。
dfneg <- cbind(negDfm1@docvars$label , negDfm1@x ,posDfm@x , angDfm@x ,
disgDfm1@x)
colnames(dfneg) <- c("label","neg" , "pos" , "ang" , "disg")
dfneg <- as.data.frame(dfneg)
这是我将使用的文档特征矩阵:
DFM
newsdfm <- dfm(newscorp, tolower = TRUE , stem = FALSE , remove_punct =
TRUE, remove = stopwords("english"),verbose=TRUE)
newst<- dfm_trim(newsdfm , min_docfreq=2 , verbose=TRUE)
id_train <- sample(1:6335, 5384, replace = FALSE)
# create docvar with ID
docvars(newst, "id_numeric") <- 1:ndoc(newst)
# get training set
train <- dfm_subset(newst, id_numeric %in% id_train)
# get test set (documents not in id_train)
test <- dfm_subset(newst, !id_numeric %in% id_train)
最后,我运行一个分类,例如,朴素贝叶斯分类器或套索
朴素贝叶斯分类器或套索
NBmodel <- textmodel_nb(train , train@docvars$label)
lasso <- cv.glmnet(train, train@docvars$label,
family="binomial", alpha=1, nfolds=10,
type.measure="class")
这是我在创建 dfm 后尝试过的,但它没有用
newsdfm@Dimnames$features$negz <- dfneg$neg
newsdfm@Dimnames$features$posz <- dfneg$pos
newsdfm@Dimnames$features$angz <- dfneg$ang
newsdfm@Dimnames$features$disgz <- dfneg$disg
然后我想到在创建 newsdfm 之前创建文档变量
docvars(newscorp , "negz") <- dfneg$neg
docvars(newscorp , "posz") <- dfneg$pos
docvars(newscorp , "angz") <- dfneg$ang
docvars(newscorp , "disgz") <- dfneg$disg
但那时,我不知道如何告诉分类器我希望它除了词袋之外还考虑这些文档变量。
总之,我希望模型同时考虑包含每个文档的所有单词的矩阵和我为每个文档创建的索引。
任何建议都非常感谢
先感谢您,
卡罗