`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Most common words used by each manifesto author with and without stop words (first is without stop words)
manifestos_words |>group_by(author) |>count(word, sort = T) |>top_n(5) |>ungroup() |>mutate(word =reorder(word, n)) |>ggplot(aes(word, n, fill = author)) +geom_col(show.legend =FALSE) +coord_flip() +facet_wrap(~author, scales ="free") +# creates separate graphs for each authorscale_fill_viridis_d() +# uses a nicer color schemetheme_minimal() +# removes the gray backgroundlabs(x =NULL, y ="Most common words")
manifestos_words |>anti_join(snowball) |>group_by(author) |>count(word, sort = T) |>top_n(5) |>ungroup() |>mutate(word =reorder(word, n)) |>ggplot(aes(word, n, fill = author)) +geom_col(show.legend =FALSE) +labs(x =NULL, y ="Most common words") +facet_wrap(vars(author), scales ="free") +# creates separate graphs for each authorscale_fill_viridis_d() +coord_flip() # uses a nicer color scheme
# A tibble: 5,879 × 3
# Groups: author [6]
author word n
<chr> <chr> <int>
1 Breivik the 387
2 Rodger the 322
3 Rodger i 273
4 Unabomber the 245
5 Breivik of 225
6 Rodger my 208
7 Unabomber of 193
8 Rodger to 181
9 Rodger a 175
10 Rodger was 174
# ℹ 5,869 more rows
manifestos_word_counts <- manifestos |># This counts each word per authorunnest_tokens(word, text) |>count(author, word, sort =TRUE) total_words <- manifestos_word_counts |># This counts total words per authorgroup_by(author) |>summarize(total =sum(n))manifestos_word_counts <-left_join(manifestos_word_counts, total_words) # Joins the two
manifestos_words |>inner_join(bing) |>count(word, sentiment, sort =TRUE) |>group_by(sentiment) |>top_n(10) |>ungroup() |>mutate(word =reorder(word, n)) |>ggplot(aes(word, n, fill = sentiment)) +geom_col(show.legend =FALSE) +facet_wrap(vars(sentiment), scales ="free") +labs(y ="Manifestos notes: Words that contribute the most to each sentiment",x =NULL) +scale_fill_viridis_d() +coord_flip() +theme_minimal()
Joining with `by = join_by(word)`
Selecting by n
5.most common bigrams in manifesto with and without stop words (first is with second is without)
manifestos |>unnest_tokens(bigram, text, token ="ngrams", n =2) |>select(bigram) -> manifestos_bigrams
manifestos_bigrams |>count(bigram, sort = T)
# A tibble: 14,954 × 2
bigram n
<chr> <int>
1 of the 159
2 in the 81
3 to the 69
4 i was 60
5 and the 56
6 to be 43
7 political correctness 37
8 i had 34
9 it is 34
10 it was 30
# ℹ 14,944 more rows
# A tibble: 4,115 × 2
bigram n
<chr> <int>
1 political correctness 37
2 frankfurt school 22
3 jesus christ 17
4 cultural marxism 16
5 black man 12
6 human race 12
7 modern leftism 9
8 power process 9
9 surrogate activities 9
10 will never 9
# ℹ 4,105 more rows
6.The most common words that came after ‘us’ and ‘them’ in each manifesto text
first_word <-c("us", "them") # these need to be lowercasemanifestos_bigrams |>count(bigram, sort = T) |>separate(bigram, c("word1", "word2"), sep =" ") |># separate the two wordsfilter(word1 %in% first_word) |># find first words from our listcount(word1, word2, wt = n, sort =TRUE)
# A tibble: 67 × 3
word1 word2 n
<chr> <chr> <int>
1 us to 5
2 them they 3
3 them a 2
4 them but 2
5 them he 2
6 them i 2
7 them in 2
8 us a 2
9 us and 2
10 us for 2
# ℹ 57 more rows
first_word <-c("us", "them") # these need to be lowercasemanifestos_bigrams |>count(bigram, sort = T) |>separate(bigram, c("word1", "word2"), sep =" ") |># separate the two wordsfilter(word1 %in% first_word) |># find first words from our listcount(word1, word2, wt = n, sort =TRUE) |>mutate(word2 =factor(word2, levels =rev(unique(word2)))) |># put the words in ordergroup_by(word1) |>top_n(5) |>ggplot(aes(word2, n, fill = word1)) +scale_fill_viridis_d() +# set the color palettegeom_col(show.legend =FALSE) +labs(x =NULL, y =NULL, title ="Word following:") +facet_wrap(~word1, scales ="free") +coord_flip() +theme_minimal()