R - 使用 tidytext 数据计数

R - Count with tidytext data

我正在使用 Gutenberg 项目中的一些弗洛伊德书籍进行文本挖掘。当我尝试使用以下代码进行情绪分析时:

library(dplyr)
library(tidytext)
library(gutenbergr)

freud_books <- gutenberg_download(c(14969, 15489, 34300, 35875, 35877, 38219, 41214), meta_fields = "title")

tidy_books <- freud_books %>%
  unnest_tokens(word, text)

f_sentiment <- tidy_books %>%
  inner_join(get_sentiments("bing"), by = "word") %>% 
  count(title, index = line %/% 80, sentiment) %>% 
  spread(sentiment, n, fill = 0) %>% 
  mutate(sentiment = positive - negative)

我收到错误:

Error in mutate_impl(.data, dots) : Evaluation error: non-numeric argument to binary operator.

我可以看出问题出在最后一个块中,在计数函数中。有什么帮助吗?

你应该在使用 inner_join 函数后将 line 变异为你的数据,因为它不是你的数据列,所以如果你需要它,你必须自己创建它

注意mutate(line = row_number())部分,如果你需要另一种分配行号的方式,你可以修改它,然后你可以在count

中使用index = line %/% 80

试试这个:

library(dplyr)
library(tidytext)
library(gutenbergr)

freud_books <- gutenberg_download(c(14969, 15489, 34300, 35875, 35877, 38219, 41214),
 meta_fields = "title")

tidy_books <- freud_books %>%
  unnest_tokens(word, text)

f_sentiment <- tidy_books %>%
  inner_join(get_sentiments("bing"), by = "word") %>% 
  mutate(line = row_number()) %>%
  count(title, index = line %/% 80, sentiment) %>% 
  spread(sentiment, n, fill = 0) %>% 
  mutate(sentiment = positive - negative)