library(tidyverse)
library(tidytext)
library(jsonlite)
library(ggthemes)
library(wordcloud2)Beyond the Bars: A Lyrical Analysis of Country Music Sub-Genres
Introduction
“I’ll listen to anything…except country” is a phrase said time and time again. When people think about country music, their minds typically go to the mainstream country radio or Nashville sound. This is stereotypically about trucks, beer, and girls. This is what is referred to as “bro country.” Bro country also includes more surface level writing with a catchy tune, portraying the care-free, “good ol’ boy” lifestyle. Country music did not initially start out this way. Traditionally, country music was used to encapsulate simplicity, hardship, and resilience through the use of storytelling. What is often missed is that there are many sub-genres under the umbrella of country music.
One sub-genre that is very different from bro country is called “Americana.” Americana is closer to the traditional country music style but incorporates influences from folk, rock, and blues music. This gives Americana a feeling of authenticity and nostalgia because of the connection to country music’s original roots.
In this analysis, I decided to look at 10 different country artists, five who are bro country and five who are Americana, and see how their lyrics compare and contrast. I chose artists who released music within similar years and who have around six to eight albums. For bro country, I chose Jason Aldean, Luke Bryan, Florida Georgia Line, Blake Shelton, and Thomas Rhett. For Americana, I chose Tyler Childers, Jason Isbell, Ryan Bingham, Colter Wall, and Cody Jinks.
I hypothesize that bro country will align with what country music is stereotyped to be and that Americana will have results that show more emotion and depth within the writing. The purpose of this lyrical analysis is to find the differences in writing between the two sub-genres to show that not all country music is the same.
To retrieve the lyrics, I worked with my instructor to convert the Genius API Python files into CSV files.
Data Acquisition
First, I loaded my packages:
Next, I created variables and merged the artists into their perspective groups (bro country or Americana).
bryan <- read_csv("bryan.csv", col_types = cols(release_date = col_character()))
aldean <- read_csv('aldean.csv', col_types = cols(release_date = col_character()))
FGL <- read.csv('FGL.csv')
shelton <- read.csv('shelton.csv')
rhett <- read.csv('rhett.csv')
bryan %>%
full_join(FGL) %>%
full_join(shelton) %>%
full_join(rhett) %>%
full_join(aldean) -> merged_bros
merged_bros %>%
unnest_tokens(word, lyrics) |>
mutate( style = "Bro Country") -> merged_bros
merged_bros %>%
count(artist, sort = TRUE)# A tibble: 5 × 2
artist n
<chr> <int>
1 Blake Shelton 53833
2 Jason Aldean 49735
3 Luke Bryan 49274
4 Florida Georgia Line 40664
5 Thomas Rhett 37301
aldean |>
unnest_tokens(word, lyrics) |>
mutate(Artist = "Jason Aldean") |>
mutate(style = "Bro Country")-> aldean_words1
bryan |>
unnest_tokens(word, lyrics) |>
mutate(Artist = "Luke Bryan") |>
mutate(style = "Bro Country")-> bryan_words1
FGL |>
unnest_tokens(word, lyrics) |>
mutate(Artist = "Florida Georgia Line") |>
mutate(style = "Bro Country")-> FGL_words1
shelton |>
unnest_tokens(word, lyrics) |>
mutate(Artist = "Blake Shelton") |>
mutate(style = "Bro Country")-> shelton_words1
rhett |>
unnest_tokens(word, lyrics) |>
mutate(Artist = "Thomas Rhett") |>
mutate(style = "Bro Country")-> rhett_words1
childers <- read.csv('childers.csv')
bingham <- read.csv('bingham.csv')
isbell <- read.csv('isbell.csv')
jinks <- read.csv('jinks.csv')
wall <- read.csv('wall.csv')
childers %>%
full_join(bingham) %>%
full_join(isbell) %>%
full_join(jinks) %>%
full_join(wall) -> merged_americana
merged_americana %>%
unnest_tokens(word, lyrics) |>
mutate( style = "Americana") -> merged_americana
childers |>
unnest_tokens(word, lyrics) |>
mutate(Artist = "Tyler Childers") |>
mutate(style = "Americana")-> childers_words1
bingham |>
unnest_tokens(word, lyrics) |>
mutate(Artist = "Ryan Bingham") |>
mutate(style = "Americana")-> bingham_words1
isbell |>
unnest_tokens(word, lyrics) |>
mutate(Artist = "Jason Isbell") |>
mutate(style = "Americana")-> isbell_words1
jinks |>
unnest_tokens(word, lyrics) |>
mutate(Artist = "Cody Jinks") |>
mutate(style = "Americana")-> jinks_words1
wall |>
unnest_tokens(word, lyrics) |>
mutate(Artist = "Colter Wall") |>
mutate(style = "Americana")-> wall_words1Most Popular Words
I started my data analysis with looking at each sub-genre’s top 10 most popular words.
merged_bros %>%
anti_join(stop_words) %>%
filter(!word %in% c('chorus', 'verse', '10', 'woah', 'tickets', 'outro', '4', '5', 'yeah', '1', '2', '3', 'lyrics', '138you', 'liveget', 'tickets')) %>%
count(word, sort = TRUE) %>%
inner_join(get_sentiments('afinn')) %>%
head(10) %>%
ggplot(aes(reorder(word, n) ,n, fill = value)) +
geom_col() + coord_flip() + theme_economist() merged_americana %>%
anti_join(stop_words) %>%
filter(!word %in% c('chorus', 'verse', '10', 'woah', 'tickets', 'outro', '4', '5', 'yeah', '1', '2', '3', 'lyrics', '138you', 'liveget', 'tickets')) %>%
count(word, sort = TRUE) %>%
inner_join(get_sentiments('afinn')) %>%
head(10) %>%
ggplot(aes(reorder(word, n) ,n, fill = value)) +
geom_col() + coord_flip() + theme_economist() These graphs show the top ten most popular words in each sub-genre, and color coded by sentiment. The darker the shade, the worse sentiment that word has. It is clear that the Americana lyrics overall have a worse sentiment. “Leave”, “die”, “lost”, and “tired” shown in the Americana graph paint a picture of the themes of hardship shown in the songs. I would argue that “crazy”, “pretty”, and “dirt” shown in the bro country graph push the stereotype of having their songs about girls and trucks. “Dirt” making it into the top 10 words makes me immediately think of “dirt road.”
Word Clouds
The next visualization that I made is a word cloud for each sub-genre.
merged_americana %>%
anti_join(stop_words) %>%
filter(!word %in% c('chorus', 'verse', '10', 'tickets', 'outro', '4', '5', 'yeah', '1', '2', '3', 'lyrics', '173you', 'liveget', 'tickets', 'low', 'ooh', 'ryan', 'bingham', 'cody', 'jinks', 'colter', 'wall', 'tyler', 'childers', 'jason', 'isbell', '90you', '38you', '51you')) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
head(400) %>%
wordcloud2(shape = 'circle')merged_bros %>%
anti_join(stop_words) %>%
filter(!word %in% c('chorus', 'verse', '10', 'tickets', 'outro', '4', '5', 'yeah', '1', '2', '3', 'lyrics', '173you', 'liveget', 'tickets', 'low', 'ooh', 'luke', 'bryan', 'jason', 'aldean', 'florida', 'georgia', 'line', 'blake', 'shelton', 'thomas', 'rhett')) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
head(400) %>%
wordcloud2(shape = 'circle')These word clouds do a great job of visualizing the different topics written about in both sub-genres. Words that stand out to me in the bro country word cloud include, “baby”, “girl”, “party”, “truck”, and “beer.” This continues to push that narrative of bro country writing about a carefree lifestyle filled with drinking and women. Words that stand out to me in the Americana word cloud include, “time”, “home”, “hard”, “road”, and “heart.” Looking at these words together, it can be seen that this writing has an emphasis in storytelling. My mind goes to hard times, going down hard roads, heartbreaks, reflecting on home etc…
Most Negative Words
Once seeing the word clouds, I broke the lyrics down into the top 20 most negative words used in each sub-genre.
merged_bros %>%
# unnest_tokens(word, lyrics) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
inner_join(get_sentiments("afinn")) %>%
arrange(desc(-value)) %>%
head(20) %>%
knitr::kable()| word | n | value |
|---|---|---|
| bitch | 4 | -5 |
| prick | 2 | -5 |
| bitches | 1 | -5 |
| hell | 223 | -4 |
| damn | 119 | -4 |
| ass | 54 | -4 |
| shit | 11 | -4 |
| damned | 6 | -4 |
| pissed | 2 | -4 |
| bad | 129 | -3 |
| lost | 123 | -3 |
| die | 67 | -3 |
| worry | 60 | -3 |
| worried | 38 | -3 |
| hate | 37 | -3 |
| dead | 31 | -3 |
| loose | 31 | -3 |
| kill | 30 | -3 |
| killing | 24 | -3 |
| losing | 17 | -3 |
merged_americana %>%
# unnest_tokens(word, lyrics) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
inner_join(get_sentiments("afinn")) %>%
arrange(desc(-value)) %>%
head(20) %>%
knitr::kable()| word | n | value |
|---|---|---|
| bitch | 7 | -5 |
| motherfucker | 6 | -5 |
| bastard | 2 | -5 |
| bastards | 2 | -5 |
| hell | 114 | -4 |
| damn | 72 | -4 |
| ass | 23 | -4 |
| shit | 8 | -4 |
| fucked | 6 | -4 |
| piss | 5 | -4 |
| pissed | 5 | -4 |
| damned | 3 | -4 |
| fucking | 3 | -4 |
| bullshit | 2 | -4 |
| dick | 1 | -4 |
| tortured | 1 | -4 |
| tortures | 1 | -4 |
| die | 94 | -3 |
| lost | 83 | -3 |
| bad | 50 | -3 |
I found these negative words interesting because I saw immediately that Americana used more words that packed a punch. These words resulted in a higher level of “bad”. Examples that stood out to me are “motherfucker”, “bastard”, and “tortured.” Bro country uses more basic bad words like, “hell”, “damn”, “ass”, and “shit.” They did use “prick” which Americana did not.
Most Positive Words
I then did this with the top 20 most positive words in each sub-genre.
merged_bros %>%
# unnest_tokens(word, lyrics) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
inner_join(get_sentiments("afinn")) %>%
arrange(desc(+value)) %>%
head(20) %>%
knitr::kable()| word | n | value |
|---|---|---|
| fun | 36 | 4 |
| funny | 32 | 4 |
| win | 23 | 4 |
| winning | 8 | 4 |
| winner | 7 | 4 |
| amazing | 6 | 4 |
| heavenly | 4 | 4 |
| masterpiece | 3 | 4 |
| miracle | 3 | 4 |
| rejoices | 1 | 4 |
| love | 997 | 3 |
| happy | 59 | 3 |
| beautiful | 56 | 3 |
| lucky | 54 | 3 |
| perfect | 54 | 3 |
| loved | 47 | 3 |
| luck | 22 | 3 |
| paradise | 19 | 3 |
| glad | 16 | 3 |
| merry | 14 | 3 |
merged_americana %>%
# unnest_tokens(word, lyrics) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
inner_join(get_sentiments("afinn")) %>%
arrange(desc(+value)) %>%
head(20) %>%
knitr::kable()| word | n | value |
|---|---|---|
| thrilled | 2 | 5 |
| win | 18 | 4 |
| wonderful | 11 | 4 |
| fun | 10 | 4 |
| funny | 8 | 4 |
| amazing | 4 | 4 |
| miracle | 2 | 4 |
| triumph | 2 | 4 |
| love | 275 | 3 |
| joy | 23 | 3 |
| beautiful | 21 | 3 |
| loved | 17 | 3 |
| glad | 12 | 3 |
| happy | 12 | 3 |
| lovely | 11 | 3 |
| lucky | 11 | 3 |
| nice | 10 | 3 |
| luck | 6 | 3 |
| pleasure | 6 | 3 |
| super | 6 | 3 |
The positive words for each sub-genre are pretty similar. The one point that is important to note is that in Americana, there was one word given a sentiment score of 5 (thrilled), whereas for bro country the highest score was 4.
Flesch Kincaid Grade Level
Once seeing a trend of the types of words used, I wanted to find out what the Flesch Kincaid grade level for each artist is.
merged_bros %>%
group_by(artist_names) %>%
select(word) %>%
summarize(
average_word_count = mean(str_count(word)),
average_syllables_per_word = mean(str_count(word, "[aeiouy]")) / mean(str_count(word, "\\S+"))
) %>%
mutate(
flesch_kincaid_grade_level = (0.39 * average_word_count) + (11.8 * average_syllables_per_word) - 15.59
) %>%
knitr::kable()| artist_names | average_word_count | average_syllables_per_word | flesch_kincaid_grade_level |
|---|---|---|---|
| Blake Shelton | 3.963615 | 1.613984 | 5.000825 |
| Blake Shelton (Ft. Ashley Monroe) | 3.797203 | 1.562937 | 4.333566 |
| Blake Shelton (Ft. Brad Paisley, Hank Williams Jr., Jason Aldean, Josh Turner, Keith Urban, Luke Bryan, Miranda Lambert, Reba McEntire & Ronnie Dunn) | 4.088496 | 1.594690 | 4.821858 |
| Blake Shelton (Ft. Brooks & Dunn) | 3.736979 | 1.502604 | 3.598151 |
| Blake Shelton (Ft. Dia Frampton) | 3.755319 | 1.367021 | 2.005425 |
| Blake Shelton (Ft. Dorothy Shackleford) | 4.103139 | 1.587444 | 4.742063 |
| Blake Shelton (Ft. George Jones & John Anderson) | 4.098113 | 1.490566 | 3.596943 |
| Blake Shelton (Ft. Gwen Sebastian) | 3.968023 | 1.720930 | 6.264506 |
| Blake Shelton (Ft. Gwen Stefani) | 3.829681 | 1.716136 | 6.153974 |
| Blake Shelton (Ft. HARDY) | 4.002625 | 1.553806 | 4.305932 |
| Blake Shelton (Ft. Kelly Clarkson) | 4.054726 | 1.547264 | 4.249055 |
| Blake Shelton (Ft. Michael Bublé) | 3.772894 | 1.637363 | 5.202308 |
| Blake Shelton (Ft. Miranda Lambert) | 4.078297 | 1.535714 | 4.121964 |
| Blake Shelton (Ft. Pistol Annies) | 4.158445 | 1.612855 | 5.063483 |
| Blake Shelton (Ft. RaeLynn) | 3.922388 | 1.408955 | 2.565403 |
| Blake Shelton (Ft. Reba McEntire) | 3.948718 | 1.618590 | 5.049359 |
| Blake Shelton (Ft. Sheryl Crow) | 4.787037 | 1.787037 | 7.363982 |
| Blake Shelton (Ft. The Oak Ridge Boys) | 4.029412 | 1.635294 | 5.277941 |
| Blake Shelton (Ft. The Swon Brothers) | 4.263333 | 1.816667 | 7.509367 |
| Blake Shelton (Ft. Trace Adkins) | 4.074369 | 1.605578 | 4.944821 |
| Blake Shelton (Ft. Trypta-Phunk) | 4.068807 | 1.577982 | 4.617018 |
| Blake Shelton (Ft. Xenia (POR)) | 4.785185 | 1.777778 | 7.254000 |
| Florida Georgia Line | 3.891063 | 1.625065 | 5.103282 |
| Florida Georgia Line (Ft. Backstreet Boys) | 4.131868 | 1.896389 | 8.398823 |
| Florida Georgia Line (Ft. Bebe Rexha) | 3.542234 | 1.411444 | 2.446512 |
| Florida Georgia Line (Ft. Brother Jervel) | 3.966942 | 1.604683 | 4.892369 |
| Florida Georgia Line (Ft. HARDY) | 4.077135 | 1.619835 | 5.114132 |
| Florida Georgia Line (Ft. Jaren Johnston) | 3.861979 | 1.544271 | 4.138568 |
| Florida Georgia Line (Ft. Jason Aldean) | 3.881306 | 1.611276 | 4.936766 |
| Florida Georgia Line (Ft. Jason Derulo) | 4.177049 | 1.944262 | 8.981344 |
| Florida Georgia Line (Ft. Lele Pons) | 3.762803 | 1.649596 | 5.342722 |
| Florida Georgia Line (Ft. Luke Bryan) | 3.642369 | 1.443052 | 2.858542 |
| Florida Georgia Line (Ft. Sarah Buxton) | 3.882222 | 1.817778 | 7.373844 |
| Florida Georgia Line (Ft. Tim McGraw) | 3.744054 | 1.531144 | 3.937678 |
| Florida Georgia Line (Ft. Ziggy Marley) | 3.956164 | 1.747945 | 6.578658 |
| Jason Aldean | 3.949391 | 1.609614 | 4.943708 |
| Jason Aldean (Ft. Eric Church & Luke Bryan) | 4.004950 | 1.544555 | 4.197673 |
| Jason Aldean (Ft. Finesse (Rapper)) | 4.350211 | 1.672996 | 5.847932 |
| Jason Aldean (Ft. Kelly Clarkson) | 4.182609 | 1.839130 | 7.742957 |
| Jason Aldean (Ft. Kelsea Ballerini) | 4.200000 | 1.690625 | 5.997375 |
| Jason Aldean (Ft. Miranda Lambert) | 4.194444 | 1.626984 | 5.244246 |
| Luke Bryan | 3.906883 | 1.591306 | 4.711099 |
| Luke Bryan (Ft. Emily Weisband) | 4.055409 | 1.569921 | 4.516675 |
| Luke Bryan (Ft. Jimmy Fallon) | 3.908434 | 1.650602 | 5.411398 |
| Luke Bryan (Ft. Karen Fairchild) | 3.800948 | 1.521327 | 3.844028 |
| Thomas Rhett | 3.889159 | 1.614096 | 4.973102 |
| Thomas Rhett (Ft. Chris Tomlin, Hillary Scott, Keith Urban & Reba McEntire) | 3.393333 | 1.440000 | 2.725400 |
| Thomas Rhett (Ft. Danielle Bradbery) | 3.707895 | 1.507895 | 3.649237 |
| Thomas Rhett (Ft. HARDY) | 3.726166 | 1.535497 | 3.982069 |
| Thomas Rhett (Ft. Jon Pardi) | 4.296610 | 1.779661 | 7.085678 |
| Thomas Rhett (Ft. Jordin Sparks) | 3.701847 | 1.506596 | 3.631557 |
| Thomas Rhett (Ft. Kelsea Ballerini) | 4.122951 | 1.666667 | 5.684617 |
| Thomas Rhett (Ft. Little Big Town) | 3.760753 | 1.580645 | 4.528307 |
| Thomas Rhett (Ft. LunchMoney Lewis) | 4.028384 | 1.552402 | 4.299410 |
| Thomas Rhett (Ft. Maren Morris) | 4.086053 | 1.747775 | 6.627300 |
| Thomas Rhett (Ft. Morgan Wallen) | 4.220065 | 1.608414 | 5.035113 |
| Thomas Rhett (Ft. Rhett Akins) | 3.981520 | 1.593429 | 4.765257 |
| Thomas Rhett (Ft. Riley Green) | 3.836868 | 1.492659 | 3.519755 |
| Thomas Rhett (Ft. Russell Dickerson & Tyler Hubbard) | 3.904070 | 1.590116 | 4.695959 |
merged_americana %>%
group_by(artist_names) %>%
select(word) %>%
summarize(
average_word_count = mean(str_count(word)),
average_syllables_per_word = mean(str_count(word, "[aeiouy]")) / mean(str_count(word, "\\S+"))
) %>%
mutate(
flesch_kincaid_grade_level = (0.39 * average_word_count) + (11.8 * average_syllables_per_word) - 15.59
) %>%
knitr::kable()| artist_names | average_word_count | average_syllables_per_word | flesch_kincaid_grade_level |
|---|---|---|---|
| Cody Jinks | 3.929326 | 1.590333 | 4.708364 |
| Cody Jinks (Ft. Pearl Aday) | 3.760369 | 1.654378 | 5.398203 |
| Cody Jinks (Ft. Ron Hellner) | 4.284024 | 1.704142 | 6.189645 |
| Cody Jinks (Ft. Sam Anderson) | 3.974359 | 1.598291 | 4.819829 |
| Cody Jinks (Ft. Tennessee Jet) | 4.090909 | 1.618182 | 5.100000 |
| Cody Jinks (Ft. The Tone Deaf Hippies) | 3.897704 | 1.553680 | 4.263528 |
| Colter Wall | 4.105361 | 1.614444 | 5.061529 |
| Colter Wall (Ft. Belle Plaine) | 4.149123 | 1.671053 | 5.746579 |
| Colter Wall (Ft. Blake Berglund & Corb Lund) | 3.923256 | 1.537209 | 4.079140 |
| Colter Wall (Ft. The Dead South) | 3.896057 | 1.562724 | 4.369606 |
| Colter Wall (Ft. The Scary Prairie Boys) | 3.937500 | 1.501953 | 3.668672 |
| Colter Wall (Ft. Tyler Childers) | 4.331081 | 1.837838 | 7.785608 |
| Jason Isbell | 4.033133 | 1.647648 | 5.425167 |
| Ryan Bingham | 4.006058 | 1.640693 | 5.332545 |
| Ryan Bingham (Ft. Terry Allen) | 4.375000 | 1.802885 | 7.390288 |
| Ryan Bingham (Ft. Will Dailey) | 3.834061 | 1.624454 | 5.073843 |
| Tyler Childers | 3.973688 | 1.595735 | 4.789406 |
| Tyler Childers (Ft. Larry Cordle & Ricky Skaggs) | 4.230366 | 1.701571 | 6.138377 |
| Tyler Childers (Ft. Russell Waddell) | 3.789683 | 1.567460 | 4.384008 |
| Tyler Childers (Ft. The Food Stamps) | 4.127886 | 1.619893 | 5.134618 |
| Tyler Childers (Ft. The Highwall) | 3.916113 | 1.566445 | 4.421337 |
| Tyler Childers (Ft. The Travelin’ McCourys) | 3.923077 | 1.753846 | 6.635385 |
The results of this test are closer for each sub-genre than I had anticipated. I hypothesized that Americana would have a much higher score than bro country. What I found instead was that they are very similar. Bro country has a mean of 4.946 and Americana has a mean of 5.064. Scores of 3-6 is considered “basic” and elementary reading level according to the Flesch Kincaid breakdown. It is also important to note that most music falls in this category so that it is easy to listen to.
Lexicons
I next used lexicons to look at 20 stereotypical bro country words and see how often they show up in each sub-genre.
bro_lexicon <- c('truck', 'beer', 'girl', 'girls', 'woman', 'women', 'whiskey', 'dirt', 'road', 'drink', 'drunk', 'town', 'boys', 'family', 'mama', 'home', 'rain', 'god', 'country', 'bar')
merged_bros |>
filter(word %in% bro_lexicon) |>
count(word, sort = TRUE) %>%
knitr::kable()| word | n |
|---|---|
| girl | 1010 |
| country | 463 |
| town | 442 |
| home | 354 |
| road | 266 |
| drink | 256 |
| beer | 227 |
| truck | 195 |
| whiskey | 180 |
| god | 179 |
| dirt | 159 |
| boys | 149 |
| bar | 140 |
| rain | 117 |
| drunk | 108 |
| girls | 103 |
| mama | 98 |
| family | 26 |
| women | 24 |
| woman | 21 |
americana_lexicon <- c('truck', 'beer', 'girl', 'girls', 'woman', 'women', 'whiskey', 'dirt', 'road', 'drink', 'drunk', 'town', 'boys', 'family', 'mama', 'home', 'rain', 'god', 'country', 'bar')
merged_americana |>
filter(word %in% bro_lexicon) |>
count(word, sort = TRUE) %>%
knitr::kable()| word | n |
|---|---|
| home | 227 |
| road | 148 |
| town | 115 |
| girl | 103 |
| god | 101 |
| rain | 85 |
| country | 75 |
| whiskey | 58 |
| drink | 52 |
| boys | 51 |
| woman | 48 |
| bar | 41 |
| mama | 39 |
| drunk | 31 |
| truck | 18 |
| girls | 17 |
| family | 16 |
| dirt | 15 |
| women | 15 |
| beer | 9 |
These charts push the point that not all country music is “beer”, “trucks”, and “girls.” It does, however, make this stereotype of country music loud and clear. Looking at bro country, “girl” is used 1010 times. The next word, “country”, is only used 463 times. “Beer” and “truck” come in at 7th and 8th most used in this list with 227 and 195 mentions. An interesting point in the bro country chart is that although “girl” is first with over twice the mentions as anything else, “women” and “woman” are ranked 19th and 20th. This shows that bro country mainly refers to females as girls.
These same 20 words show up in a completely different order for Americana. “Home”, “road”, and “town” are the top three words. This places an emphasis on that nostalgic feeling when hearing this type of music. “Girl” is ranked 4th, but only is used 103 times compared to bro country’s 1010 times. It is also clear that when talking about drinking, Americana references whiskey rather than beer. “Whiskey” is ranked 8th with 58 times and “beer” is ranked 20th with only 9 times.
Bi-Grams
Lastly, I looked at bi-grams. I chose a few words to look at that have been prominent throughout the analysis. I looked at “road”, “girl”, and “time” for both sub-genres to see the differences in how they are used. I also looked at “beer” for bro country.
bryan %>%
full_join(FGL) %>%
full_join(shelton) %>%
full_join(rhett) %>%
full_join(aldean) -> merged_bros_bigrams
merged_bros_bigrams %>%
unnest_tokens(bigram, lyrics, token="ngrams", n=2) -> brograms
brogram_separated <- brograms %>%
separate(bigram, c("word1", "word2"), sep = " ")
brogram_filtered <- brogram_separated %>%
filter(!word1 %in% stop_words$word) %>%
filter(!word2 %in% stop_words$word)
brogram_filtered %>%
filter(word2 == "road") %>%
count(word1, word2, sort = TRUE) %>%
knitr::kable()| word1 | word2 | n |
|---|---|---|
| dirt | road | 33 |
| gravel | road | 12 |
| moonlit | road | 9 |
| county | road | 6 |
| harrison | road | 4 |
| lonesome | road | 4 |
| lane | road | 3 |
| mill | road | 3 |
| oak | road | 3 |
| brick | road | 2 |
| contributorsdirt | road | 2 |
| crooked | road | 2 |
| island | road | 2 |
| lot | road | 2 |
| windin | road | 2 |
| bad | road | 1 |
| bumpy | road | 1 |
| church | road | 1 |
| copperhead | road | 1 |
| driveway | road | 1 |
| field | road | 1 |
| highway | road | 1 |
| hole | road | 1 |
| opеn | road | 1 |
| outta | road | 1 |
| overgrown | road | 1 |
| paved | road | 1 |
| pinetucky | road | 1 |
| uphill | road | 1 |
| winding | road | 1 |
brogram_filtered %>%
filter(word2 == "beer") %>%
count(word1, word2, sort = TRUE) %>%
knitr::kable()| word1 | word2 | n |
|---|---|---|
| cold | beer | 63 |
| drinkin | beer | 7 |
| drink | beer | 3 |
| pour | beer | 3 |
| sip | beer | 3 |
| ass | beer | 2 |
| drinking | beer | 2 |
| bout | beer | 1 |
| buy | beer | 1 |
| cheap | beer | 1 |
| contributorscold | beer | 1 |
| contributorsdrinkin | beer | 1 |
| crankin | beer | 1 |
| draft | beer | 1 |
| drank | beer | 1 |
| drunk | beer | 1 |
| past | beer | 1 |
| spilling | beer | 1 |
| weird | beer | 1 |
brogram_filtered %>%
filter(word2 == "girl") %>%
count(word1, word2, sort = TRUE) %>%
knitr::kable()| word1 | word2 | n |
|---|---|---|
| hey | girl | 27 |
| yeah | girl | 26 |
| lyrics | girl | 16 |
| country | girl | 14 |
| redneck | girl | 14 |
| wage | girl | 14 |
| pretty | girl | 12 |
| sorority | girl | 12 |
| single | girl | 11 |
| baby | girl | 10 |
| night | girl | 10 |
| body | girl | 9 |
| nothin | girl | 8 |
| almighty | girl | 7 |
| lie | girl | 7 |
| love | girl | 7 |
| tonight | girl | 7 |
| cadillac | girl | 6 |
| eyes | girl | 6 |
| goodbye | girl | 6 |
| kiss | girl | 6 |
| time | girl | 6 |
| wrong | girl | 6 |
| communicatin | girl | 5 |
| head | girl | 5 |
| stop | girl | 5 |
| alright | girl | 4 |
| crazy | girl | 4 |
| fire | girl | 4 |
| found | girl | 4 |
| ghosts | girl | 4 |
| home | girl | 4 |
| lookin | girl | 4 |
| perfume | girl | 4 |
| shoes | girl | 4 |
| stay | girl | 4 |
| town | girl | 4 |
| wait | girl | 4 |
| addicted | girl | 3 |
| bad | girl | 3 |
| bar | girl | 3 |
| bed | girl | 3 |
| cheek | girl | 3 |
| closer | girl | 3 |
| comin | girl | 3 |
| curve | girl | 3 |
| dance | girl | 3 |
| dial | girl | 3 |
| eyed | girl | 3 |
| fine | girl | 3 |
| gonna | girl | 3 |
| halo | girl | 3 |
| hips | girl | 3 |
| lips | girl | 3 |
| list | girl | 3 |
| loving | girl | 3 |
| money | girl | 3 |
| ooh | girl | 3 |
| phone | girl | 3 |
| reasons | girl | 3 |
| ride | girl | 3 |
| roll | girl | 3 |
| shot | girl | 3 |
| swore | girl | 3 |
| tangled | girl | 3 |
| true | girl | 3 |
| world | girl | 3 |
| ya | girl | 3 |
| bay | girl | 2 |
| belt | girl | 2 |
| chance | girl | 2 |
| damn | girl | 2 |
| day | girl | 2 |
| grown | girl | 2 |
| heart | girl | 2 |
| hiding | girl | 2 |
| mercury | girl | 2 |
| mine | girl | 2 |
| rich | girl | 2 |
| round | girl | 2 |
| southern | girl | 2 |
| air | girl | 1 |
| beach | girl | 1 |
| boots | girl | 1 |
| cab | girl | 1 |
| champagnе | girl | 1 |
| chirpin | girl | 1 |
| club | girl | 1 |
| cold | girl | 1 |
| contributorcountry | girl | 1 |
| contributorredneck | girl | 1 |
| contributorsa | girl | 1 |
| contributorscountry | girl | 1 |
| contributorsgood | girl | 1 |
| contributorsgoodbye | girl | 1 |
| contributorsorority | girl | 1 |
| contributorssingle | girl | 1 |
| contributorssorority | girl | 1 |
| contributorsthe | girl | 1 |
| created | girl | 1 |
| crowd | girl | 1 |
| dayum | girl | 1 |
| deluxe | girl | 1 |
| drops | girl | 1 |
| easy | girl | 1 |
| feet | girl | 1 |
| fix | girl | 1 |
| floor | girl | 1 |
| fool | girl | 1 |
| forever | girl | 1 |
| free | girl | 1 |
| gentleman | girl | 1 |
| getaway | girl | 1 |
| girl | girl | 1 |
| goodbyes | girl | 1 |
| grind | girl | 1 |
| guy | girl | 1 |
| hands | girl | 1 |
| hat | girl | 1 |
| hater | girl | 1 |
| helpless | girl | 1 |
| hold | girl | 1 |
| hot | girl | 1 |
| inspiration | girl | 1 |
| koozie | girl | 1 |
| lite | girl | 1 |
| lyricsredneck | girl | 1 |
| memory | girl | 1 |
| miracle | girl | 1 |
| mm | girl | 1 |
| monday | girl | 1 |
| nah | girl | 1 |
| overthinkin | girl | 1 |
| pack | girl | 1 |
| perfect | girl | 1 |
| prettiest | girl | 1 |
| roof | girl | 1 |
| saturday | girl | 1 |
| shirt | girl | 1 |
| shower | girl | 1 |
| shy | girl | 1 |
| silly | girl | 1 |
| simple | girl | 1 |
| sittin | girl | 1 |
| slide | girl | 1 |
| slow | girl | 1 |
| smile | girl | 1 |
| smoke | girl | 1 |
| somethin | girl | 1 |
| started | girl | 1 |
| steaming | girl | 1 |
| stereo | girl | 1 |
| stick | girl | 1 |
| summer | girl | 1 |
| tailgate | girl | 1 |
| talk | girl | 1 |
| talking | girl | 1 |
| tennessee | girl | 1 |
| tongue | girl | 1 |
| uh | girl | 1 |
| walls | girl | 1 |
| water | girl | 1 |
| week | girl | 1 |
| whiskey | girl | 1 |
| woah | girl | 1 |
| worries | girl | 1 |
brogram_filtered %>%
filter(word2 == "time") %>%
count(word1, word2, sort = TRUE) %>%
knitr::kable()| word1 | word2 | n |
|---|---|---|
| neon | time | 9 |
| summer | time | 7 |
| harvest | time | 6 |
| it’s | time | 6 |
| damn | time | 5 |
| killing | time | 5 |
| picking | time | 5 |
| closin | time | 4 |
| stepping | time | 4 |
| sweet | time | 4 |
| wasting | time | 4 |
| christmas | time | 3 |
| contributorsevery | time | 3 |
| day | time | 3 |
| killin | time | 3 |
| lost | time | 3 |
| love | time | 3 |
| town | time | 3 |
| bell | time | 2 |
| bout | time | 2 |
| closing | time | 2 |
| goodbye | time | 2 |
| hard | time | 2 |
| lyrics | time | 2 |
| quitting | time | 2 |
| spring | time | 2 |
| aka | time | 1 |
| bacardi | time | 1 |
| bad | time | 1 |
| bright | time | 1 |
| contributorsfirst | time | 1 |
| contributorsgoodbye | time | 1 |
| contributorsharvest | time | 1 |
| contributorslong | time | 1 |
| contributorsmore | time | 1 |
| contributorsneon | time | 1 |
| father | time | 1 |
| girl | time | 1 |
| guess | time | 1 |
| hey | time | 1 |
| letting | time | 1 |
| months | time | 1 |
| night | time | 1 |
| past | time | 1 |
| pickin | time | 1 |
| quality | time | 1 |
| spending | time | 1 |
| sunset | time | 1 |
| supper | time | 1 |
| swell | time | 1 |
| thirsty | time | 1 |
childers %>%
full_join(bingham) %>%
full_join(isbell) %>%
full_join(jinks) %>%
full_join(wall) -> merged_americana_bigrams
merged_americana_bigrams %>%
unnest_tokens(bigram, lyrics, token="ngrams", n=2) -> americanagrams
americanagram_separated <- americanagrams %>%
separate(bigram, c("word1", "word2"), sep = " ")
americanagram_filtered <- americanagram_separated %>%
filter(!word1 %in% stop_words$word) %>%
filter(!word2 %in% stop_words$word)
americanagram_filtered %>%
filter(word2 == "road") %>%
count(word1, word2, sort = TRUE) %>%
knitr::kable()| word1 | word2 | n |
|---|---|---|
| hard | road | 4 |
| circle | road | 3 |
| harlan | road | 3 |
| lonely | road | 3 |
| narrow | road | 3 |
| coverdale | road | 2 |
| endless | road | 2 |
| windin | road | 2 |
| contributorsharlan | road | 1 |
| contributorsthe | road | 1 |
| contributorswhitehouse | road | 1 |
| county | road | 1 |
| dirt | road | 1 |
| gravel | road | 1 |
| hateful | road | 1 |
| home | road | 1 |
| house | road | 1 |
| likethe | road | 1 |
| lonesome | road | 1 |
| rocky | road | 1 |
| uphill | road | 1 |
americanagram_filtered %>%
filter(word2 == "girl") %>%
count(word1, word2, sort = TRUE) %>%
knitr::kable()| word1 | word2 | n |
|---|---|---|
| lover | girl | 15 |
| catholic | girl | 12 |
| lovin | girl | 4 |
| sweet | girl | 4 |
| pieces | girl | 3 |
| drunk | girl | 2 |
| eyed | girl | 2 |
| charleston | girl | 1 |
| contributorscharleston | girl | 1 |
| contributorslover | girl | 1 |
| darlin | girl | 1 |
| haired | girl | 1 |
| harlan | girl | 1 |
| lyricscharleston | girl | 1 |
| mamma | girl | 1 |
| mountain | girl | 1 |
| prettiest | girl | 1 |
| renaissance | girl | 1 |
| single | girl | 1 |
| solitary | girl | 1 |
| stone | girl | 1 |
| texas | girl | 1 |
| throat | girl | 1 |
| wrong | girl | 1 |
americanagram_filtered %>%
filter(word2 == "time") %>%
count(word1, word2, sort = TRUE) %>%
knitr::kable()| word1 | word2 | n |
|---|---|---|
| supper | time | 6 |
| winter | time | 6 |
| sweet | time | 3 |
| wasted | time | 3 |
| borrowing | time | 2 |
| closing | time | 2 |
| hard | time | 2 |
| it’s | time | 2 |
| memories | time | 2 |
| past | time | 2 |
| vacation | time | 2 |
| yeah | time | 2 |
| christmas | time | 1 |
| closin | time | 1 |
| contributorsno | time | 1 |
| dingess | time | 1 |
| due | time | 1 |
| explodе | time | 1 |
| idle | time | 1 |
| killing | time | 1 |
| lost | time | 1 |
| lyricsevery | time | 1 |
| mountain | time | 1 |
| ol | time | 1 |
| plenty | time | 1 |
| remember | time | 1 |
| wise | time | 1 |
These charts continue to show the difference between the sub-genres, even when using the same words. These graphs show what word comes in front of the words I have chosen to look at. Starting with “road”, bro country mainly uses phrases such as, “dirt road”, “gravel road”, “moonlit road”, and “country road.” “Road” is used in a literal sense, whereas in Americana, the use is more metaphorical. These phrases include, “hard road”, “lonely road”, and “endless road.” This makes sense as hardship is a large theme used in Americana music. Bro country’s use of “road” in the literal sense also makes sense because dirt roads are associated with the stereotypical country way of living.
Seeing how each sub-genre uses the word “girl” shows not only how they speak to girls in songs, but also how they speak about them. Bro country mainly addresses women in their songs by using phrases such as, “hey girl” and “yeah girl.” They speak about them as “country girl”, “redneck girl”, “pretty girl”, and “sorority girl.” Americana does not address girls in their songs explicitly like bro country does. They do, however, refer to women as, “lover girl”, “catholic girl”, “sweet girl”, and “darlin’ girl”. Bro country is more aggressive when it comes to speaking to/about women, and Americana speaks about women rather than to women.
“Time” is drastically different between the two sub-genres. In bro country, the most popular phrases are, “neon time”, “summer time”, and “harvest time.” This creates vibrant imagery of neon bar signs, bright summer nights, that would sound like music that one would listen to with their windows down, driving through back-roads. Americana uses “time” for phrases such as, “supper time”, “winter time”, “sweet time”, and “wasted time.” These phrases offer a different imagery of family dinners on cold winter nights. Although these can be “sweet times,” some people associate the winter season with darkness and loneliness which could be interpreted as wasted time.
Lastly, I looked at how “beer” is used in bro country. I included this in the report because it continues to show how bro country falls into the stereotypes. “Cold beer” is ranked 1st, being used 63 times. The second phrase is “drinkin’ beer” with 7 times. I would not have expected anything else.
Conclusion
In conclusion, I would argue that this lyrical analysis not only showed the differences between bro country and Americana, but also pushed the idea of bro country creating the country music stereotype that most people think of. Although a lot of the same words are used in both sub-genres, the bi-gram section of this analysis made it clear that how each sub-genre uses these words is different to create their own separate narratives. After this analysis, I would also argue that Americana does have more depth and emotion used in its lyrical writing than bro country. Americana uses more metaphors, and writes about difficult times. This places emphasis on Americana being similar to traditional country music. Bro country does have a more upbeat, simple man, party vibe, falling into the “beer”, “trucks”, and “girls” stereotype.
Metaphorically speaking, if bro country was a person, they would drink beer, and if Americana was a person, they would drink whiskey. Beer is often drank at parties, sporting events, and in other casual settings. It is cheap and easy to find. Beer goes down quick, with a low alcohol percentage. Whiskey is more complex. It has layers of different flavors, and should be sipped slowly to appreciate it. Whiskey is more expensive, with a much higher alcohol percentage. Whiskey is a dark liquor and can be harsh if you are not expecting it.