R - считать с данными Tidytext - PullRequest
0 голосов
/ 03 мая 2018

Я работаю над анализом текста с некоторыми книгами Фрейда из проекта Гутенберга. Когда я пытаюсь сделать анализ настроений, используя следующий код:

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, точки): Ошибка оценки: не числовой аргумент бинарного оператора.

Я вижу, что проблема в последнем блоке, в функции подсчета. Любая помощь с этим?

1 Ответ

0 голосов
/ 04 мая 2018

вы должны преобразовать line в свои данные после использования функции inner_join, потому что это не столбец ваших данных, поэтому, если вам это нужно, вы должны создать его самостоятельно

обратите внимание на часть mutate(line = row_number()), вы можете изменить ее, если вам нужен другой способ назначения номеров строк, а затем вы можете использовать index = line %/% 80 в count

попробуйте это:

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)
...