Hazel Kavili

Accio data!

github twitter linkedin email rss
Travis Konserine TidyText ile Hazirlik
Jun 3, 2018
5 minutes read

Bilen bilir, 3 yaşından beri Travis dinliyorum.

Şaka şaka, o kadar eski değil. Ama kendimi bildim bileli Travis dinlemeyi çok seviyorum. Çok pozitif ve sevgi dolu şarkıları var. Hüzünlendirecekleri zaman bile o kadar da hüzünlendirmiyorlar. 27 Haziran 2008 yılında Park Orman’da verdikleri ilk konseri en önden izleyip, Andy Dunlop’un penasını kapmıştım :) İstanbul’a geldikleri hiçbir konseri de kaçırmadım. Yine, en güzel ay olan Haziran’ın 8’inde geliyorlar. Biletleri çoktaaan aldım. Bu konserin şerefine de şarkı sözlerini toparlayıp minik bir metin analizi çalışması yaptım.

Odamdaki Travis posteri, 2008, Flowers in The Window çalıyorlardı

Odamdaki Travis posteri, 2008, Flowers in The Window çalıyorlardı

İlk önce gerekli kütüphaneleri indiriyorum. Travis’in şarkı sözlerini geniusR paketi yardımıyla çekiyorum:

library(geniusR)
library(tidyverse)
library(tidytext)
library(tidyr)
library(lubridate)
library(wordcloud)
Travis_Albums <-  tibble(
  artist = c(rep("Travis", 6)),
  album = c("The Man Who", "The Boy with No Name", "The Invisible Band",
            "Good Feeling","Everything at Once","12 Memories")
)
Travis_Lyrics <- Travis_Albums %>% 
  mutate(tracks = map2(artist, album, genius_album))

All_Lyrics <- Travis_Lyrics %>% 
  unnest(tracks) %>%    
  arrange(desc(artist))

Veri setimi çalışma alanıma kaydettim ve üstteki kodlar sürekli çalışmasın diye, şarkı sözlerini dosyadan okuyorum:

All_Lyrics <- read_csv("~/Desktop/myblog/myblog/data/Travis_Songs.csv")

head(All_Lyrics) %>% knitr::kable()
X1 track_title track_n lyric line
1 Writing to Reach You 1 Every day I wake up and it’s Sunday 1
2 Writing to Reach You 1 Whatever’s in my head won’t go away 2
3 Writing to Reach You 1 The radio is playing all the usual 3
4 Writing to Reach You 1 What’s a wonderwall anyway? 4
5 Writing to Reach You 1 Because my inside is outside 5
6 Writing to Reach You 1 My right side’s on the left side 6

Şimdi bu şarkı sözlerini “stop word” yani a, an, the gibi sözcüklerden arındıralım. En çok hangi kelimeleri kullanmışlar şarkılarında, bir bakalım:

Tidy_Lyrics <- All_Lyrics  %>% unnest_tokens(word, lyric)

Tidy_Lyrics <- Tidy_Lyrics %>% anti_join(get_stopwords())

Tidy_Lyrics_count <- Tidy_Lyrics %>% 
  select(-track_title) %>% count(word, sort = TRUE) 

Tidy_wordcloud <- Tidy_Lyrics %>%
  count(word) %>%
  with(wordcloud(word, n, max.words = 100))

Love ve time kelimesinin kocaman olması şaşırtmıyor :)

Travis’in mutlu şarkılar yaptığını (daha doğrusu beni mutlu eden şarkılar yaptığını) söyledim. Bakalım hangi şarkılar pozitif, hangi şarkılar negatif:

Travis_sentiment <- Tidy_Lyrics %>% inner_join(get_sentiments("bing"), by = "word") %>% 
  count(track_title, index = line %/% 70, sentiment) %>% 
  spread(sentiment, n, fill = 0) %>% 
  mutate(sentiment = positive - negative) %>% arrange(desc(sentiment))

head(Travis_sentiment, n = 10) %>% knitr::kable()
track_title index negative positive sentiment
The Line Is Fine 0 6 50 44
Safe 0 5 30 25
My Eyes 0 12 34 22
Happy 0 6 24 18
You Don’t Know What I’m Like 0 4 22 18
Closer 0 2 14 12
Everything at Once 0 3 15 12
Flowers In The Window 0 5 17 12
Under The Moonlight 0 0 12 12
Good Feeling 0 3 13 10
tail(Travis_sentiment, n = 10) %>% knitr::kable()
track_title index negative positive sentiment
Falling Down 0 9 1 -8
The Cage 0 10 2 -8
Why Does It Always Rain On Me? 0 10 1 -9
Mid-Life Krysis 0 13 3 -10
Follow The Light 0 11 0 -11
Funny Thing 0 17 6 -11
Idlewild (Ft.JosephineOniyama) 0 15 4 -11
Tied To The 90’s 0 16 5 -11
Quicksand 0 12 0 -12
Eyes Wide Open 0 15 0 -15

Burada index’in 0 olması (line %/% 70 işlemi sonucu), şarkıların satırları bazında değil, geneli bazında duygulara baktığım anlamına geliyor. Ama daha küçük sayılarla bakarsak satırların duygularını inceleyebiliriz ve bir şarkı mutlu başlayıp hüzünlü mü bitmiş gibi değişik durumları inceleyebiliriz.

Beni en çok mutlu eden şarkıları Closer, Flowers in The Window ve My Eyes, en çok üzen şarkıları ise Quicksand, Mid-Life Krysis ve Driftwood. Tabii Why Does it Always Rain on Me şarkısı hayattaki şanssızlıklarımızı iyi yansıttığı için o da listede :)

Lastfm sitesine 2010’dan beri üyeyim ve bazen hangi grupları, şarkıları ne sıklıkla dinlemişim diye bakıyorum. Bu yazının konusu olan grubu ne kadar dinlemişim bakalım.

Eğer Lastfm profiliniz varsa veya merak ettiğiniz bir hesap, bu adresten tüm dinleme verisini alabilirsiniz:

Lastfm_data <- read_csv("~/Desktop/myblog/myblog/data/samcohen_.csv", col_names = FALSE, skip = 1)

Lastfm_data <- Lastfm_data %>%  
  rename('artist' = X1, 'album' = X2, 'song'= X3, 'listeningtime' = X4 )

head(Lastfm_data) %>% knitr::kable()
artist album song listeningtime
Travis Singles Love Will Come Through 02 Jun 2018 14:51
Ra Ra Riot The Rhumb Line Dying Is Fine 02 Jun 2018 14:47
Travis Good Feeling The Line Is Fine 02 Jun 2018 14:42
Travis Good Feeling The Line Is Fine 02 Jun 2018 10:19
Travis Coming Around - Single Coming Around 02 Jun 2018 09:45
Travis The Man Who Turn 02 Jun 2018 09:41

Dinleme sürelerimi gösteren veri setini, ilk önce uygun formata getirmem gerekiyor, ardından yıllara göre gruplayacağım ve ggplot2 ile görselleştireceğim:

Lastfm_data$listeningtime <- as.Date(Lastfm_data$listeningtime, format="%d %b %Y %H:%M", tz="CET")

allMonths <- Lastfm_data %>% expand(year(listeningtime), month(listeningtime)) %>% filter('year(listeningtime)' >= 2010)


Travis_plot <- Lastfm_data %>% 
  filter(artist == "Travis", year(listeningtime) >= 2010) %>% group_by(year(listeningtime), artist) %>% 
  tally() %>% 
  top_n(1, wt = n) %>% 
  rename(year = `year(listeningtime)`) %>% 
  ggplot(aes(x = year, y = n, fill = year)) +
  geom_bar(stat = "identity", width = 0.7) + 
  ggtitle("Yillara göre Travis dinlemelerim") +
  labs(y = "Dinleme Sayisi", x = "Yillar") +
  theme_light()

Travis_plot

2018 henüz bitmedi :)

En çok hangi Travis albümünü dinlemişim diye bakmak istiyorum. Cuma günü gerçekleşecek olan konserin odak albümünün The Man Who olduğunu unutmayalım :)

Travis_album <- Lastfm_data %>% 
   filter(artist == "Travis", year(listeningtime) >= 2010) %>% 
   na.omit() %>% 
  group_by(album) %>% summarise(total_listening = n()) %>% 
  arrange(desc(total_listening))

Album_plot <- ggplot(data = Travis_album, aes(x = reorder(album, total_listening), y = total_listening)) + 
  geom_bar(stat = "identity", width = 0.7) + coord_flip() +
  labs(y = "Dinleme Sayisi", x = "Albumler") +
  theme_light()

Album_plot

Bu plot sonunda beni asıl şaşırtan Where You Stand albumunu The Man Who’dan daha çok dinlemiş olmam :) Yine de umarım Slide Show/Blue Flashing Ligh çalarlar!

NOT: Bu çalışma sırasında Travis dinlenmiştir! Cuma akşamı görüşürüz!


Back to posts


comments powered by Disqus