Tyler, the Creator — феномер в мире музыки 21 века. C его альбомом IGOR(Genius 2019) он совершает самый резкий стилистический поворот своей карьеры. Акцентируясь на звуковой палитре, а не на песенной структуре, альбом представляет собой мозаику, собранную из гудящих бас-линий, выдающихся клавишных проигрышей и расстроенных синтов.
В этом проекте я решила погрузиться в альбом моего любимого исполнителя, в котором он раскрыл тему расставания, и проанализировать наиболее частотные слова, которые исполнитель использует в своих треках, а также развитие темы любви и дружбы в его альбоме.
Про альбом IGOR
В альбоме IGOR всего 12 песен.
Для их анализа я использую следующие библиотеки:
xml2
dplyr
tidytext
tidyr
ggplot2
wordcloud2
stringr
Этап 1. Загружаем необходимые библиотеки
options(warn =-1)library(xml2)library(dplyr)
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
Предварительно загрузив XML-документ с текстами песен в рабочую директорию, я строю тиббл с названиями 12 песен альбома, их текстами, а также считаю количество слов в каждой песне.
# A tibble: 12 × 3
title lyrics number_of_words
<chr> <chr> <int>
1 IGOR'S THEME "What? What? Wh… 272
2 EARFQUAKE "For real, for … 367
3 I THINK "(Four, four, f… 403
4 EXACTLY WHAT YOU RUN FROM YOU END UP CHASING "Exactly what y… 31
5 RUNNING OUT OF TIME "Running out of… 260
6 NEW MAGIC WAND "Sometimes you … 481
7 A BOY IS A GUN "No, don't shoo… 589
8 PUPPET "I wanna talk, … 363
9 WHAT’S GOOD "Turn my lights… 540
10 GONE, GONE / THANK YOU "Comparing scar… 604
11 I DON’T LOVE YOU ANYMORE "See, heavy fee… 265
12 ARE WE STILL FRIENDS? "Dream\n … 250
Этап 3. Строим облако слов
На этом этапе я строю облако наиболее частотных слов во всех песнях альбома IGOR, чтобы определить слова, которые персонаж исполнителя использует в своих песнях, чтобы отразить тему расставания.
В облаке можно заметить, помимо слова love, такие наиболее частотные слова, как time и friends, в связи с чем можно предположить (если не читать тексты песен и при этом знать общий контекст), что любовь в данном альбоме тесно связана с темой дружеских отношений. В связи с этим я решила, что могу построить гистограмму, в которой будет отражена встречаемость слов, связанных с любовью и дружбой в каждой песне альбома в той последовательности, в которой они идут.
Этап 3. Строим гистограмму любви и дружбы песен альбома
# Заранее устанавливаю порядок песен, так как при первой попытке выполнить задание оказалось, что программа не может сама определить порядок по тибблу, как я ожидала, и распределяет все песни в рандомном порядке songs_tibble <- songs_tibble %>%mutate(title =factor(title, levels =c("IGOR'S THEME", "EARFQUAKE", "I THINK","EXACTLY WHAT YOU RUN FROM YOU END UP CHASING","RUNNING OUT OF TIME", "NEW MAGIC WAND","A BOY IS A GUN", "PUPPET", "WHAT’S GOOD","GONE, GONE / THANK YOU", "I DON’T LOVE YOU ANYMORE","ARE WE STILL FRIENDS?" )))love_friend_counts <- songs_tibble %>%mutate(love_count =str_count(lyrics, "\\blov\\w*\\b"),friend_count =str_count(lyrics, "\\bfriend\\w*\\b") ) %>%select(title, love_count, friend_count) %>%pivot_longer(cols =c(love_count, friend_count), names_to ="word", values_to ="count")love_friend_counts$title <-factor( love_friend_counts$title,levels =rev(unique(love_friend_counts$title)))ggplot(love_friend_counts, aes(x = title, y = count, fill = word)) +geom_col(data =filter(love_friend_counts, word =="love_count"), aes(y = count), position ="identity", alpha =0.8) +geom_col(data =filter(love_friend_counts, word =="friend_count"), aes(y =-count), position ="identity", alpha =0.8) +coord_flip() +scale_y_continuous(labels = abs,breaks =seq(-max(love_friend_counts$count), max(love_friend_counts$count), by =1) ) +labs(x ="Название песни",y ="Частотность слов",fill ="Вид слова" ) +theme_minimal(base_family ="Arial") +# Современный шрифтscale_fill_manual(values =c("love_count"="#FF69B4", "friend_count"="#FFB6C1")) +# Розовые тонаtheme(axis.text.x =element_text(angle =45, hjust =1, color ="darkmagenta"),axis.text.y =element_text(size =10, color ="hotpink4"),panel.background =element_rect(fill ="white", color =NA), # Белый фон графикаplot.background =element_rect(fill ="white", color =NA), # Белый фон страницыlegend.background =element_rect(fill ="white"),legend.key =element_rect(fill ="white", color =NA),legend.title =element_text(size =12, color ="hotpink"),legend.text =element_text(color ="darkmagenta"),plot.margin =margin(t =10, r =10, b =10, l =10) # Минимальные отступы )
Вывод
В графике мы можем проследить динамику отношений персонажа Тайлера и его возлюбленного. Интересно, что слова, однокоренные со словом love, используются всего в 5 песнях, причем используются они неравномерно по ходу всего альбома: чаще всего во второй и третьей песнях, далее в десятой и одиннадцатой. Высокая частотность слов, однокоренных со словами love и friend в финальных песнях может отражать желание автора объединить темы любви и дружбы, подчеркивая их значимость в завершении альбома. В то же время можно предположить, что, так как начальные песни больше сосредоточены на теме любви, а ближе к концу появляется фокус на дружбе, именно дружба и может являться возможной альтернативой или разрешением любовных конфликтов.