미국 가수 테일러 스위프트의 2006년~2017년도 사이에 발매된 앨범 수록곡의 전 가사를 워드 클라우드로 그려보기
데이터 출처(https://www.kaggle.com/datasets/PromptCloudHQ/taylor-swift-song-lyrics-from-all-the-albums?resource=download)
# 데이터 전처리(불필요한 열 제거)
taylor <- read.csv("taylor_swift_lyrics.csv", header=T)
taylor$artist <- NULL
taylor$album <- NULL
taylor$track_title <- NULL
taylor$track_n <- NULL
taylor$line <- NULL
taylor$year <- NULL
head(taylor)
# 특수문자 제거 및 공백 처리
cleaned_txt <- iconv(taylor, "UTF-8", "ASCII", sub="") #불필요한 텍스트 제거
cleaned_txt <- gsub("[^[:alnum:][:space:]]", " ", cleaned_txt) #특수문자 제거
cleaned_txt <- gsub("\\s+", " ", cleaned_txt) # 연속된 공백 문자를 하나의 공백으로
# 텍스트를 Corpus로 변환(텍스트 마이닝 패키지)
corpus <- Corpus(VectorSource(cleaned_txt))
# 데이터 전처리
corpus <- tm_map(corpus, removeWords, c(stopwords("en"),"don","can") ) #큰 의미 없는 가사 제거
corpus <- tm_map(corpus, content_transformer(tolower)) # 소문자로 변환
corpus <- tm_map(corpus, removePunctuation) # 구두점 제거
corpus <- tm_map(corpus, removeNumbers) # 숫자 제거
corpus <- tm_map(corpus, removeWords, stopwords("en")) # 영어 불용어 제거
corpus <- tm_map(corpus, stripWhitespace) # 여백 제거
# 단어 행렬 생성
dtm <- TermDocumentMatrix(corpus)
m <- as.matrix(dtm)
word_freqs <- sort(rowSums(m), decreasing = TRUE)
word_freq_df <- data.frame(word = names(word_freqs), freq = word_freqs)
# 워드 클라우드 생성 (원형 모양)
wordcloud2(data = word_freq_df, shape = "circle", color = brewer.pal(8, "Dark2"))