与this post类似,我正在尝试使用英语单词的情感规范(法语)与 Quanteda 进行情感分析。我最终想在我的语料库中为每个文本创建一个“平均情绪”。
首先,我加载ANEW字典(FAN in French)并创建一个命名的权重向量。 ANEW与其他字典不同,因为它不使用键:值对格式,而是为每个单词指定一个数字分数。目标是选择要素,然后使用加权计数对它们进行评分。 ANEW文件如下所示:MOT / VALENCE 癌症:1.01,马铃薯:3.56,爱情:6.56
#### FAN DATA ####
# read in the FAN data
df_fan <- read.delim("fan_anew.txt", stringsAsFactors = FALSE)
# construct a vector of weights with the term as the name
vector_fan <- df_fan$valence
names(vector_fan) <- df_fan$mot
然后我尝试将dfm_weight()
应用于我的27个文档的语料库中。
# create a dfm selecting on the FAN words
dfm_fan <- dfm(my_corpus, select = df_fan$mot, language = "French")
dfm_fan_weighted <- dfm_fan %>%
dfm_weight(scheme = "prop") %>%
dfm_weight(weights = vector_fan)
## Warning messages:
## 1: dfm_weight(): ignoring 696 unmatched weight features
## 2: In diag(weight) : NAs introduced by coercion
这是我得到的,生成的dfm对象中只包含6个文档,并且代码不会估计原始语料库中每个文档的ANEW平均分数。
tail(dfm_fan_weighted)
## Document-feature matrix of: 6 documents, 335 features (72.6% sparse).
tail(dfm_fan_weighted)[, c("absent", "politique")]
## Error in intI(j, n = x@Dim[2], dn[[2]], give.dn = FALSE) : invalid character indexing
tail(rowSums(dfm_fan_weighted))
## text22 text23 text24 text25 text26 text27
## NA NA NA NA NA NA
tail(dfm_fan_weighted)[, c("beau")]
## Document-feature matrix of: 6 documents, 1 feature (100% sparse).
## 6 x 1 sparse Matrix of class "dfm"
## features
## docs beau
## text22 0
## text23 0
## text24 0
## text25 0
## text26 0
## text27 0
有什么想法解决它吗?我认为代码只需要一些小的改动即可正常工作。
编辑:我按照Ken Benoit评论编辑了代码。