【发布时间】:2020-06-16 19:17:47
【问题描述】:
我目前在 R 中使用 tidytext 来做一些情绪分析。我使用的代码与小插图中列出的代码极为相似。这是给出的示例: https://cran.r-project.org/web/packages/tidytext/vignettes/tidytext.html
library(tidyr)
bing <- get_sentiments("bing")
janeaustensentiment <- tidy_books %>%
inner_join(bing) %>%
count(book, index = line %/% 80, sentiment) %>%
spread(sentiment, n, fill = 0) %>%
mutate(sentiment = positive - negative)
我已将其调整为在相当短的文本块上使用,使用完全相同的 inner_join %>% spread %>% mutate 进程。问题是我至少有一段文字给我带来了问题。我认为这是因为它根本没有负面情绪。这是错误信息:
x object 'negative' not found
Input 'sentiment' is 'positive - negative'
我认为应该有办法解决这个问题——如果变量不存在,则创建一个变量——但我无法让它工作。我正在考虑类似的事情:
mutate(negative = 0) ifelse(exists())
但我似乎无法弄清楚它是如何工作的。有没有人知道如果它不存在如何创建一个新变量,但如果它不存在则不创建它?或者,或者,如果 tidytext 本身有解决此问题的方法。
编辑 6 月 17 日:我刚刚检查了“传播”之后发生的情况,确实没有“负”变量/列。因此,如果我可以创建一个新变量——当且仅当它不存在——值“0”我可以继续。
【问题讨论】:
-
你能检查一下
- tidy_books %>% inner_join(bing) %>% count(book, index = line %/% 80, sentiment) %>% spread(sentiment, n, fill = 0) %>% colnames后面的列名吗 -
你能提供一个输入输出的例子吗?谢谢!
-
get_sentiments是做什么的?它返回什么? -
如果您只是创建一个 txt 文件,上面写着“happy happy happy happy”,应该会重现问题。 get_sentiments 只是抓取情绪字典。
-
@akrun 我手动检查了会发生什么。以下是发生的情况:在“展开”时,它会创建一列(正面)而不是两列(正面和负面)。