【问题标题】:R - Count with tidytext dataR - 使用 tidytext 数据计数
【发布时间】:2018-05-03 20:50:39
【问题描述】:

我正在使用 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)

我得到错误:

mutate_impl(.data, dots) 中的错误:评估错误:非数字 二元运算符的参数。

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

【问题讨论】:

  • 快速提问,index = line %/% 80 想要达到什么目的?当inner_joined 时,没有名为line 的列。为什么不是count(title, sentiment)?

标签: r count tidytext


【解决方案1】:

您应该在使用 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)

【讨论】:

  • 感谢@Alaleh,完美运行。我只需要添加 tidyr 包。
  • count中的“title”代表什么?头衔?当事物按书分组时,我看到了另一个“书”的例子。如果我们想检查所有文本怎么办?链接赞赏。
猜你喜欢
  • 2018-07-13
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-10
相关资源
最近更新 更多