Introduction

Born and raised in Chicago, Illinois, Chance the Rapper is a American rapper, singer, songwriter, actor, and activist. His rap style differs from most rappers in that his songs are seen as uplifting and house underlying jazz melodies. Furthermore, Chance the Rapper claims to have been inspired by christianity and many of his songs feature gospel choirs. I decided to look into the sentiment behind Chance the Rapper’s music because of the way his songs possess much more creative and happy undertones than typical rap songs. Because of this, I predict that a sentiment analysis of each album will fall mostly in the positive category.

The albums I analyzed are his three most recent releases. This includes: 1. Acid Rap 2. Coloring Book 3. The Big Day I chose to analyze these three albums because Chance the Rapper first began to gain mainstream recognition with the release of Acid Rap. Coloring Book and The Big Day followed in release date. The Big Day is Chance the Rapper’s newest album.

Methodology

To gather data on these albums I utilized the GeniusR package. This package allowed me to look into each individual lyric of each song in each of Chance the Rapper’s albums.

First, I utilized the wordcloud2 package to produce dynamic word clouds of each album. The more frequently a word was used in an album, the larger in scale it appeared in the cloud and vice versa. I did this to understand the general tone each album possesed based on word-choice. Through looking at the words alone, music was no longer a factor.

## Skipping install of 'genius' from a github remote, the SHA1 (0b950851) has not changed since last install.
##   Use `force = TRUE` to force installation
## Warning: package 'genius' is not available (for R version 3.6.2)
## 
## The downloaded binary packages are in
##  /var/folders/9q/tj568l55125_ztp1tf8j2bc00000gn/T//RtmpZtAOcs/downloaded_packages
## 
## The downloaded binary packages are in
##  /var/folders/9q/tj568l55125_ztp1tf8j2bc00000gn/T//RtmpZtAOcs/downloaded_packages
## 
## The downloaded binary packages are in
##  /var/folders/9q/tj568l55125_ztp1tf8j2bc00000gn/T//RtmpZtAOcs/downloaded_packages
## ── Attaching packages ────────────────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.2.1     ✓ purrr   0.3.4
## ✓ tibble  3.0.1     ✓ dplyr   0.8.5
## ✓ tidyr   1.0.3     ✓ stringr 1.4.0
## ✓ readr   1.3.1     ✓ forcats 0.4.0
## ── Conflicts ───────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
## 
## The downloaded binary packages are in
##  /var/folders/9q/tj568l55125_ztp1tf8j2bc00000gn/T//RtmpZtAOcs/downloaded_packages
## Downloading GitHub repo lchiffon/wordcloud2@master
## 
##   
   checking for file ‘/private/var/folders/9q/tj568l55125_ztp1tf8j2bc00000gn/T/RtmpZtAOcs/remotes3c56546da3d/Lchiffon-wordcloud2-8a12a3b/DESCRIPTION’ ...
  
✓  checking for file ‘/private/var/folders/9q/tj568l55125_ztp1tf8j2bc00000gn/T/RtmpZtAOcs/remotes3c56546da3d/Lchiffon-wordcloud2-8a12a3b/DESCRIPTION’ (409ms)
## 
  
─  preparing ‘wordcloud2’:
## 
  
   checking DESCRIPTION meta-information ...
  
✓  checking DESCRIPTION meta-information
## 
  
─  checking for LF line-endings in source and make files and shell scripts
## 
  
─  checking for empty or unneeded directories
##    Removed empty directory ‘wordcloud2/examples/img’
##    Removed empty directory ‘wordcloud2/examples’
## 
  
─  looking to see if a ‘data/datalist’ file should be added
## 
  
─  building ‘wordcloud2_0.2.2.tar.gz’
## 
  
   
## 

Acid Rap Cloud

AcidRap <- genius_album(artist = "Chance the Rapper", album = "Acid Rap")
## Joining, by = c("album_name", "track_n", "track_url")
AcidRap %>% 
  unnest_tokens(word, lyric) %>% 
  anti_join(stop_words) %>% 
  count(word, sort = TRUE) -> AcidRapCount
## Joining, by = "word"
AcidRapCount %>%
wordcloud2()

Coloring Book Cloud

ColoringBook <- genius_album(artist = "Chance the Rapper", album = "Coloring Book")
## Joining, by = c("album_name", "track_n", "track_url")
ColoringBook %>% 
  unnest_tokens(word, lyric) %>% 
  anti_join(stop_words) %>% 
  count(word, sort = TRUE) -> ColoringBookCount
## Joining, by = "word"
ColoringBookCount %>% 
wordcloud2()

The Big Day Cloud

BigDay <- genius_album(artist = "Chance the Rapper", album = "The Big Day")
## Joining, by = c("album_name", "track_n", "track_url")
BigDay %>% 
  unnest_tokens(word, lyric) %>% 
  anti_join(stop_words) %>% 
  count(word, sort = TRUE) -> BigDayCount
## Joining, by = "word"
BigDayCount %>% 
wordcloud2()

In observing the word clouds I am a bit surprised by the most used words in each album. The largest legitimate word displayed in the cloud for AcidRap is the word “Love”. This word has a positive connotation in my mind, however it is surrounded by words I perceive to be negative. This includes the words “Shit,” “Fuck,” and “Bitch.” This is also true for the word cloud dedicated to Coloring Book. The words “Ready,” and “God” are at the forefront and have positive connotations in my mind. They are again surrounded by more negative words and the same applies to the Big Day word cloud. Additionally, some words, such as “Bag,” “Juke,” “Jam,” and “Smoke,” held sentiments I was unsure of. So, although words of positive sentiment are prominent in these displays, it is still unclear whether my hypothesis rang true.

To further debunk each word’s sentiment, I conducted a sentiment analysis to divide the words into different categories depending on their connotation: Positive and Negative.

## 
## The downloaded binary packages are in
##  /var/folders/9q/tj568l55125_ztp1tf8j2bc00000gn/T//RtmpZtAOcs/downloaded_packages
## # A tibble: 6,786 x 2
##    word        sentiment
##    <chr>       <chr>    
##  1 2-faces     negative 
##  2 abnormal    negative 
##  3 abolish     negative 
##  4 abominable  negative 
##  5 abominably  negative 
##  6 abominate   negative 
##  7 abomination negative 
##  8 abort       negative 
##  9 aborted     negative 
## 10 aborts      negative 
## # … with 6,776 more rows
## # A tibble: 2,477 x 2
##    word         value
##    <chr>        <dbl>
##  1 breathtaking     5
##  2 hurrah           5
##  3 outstanding      5
##  4 superb           5
##  5 thrilled         5
##  6 amazing          4
##  7 awesome          4
##  8 brilliant        4
##  9 ecstatic         4
## 10 euphoric         4
## # … with 2,467 more rows
## # A tibble: 13,901 x 2
##    word        sentiment
##    <chr>       <chr>    
##  1 abacus      trust    
##  2 abandon     fear     
##  3 abandon     negative 
##  4 abandon     sadness  
##  5 abandoned   anger    
##  6 abandoned   fear     
##  7 abandoned   negative 
##  8 abandoned   sadness  
##  9 abandonment anger    
## 10 abandonment fear     
## # … with 13,891 more rows
## 
## The downloaded binary packages are in
##  /var/folders/9q/tj568l55125_ztp1tf8j2bc00000gn/T//RtmpZtAOcs/downloaded_packages

Acid Rap Sentiment

AcidRapCount %>%
  inner_join(get_sentiments("bing")) %>%
  arrange(desc(n)) %>%
  head(20) %>%
  ggplot(aes(reorder(word, n), n, fill = sentiment)) +
  geom_col() +
  coord_flip() +
  facet_wrap(~sentiment, scales = "free_y") 
## Joining, by = "word"

Coloring Book Sentiment

ColoringBookCount %>%
  inner_join(get_sentiments("bing")) %>%
  arrange(desc(n)) %>%
  head(20) %>%
  ggplot(aes(reorder(word, n), n, fill = sentiment)) +
  geom_col() +
  coord_flip() +
  facet_wrap(~sentiment, scales = "free_y") 
## Joining, by = "word"

The Big Day Sentiment

BigDayCount %>%
  inner_join(get_sentiments("bing")) %>%
  arrange(desc(n)) %>%
  head(20) %>%
  ggplot(aes(reorder(word, n), n, fill = sentiment)) +
  geom_col() +
  coord_flip() +
  facet_wrap(~sentiment, scales = "free_y") 
## Joining, by = "word"

In analyzing these graphs I found that “Shit,” “Jam,” and “Smoke” are considered to be words with a negative connotation and they were used often in the Acid Rap album. The most positive word in the album was “Love.” The word “Love” was used incredibly frequently compared to the other positive words “Lean,” “Hug,” and “Favorite.” As for the Coloring Book album, the words “Ready,” and “Praise” were sung more often than the word “Love.” These words all fall into the category of positive. The most common negative words in this album included “Fuck,” “Bitch,” and again “Smoke.” Lastly, The Big Day’s plots showed “Die,” “Fuck,” and “Crazy,” to be the most commonly used negative words within the albums lyrics. The word “Love,” is shown to be of frequent use again, topping the chart on the positive sentiment side. All three albums showed that love was used often as a word of positive sentiment. From this I can conclude that love seems to be a common theme throughout Chance the Rapper’s work in general. It is also important to note that in every display, there are more negative words listed than positive. This means the negative sentiment might outweigh the positive despite having a few positive words repeated more frequently.

In order to confirm once and for all if all the albums contained more of a positive or negative sentiment, I combined the three and utilized the get_sentiment(“bing”) function. From here I produced a graph that proportionally displayed the negative versus the positive sentiment throughout the three albums.

The above plot proves that negative sentiment supersedes positive sentiment in overall word choice.

Conclusion

All in all, my hypothesis was proven to be false. As surprising as these results were, it proves to show that the music does contribute a lot to the positive vibe of a song and/or album. Meanwhile, the lyrics may be telling a negative story.

Future research might focus on the musical aspect of the albums as opposed to the lyrical. Comparisons could also be made to different artists including other rappers and beyond.