보통 음악을 분류 할 때 여러분은 어떤 기준으로 구분하시나요?
장르, 아티스트, 프로듀서 혹은 기획사, 작곡가/작사가 등 여러가지 기준이 있을 겁니다. 이것에 따른 분류는 도메인 전문가들에게 맡기고, 저희는 데이터를 다루니, 뮤직데이터의 한 갈래인 가사로 분류해보는 건 어떨까요?
가사를 분석해서 노래 분류를 굳이?
'뜬금없이 왜 가사로 분류하려 하지?' 궁금하실 것 같습니다.
가사가 우리에게 주는 의미에 대해서 생각해봤습니다. 사람들은 때때로 가사를 통해서 위로 받고 싶어하고, 용기를 얻고 싶어하고, 신나는 마음을 더하고 싶어 합니다. 듣는 이의 마음 상태를 공감해주는 것. 그것이 가사의 주요 역할이 아닐까요? 실제로 앨범의 소개글보다는 가사를 읽기가 더 쉽지요. 그래서 장르나 아티스트와 같이 이미 알려져있는 정보보다 가사를 기반으로 곡을 구분하는 것이 청취자로 하여금 더 와닿는 분류가 되지 않을까 생각했습니다.
또 장르보다 좀 더 이해가 쉬운 세부 분류가 가능 할 것 같았습니다. 가령 같은 사랑 노래도 사랑 고백, 사랑 위로, 사랑 설렘 등으로 세분화되서 나뉘어질 수 있겠죠.
여러분도 잘 아시는 넷플릭스도 영상 콘텐츠를 분류할 때 장르 기반이 아닌, ‘강력한 여성 리드가 있는 시리즈’ 와 같이 내용을 기반으로 콘텐츠를 더 세밀하게 나눈다고 합니다. (https://bit.ly/3dWVONp) 적재적소에 사람들이 원하는 콘텐츠를 잘 보여주기 위함이죠. 이를 위해 넷플릭스는 콘텐츠 내용을 바탕으로 태깅을 붙이는 '태거'를 별도로 채용할 정도라고 합니다.
넷플릭스 케이스 처럼 가사가 영화 시나리오처럼 길지는 않지만, 전달하고자 하는 스토리나 분위기가 담겨 있어, 가사 기반 곡 분류가 가능하지 않을까요? 그러나 가사를 일일이 사람 손으로 구분하기란 쉽지 않은 일인 것 같습니다. 그래서 컴퓨터의 힘을 빌려 보았습니다.
가사의 주된 키워드들은 역시 "사랑"
먼저 지난 2020년 1월부터 2021년 1월까지 플로에서 청취된 곡 탑 500위 아티스트들이 보유한 약 4,000개의 곡의 데이터를 가지고 워드 클라우드를 그려서 어떤 키워드가 주로 등장하는지 살펴 보았습니다.
워드클라우드는 문서의(가사) 키워드(명사, 동사, 형용사), 개념 등을 직관적으로 파악할 수 있도록 핵심 단어를 시각적으로 돋보이게 나타내는 방법 중 하나입니다. 워드클라우드 표현시 키워드의 등장수가 높아질수록 워드클라우드에서 해당 키워드의 사이즈가 크게 표현이 됩니다.
아래는 워드클라우드를 시행한 결과 입니다.
아무래도 가사에 사랑이 노래가 많다 보니 사랑과 관련된 단어들이 눈에 띄게 보입니다. 또, 하루, 순간, 시간과 같은 주제도 많이 보입니다. 그러나 해석할 여지가 조금 적어보이지요.
뭉쳐진 단어들을 보니 사랑 이외에 어떤 주제가 가사 속에 숨겨져 있을지 슬슬 궁금합니다.
텍스트 데이터 전처리는 시작의 80%..
데이터 전처리란 음식을 만들기 전에 식재료를 손질하는 자료와 같습니다. 다행히, 가사에는 오탈자가 포함될 확률은 극히 적었는데 의외의 난관이 있었습니다. 인기 아이돌의 노래나 따라 부르기 좋은 댄스곡의 가사가 정말 전처리 하기 힘들었습니다.
- 마법 주문 같은 가사들(짐살라빔, rocka rocka rocka..) : 가장 고민되는 부분이었으나, 결국 한 곡에만 등장하는 주문(?)들은 제외하기로 결정
- 동요, CCM 등 가사의 특징과 목적이 두드러지는 장르는 제외
- 감탄사(yeah, yo..) 제거
- 명사, 형용사, 동사의 키워드만 추출
- 한 음절은 제외 : 본 분석은 가사를 주제의 의미를 파악해보기로 하였으므로 제외하였습니다.
전처리된 가사를 토픽모델링(LDA)으로 분류해보기
다음으로 전처리 된 가사들을 가지고 토픽모델링(LDA)을 활용하여 여러 토픽으로 분류해봤습니다.(LDA에 대해 더 자세히 알고 싶으시다면 ratsgo's blog 글을 추천드립니다) LDA에 노래 가사 키워드와 보고싶은 토픽의 개수를 선정해서 넣어주면, 결과 값으로 해당 개수의 토픽과 각 토픽에 해당되는 단어들을 보여줍니다. 저희는 최대한 상세히 보기 위해 총 50개의 토픽으로 나누었고 다음과 같이 무시무시한 결과 화면을 얻었습니다.
분류 결과의 해석 : 잘된 예
위의 토픽별 단어들을그냥 읽는 것이 상당히 어려운 부분이라 보기 쉽게 워드 클라우드로 다시 만들어보았습니다. 대략 저희가 생각하기에 곡을 잘 분류해서 묶어주었다고 생각하는 주제들은 다음과 같습니다.
사실 모델이 보여준 결과 값은 각 토픽 별 단어들만 보여주기 때문에, 연구자가 각 토픽 별 단어를 보고 토픽 별 이름을(위에 보여지는 <사랑고백>, <이별>,<자유롭게 날아>) 작명해줘야 합니다. 분류는 알고리즘이 해줘도 결과를 보고 해석은 사람이 몫이기에, 음악에 대한 이해도가 깊은 분이 토픽명을 잘 지으실 수 있을 것 같습니다.
그럼 이번에는 토픽 별 어떤 곡들이 있는지 한 번 살펴볼까요?
<사랑 고백>과 <자유롭게 날아> 토픽에 해당하는 곡 리스트를 몇 가지만 뽑아 봤습니다.
토픽 별 주제와 해당 주제의 곡 리스트들이 썩 잘 어울리는 것 같습니다. <사랑 고백>의 경우 댄스 음악, 힙합, 팝,어쿠스틱, 발라드 장르의 달달한 사랑 고백 곡이 확인할 수 있고, <자유롭게 날아>는 자유롭기를 갈망하는 주제의 힙합, 발라드, 인디, 락 장르의 곡을 확인할 수 있었습니다.
위 토픽을 보시고 '기계가 좀 하네?' 라고 생각하시는 분들도 있으실지 모르겠습니다만, 기계도 잘 분류하지 못한 주제들도 있습니다.
분류 결과의 해석 : 아리송한 예
토픽 그룹에 대해 작명을 하다가 포기한 케이스들입니다.
위 분류결과를 보고 든 생각은, "이걸 어쩌지.." 였습니다.
어떤 분들은 위 주제 중 몇 개 보시고 '이건 00 같은데?' 라고 한 주제를 떠오르실 수 있겠지만, 저희 팀과 모델의 한계를 명확히 느꼈습니다.
잘 분류된 주제 속에서도 갈 길을 잃은 곡들이 하나씩 보입니다. 위 케이스 외에도 토픽별로 "니가 왜 거기서 나와?" 같은 곡들이 여럿 존재합니다. 기계가 사람의 손이 타는 일을 덜 수는 있다고 생각하면서도, 어느정도 사람의 도움을 필요로 한다는 것을 다시 한 번 생각해 보는 시간이었습니다. 아마도, 가사 외의 다른 텍스트 데이터(앨범 소개글 등), 곡에 대해 정의된 풍부한 장르, 사용자 반응 데이터(댓글 등)와 결합을 하면서 다시 분류하는 방법이 필요하지 싶습니다.
첫번째 가사 분석을 마무리하며
아직 이 단계에서는 토픽이나 토픽별 곡들이 완벽히 분류가 되지 않지만, 부분적으로 잘 분류된 토픽과 곡들을 활용한다면 주제에 맞는 플레이리스트 선정이 가능할 것 같습니다. 또, 앞서 토픽별 곡 리스트업에서 보신 것처럼 다양한 장르를 하나의 주제로 묶어 추천하는 일도 가능해 보이기도 합니다. 가령, 슬픈 사랑 노래 중에서도 "이별을 예감한다"라는 상세 주제로 댄스, 일레트로닉, 트로트 등 다양한 장르의 곡을 리스트업 해 볼 수 있죠.
토픽모델링 결과가 완벽하지 않아도 위 과정 속에서 가사로 노래 분류의 기준이 될 수 있는 것이 흥미로웠습니다. 또, 기존 분류방식 보다 가사로 곡을 분류하게 되면 어떤 점이 좋을지 생각해 보게된 의미있는 시간이었습니다. 무엇보다, 뮤직데이터 영역에는 분석해봄직한 다양한 텍스트 데이터들이 많이 있고, 도전할 과제가 많다는 이야기를 전달드리고 싶었습니다. 자, 오늘은 여기까지! 끝까지 읽어주심에 감사드리며, 위 글 내용이 좋으셨다면, 혹은 여기까지는 분석해보았으면 좋겠다는 생각이 떠올리신다면 댓글을 꼭 부탁드립니다! ✧ ☆ ٩(`・ω・´)و
작업 후기 및 다음편 예고
댓글 2개
의견을 남겨주세요
이지수
막연하게 생각했던 것들을 데이터를 통해서 이렇게 나름의 분석을 행하니 고개가 절로 끄덕여지는 것들도 있네요~ 전처리 작업하시느라 정말 힘드셨겠어요ㅠㅠ 덕분에 흥미로운 데이터 결과값을 보기도하고, 글 재밌게 잘 읽었습니다!
팀 뮤직데이터 (544)
저도 처음에 막연하게 생각했는데, 결과적으로 흥미로운 작업이 되었던 것 같아요~ 재밌게 읽어주셔서 감사합니다! : )
의견을 남겨주세요