For my honors thesis, I am looking at the idolization, sexualization, and fetishization of teenage girls within music and media over the last 50 years. This project is a brief intro into what my thesis will look at over the next two years, looking specifically at what the most popular words are within music lyrics and the overall sentiments associated with the words. I will then look at a selection of idolization words (which is by no means a full scope of all idolization and sexualization words) and the overall sentiment of those words. My hypothesis is that explicit sexualization is less prominent than implied sexualization throughout lyrics, and this will be shown through less lyrics with direct references to teenage girls and more references to “young” and “girl” and “baby” with sexual and otherwise negative sentiments.
Here, I am loading the packages necessary for the completion of this project. Additionally, I am loading a data file called “merged.music” which is an R.data file that I compiled. This includes music data from the Billboard package in R as well as my own data in order to supplement the package, as the Billboard data only goes until 2016. My project seeks to evaluate 1971 to 2021. Currently, no lyric data has been scraped for 2017-2021, and as such, those years will be excluded in this current evaluation.
library(tidyverse)
library(billboard)
library(tidytext)
library(readxl)
library(wordcloud2)
load("merged.music.Rdata")
In order to evaluate all the words individually, rather than as part of each song, the tokens (as in, the lyrics and words), must be unnested and seen as individual observations. In this case, it is one observation per word.
merged_music %>%
unnest_tokens(word, lyrics) -> teen_words
teen_words %>%
anti_join(stop_words) %>%
filter(!word %in% c("verse", "chorus", "1", "2", "bridge", "hook")) %>%
count(word, sort = TRUE) %>%
wordcloud2()
teen_words %>%
anti_join(stop_words) %>%
filter(!word %in% c("verse", "chorus", "1", "2", "bridge", "hook")) %>%
count(word, sort = TRUE) %>%
head(10)
## # A tibble: 10 x 2
## word n
## <chr> <int>
## 1 love 11753
## 2 baby 6921
## 3 yeah 5070
## 4 time 4172
## 5 wanna 3516
## 6 gonna 3249
## 7 girl 3173
## 8 night 2819
## 9 feel 2808
## 10 heart 2426
This word cloud and table demonstrate already the basis of my honors thesis: that a majority of songs are founded on love and girls. The presence of “night” as the 8th most common word is another key factor; most sexual intercourse and encounters occur at night. Night is often used as a cover and with the context of actions that are seen as unfavorably or unseemly. In 1977, Rod Stewart sat at #1 on the Billboard Top 100 Year End charts with his song, “Tonight’s the Night (Gonna Be Alright)” with lyrics such as “Don’t say a word my virgin child” and “Stay away from my window / Stay away from my backdoor, too” implying Stewart was taking an underage girl’s virginity in the cover of the night.
My project specifically looks at idolization of teens and young women. I have created two initial lexicons, one of which evaluates the general prominence of words in a similar context–specifically, numbers associated with teenagers– and one as a more general lexicon. This general lexicon does still include numerical words, but seeks to contextualize these numerical words within a broader lyrical context to understand if they share the same level of prominence as implicit sexualization of young girls. Implicit, in this project, is understood to be circumstances where the age of the girl or subject is implied, even if the sex or sexual acts/fantasies are explicitly described.
idol_words <- c("baby", "girl", "seventeen", "eighteen", "nineteen", "sixteen", "fifteen", "teen", "fourteen", "thirteen", "school", "sex", "young")
teen.subset <- subset(teen_words, (word %in% c("girl", "baby", "body", "sex", "virgin", "teen", "seventeen", "eighteen", "nineteen", "thirteen", "hard", "fifteen", "sixteen", "fourteen", "teenage", "teenager", "shake", "ass", "school", "strip", "young", "fantasy", "child", "sweet", "minor", "child", "penis")))
teen.subset %>%
count(word, sort = TRUE) %>%
arrange(desc(n)) %>%
head(10) %>%
ggplot(aes(x = reorder(word, -n), y = n, fill = word)) + geom_bar(stat = "identity") +
theme_classic() +
labs(x = "Lyric",
y = "Frequency of Lyric",
title = "Frequency of Implicit and Explicit Words",
subtitle = "Last 50 Years Billboard Top 100")
teen_words %>%
anti_join(stop_words) %>%
filter(word %in% idol_words) %>%
count(word, sort = TRUE) %>%
arrange(desc(n)) %>%
ggplot(aes(x = reorder(word, -n), y = n, fill = word)) + geom_bar(stat = "identity") +
theme_classic() +
labs(x = "Lyric",
y = "Frequency of lyric",
title = "Frequency of Explicit Words",
subtitle = "Last 50 Years Billboard Top 100")
These two graphs demonstrate that the prominence of explicit “young” words such as “teen” and ages are less visible within lyrics than implied sexual lyrics, such as “young” and “baby” and “girl.” There are 280 words in a song on average. With a rough approximation of 5100 songs having a grand total of 1,428,000 lyrics (as an estimate), .5% of all lyrics are the word “baby” and .8% of all lyrics are the word “love.” This isn’t factoring for the large portion of words that are stop words, which will increase the presence of sexualizing and idolizing words among lyrics.
Based on this graph, and the previous word cloud, “baby” is one of the most popular words of all time. But how does the prevalence of this word change over time?
teen_words %>%
group_by(year) %>%
filter(word == "baby") %>%
count(word, sort = TRUE) %>%
ggplot(aes(year, n, color = word)) + geom_line() +
theme_classic() +
labs(x = "Year",
y = "Frequency of 'Baby'",
title = "Frequency of the word 'Baby' over 50 Years",
subtitle = "Billboard Top 100")
teen_words %>%
group_by(artist, year) %>%
filter(word == "baby") %>%
count(word, sort = TRUE) %>%
head(10) -> baby.singer
baby.singer %>%
ggplot(aes(year, n, color = artist)) + geom_point(position = "jitter") +
theme_classic() +
labs(x = "Year",
y = "Frequency of Baby",
title = "Frequency of the Word Baby by Artist",
subtitle = "Last 50 Years Billboard Top 100")
The word “baby” had two large spikes, both of which largely originated from male singers. When looking at total users of the word baby over music careers, the graph changes, indicating cumulative totals are more distributed among male and female artists, but that male artists are still largely the majority lyricist of “baby.”
teen_words %>%
group_by(artist) %>%
filter(word == "baby") %>%
count(word, sort = TRUE) %>%
head(10) %>%
ggplot(aes(artist, n, fill = artist)) + geom_col() +
theme_classic() +
labs(x = "Artist",
y = "Frequency of Baby",
title = "Frequency of the Word Baby by Artist",
subtitle = "Last 50 Years Billboard Top 100") +
scale_x_discrete(guide = guide_axis(n.dodge = 2))
Much of this is going to be relegated to the full project, due to the extensive nature of needing to examine each song individually for subtleties in the lyrics as well as euphemisms and other implied contexts. However, for right now, I am going to briefly look at the overall sentiments of the teen subset words.
First, I’m going to evaluate the overall sentiments of the lyrics, to get a general scope of the emotions and feelings within them.
bing.sent <- teen_words %>%
inner_join(get_sentiments("bing")) %>%
count(word, sentiment, sort = TRUE) %>%
ungroup()
## Joining, by = "word"
bing.sent %>%
group_by(sentiment) %>%
slice_max(n, n = 10) %>%
ungroup() %>%
mutate(word = reorder(word, n)) %>%
ggplot(aes(n, word, fill = sentiment)) +
geom_col(show.legend = FALSE) +
facet_wrap(~sentiment, scales = "free_y") +
labs(x = "Contribution to sentiment",
y = NULL)
The proportion of positive words is definitely higher than the proportion of negative words in the general lyric dataset. Now that there is a general scope on the lyrics as a whole, I want to examine the sentiments of the subsetted lyrics. As a reminder, my hypothesis is that words about teenagers and sex will have an overall negative sentiment associated with them.
nrc_negative <- get_sentiments("nrc") %>%
filter(sentiment == "negative")
teen.subset %>%
inner_join(nrc_negative) %>%
count(word, sort = TRUE)
## Joining, by = "word"
## # A tibble: 2 x 2
## word n
## <chr> <int>
## 1 ass 221
## 2 strip 32
teen.bing.neg <- get_sentiments("bing") %>%
filter(sentiment == "negative")
teen.subset %>%
inner_join(teen.bing.neg) %>%
count(word, sort = TRUE)
## Joining, by = "word"
## # A tibble: 2 x 2
## word n
## <chr> <int>
## 1 hard 861
## 2 shake 813
Interestingly, these words are not the words I anticipated to be negative sentiments. Although I am unsurprised these words are negative, I expected the list to be longer.
nrc_positive <- get_sentiments("nrc") %>%
filter(sentiment == "positive")
teen.subset %>%
inner_join(nrc_positive) %>%
count(word, sort = TRUE)
## Joining, by = "word"
## # A tibble: 5 x 2
## word n
## <chr> <int>
## 1 baby 6921
## 2 sweet 799
## 3 child 217
## 4 sex 118
## 5 virgin 17
teen.bing.pos <- get_sentiments("bing") %>%
filter(sentiment == "positive")
teen.subset %>%
inner_join(teen.bing.pos) %>%
count(word, sort = TRUE)
## Joining, by = "word"
## # A tibble: 1 x 2
## word n
## <chr> <int>
## 1 sweet 799
nrc_antic <- get_sentiments("nrc") %>%
filter(sentiment == "anticipation")
teen.subset %>%
inner_join(nrc_antic) %>%
count(word, sort = TRUE)
## Joining, by = "word"
## # A tibble: 3 x 2
## word n
## <chr> <int>
## 1 sweet 799
## 2 child 217
## 3 sex 118
To say I am shocked and moderately disgusted is an understatement. These words, talking about sex, young, and child, are coded as anticipation and positive. There is the potential that “child” can and should be understood that songs are about children and hope for the future, but with the Rod Stewart example earlier, it is essential to understand that not every song follows the childlike innocence one expects. Finally, I want to look at the overall song scores in the AFINN model. What songs are scored as overall positive, and which ones are scoring negatively? Are they known “sexual” songs, or are they songs about a subject other than sex?
afinn <- teen_words %>%
inner_join(get_sentiments("afinn")) %>%
group_by(title) %>%
summarise(sentiment = sum(value)) %>%
mutate(method = "AFINN")
## Joining, by = "word"
afinn %>%
arrange(desc(sentiment)) %>%
head(10) %>%
ggplot(aes(title, sentiment, fill = title)) + geom_col(show.legend = FALSE) +
scale_x_discrete(guide = guide_axis(n.dodge = 3)) +
theme_classic() +
labs(x = "Song Title",
y = "AFINN Score",
title = "Top Scoring AFINN Songs",
subtitle = "Billboard Top 100 over the last 50 years")
afinn %>%
arrange((sentiment)) %>%
head(10) %>%
ggplot(aes(title, sentiment, fill = title)) + geom_col(show.legend = FALSE) +
scale_x_discrete(guide = guide_axis(n.dodge = 3)) +
theme_classic() +
labs(x = "Song Title",
y = "AFINN Score",
title = "Worst Scoring AFINN Songs",
subtitle = "Billboard Top 100 over the last 50 years")
Without looking at each song individually, it can be difficult to tell what the differences between the top songs and the bottom songs are. However, based on inferences of song titles from the meaning the words carry, the top songs are all about love, and the bottom songs are about sex and rejections. Breaking it down even further, this could carry the potential that the difference between these songs is if the singer views the subject in a favorable light–they could all be about sex and love and idolization/sexualization/fetishization of young women, but only score negatively when the men are not receiving what they desire from women. This is based solely off song titles and my knowledge of the songs listed above.
It is difficult to determine whether my hypothesis is proven at this current stage due to the limited scope employed in this project. At this time, however, several preliminary conclusions can be drawn.
Words such as “baby,” “girl,” “shake,” “hard,” and “body,” appear much more frequently than words like “teen,” “virgin,” “sex,” and “young.” This indicates that euphemisms are prominent in songs in order to indirectly convey meanings of sex.
The extremely high usage of “baby” and “girl,” as two of the most prominent words before filtering for words only in the lexicon, indicates that a large portion of songs include some reference to youth and women.
When looking specifically at the word “baby,” 80% of the most frequent users over the last 50 years are men.
There are a lot of songs with missing lyrics. These will need to be manually filled in or code will need to be generated to enter in the lyrics for the selected songs.
Additionally, it is worthwhile to include an analysis into the song titles as well. Several directly reference being sixteen, seventeen, a teenager, or otherwise young.
Finally, a lexicon on euphemisms and a deeper understanding of the way sex is talked about, implied, and how women are treated within sexual and music spheres is necessary to fully complete this project to the highest available scope and change the media industry. N grams are an excellent next step in that they will allow me to evaluate how prominent word combinations are. Once a lexicon of sex words and idolization words has been finalized, ngrams will allow for easier evaluations of euphemisms.