본문 바로가기

R Programming/Projects

팝 명곡 가사 텍스트 분석(2) - Ngram + 연어분석

지난 번 빈도분석에 이어 이번 포스팅에서는 Ngram 분석과 연어분석에 대한 소개를 할 것이다.

B. N-gram 분석

1. 입력 코드

N-gram 분석에서는 Bruno Mars의 텍스트파일을 대표로 분석해 보고자 하였다. BRUNO_NGRAM이라는 변수에 해당 파일을 저장하여 bi-gram으로 변환한 후 빈도 수와 함께 bi.Freq이라는 table에 출력되게 하였다. 해당 빈도 수를 wordcloud 상에서도 확인해 보았다. 또한, write.table 를 이용하여 bi.gram으로 메모장에 나타냈다. 해당 과정은 위의 입력 코드와 같이 입력하였다.

 

 

위 그림은 같은 파일에 대해 tri-gram으로 나타내기 위해 작성한 코드이다. Bi-gram과 같은 방식으로 wordcloud을 생성하였으며 메모장에 표를 출력하였다.

 

2. 출력 결과

         

 

위의 그림은 Bi-gram과 tri-gram을 통해 Bruno Mars의 가사에 등장하는 어휘 빈도를 산출해 본 결과이다. 우선 Bi-gram을 살펴보면, “yeah yeah”, “oh oh”와 같은 추임새를 반복하는 가사들이 1, 2위에 자리했으며, “I know”, “you know”와 같이 1인칭, 2인칭 대명사에 “know”라는 동사가 따르는 어절들이 그 뒤를 이었다. 그 외에도, 전치사에 대명사가 붙어 있는 어절들이 빈도 있게 활용되었음을 알 수 있다. Tri-gram에서는 bi-gram에서와 유사하게 “yeah yeah yeah”, “oh oh oh”, 와 같은 추임새 반복이 상위 빈도에서 확인되었다. 또한, “for too long”, “funk you up”, “you better run”, “one shot for”, “for my pain”와 같이 의미가 명확한 동사, 명사가 포함되는 어절들을 확인할 수 있었다.

 

3. 분석 결과 해석

가사는 노래의 한 요소라는 특성 상 추임새가 많이 사용된다는 것을 알 수 있었다. 박자 안에 음절을 맞추어 넣어야 하기 때문에 빈 공간을 추임새로 채워 넣거나, 관객의 호응을 유도하고 대중성을 가미하기 위한 방식으로 추임새가 많이 등장한다고 해석해 볼 수 있을 것 같다.

앞선 빈도분석에서 1인칭, 2인칭 대명사가 많이 발견된다는 것을 확인하였는데, bi-gram 분석을 통해 해당 대명사들에 “know”와 같은 동사가 함께 자주 쓰인다는 것을 알 수 있었다. 화자와 상대방에 대한 이야기를 담은 노래들이 많기 때문에 각자의 생각을 표현할 수 있는 동사인 “know”, “tell, “be”와 같은 단어들이 함께 쓰였다고 볼 수 있다.

Tri-gram은 세 어절을 분석해 본 빈도표인 만큼 Bruno Mars의 가사에서 나타나는 개인적인 특징들도 엿볼 수 있었다. “funk you up”, “the way you”, “you make me”와 같이 가사에서 지칭하는 상대방과의 상호 작용을 나타내는 가사들이 많이 있었으며, “be okay tomorrow”, “you better run”, “one shot for”과 같은 구절들이 많이 등장하는 것으로 보아 상대방에게 희망을 심어주는 내용의 가사들이 많이 포함되어 있다는 것을 알 수 있다. 또한, “get messed up”, “for my pain”과 같은 구절들은 자신의 아픔을 슬퍼하는 내용의 가사들이 주를 이루었음을 시사한다.

 

 

 

C. 연어 분석

1. 입력 코드

연어 분석 1단계 : 공기어 추출

공기어를 추출하기 위해 작성한 코드이다. “you”라는 단어를 node로 설정하였으며, Rihanna의 가사 파일을 불러온 RIHANNA라는 변수로부터 node를 추출하기 위해 grep 함수를 사용하였다. 그리고, 주변 4개 어휘까지 추출하기 위한 span을 설정하였다. 최종적으로 RIHANNA_crc라는 변수에 span 내부에 있는 어휘들을 저장하였다.

 

 

연어 분석 2단계 : 공기빈도 데이터프레임 생성

공기빈도 데이터프레임을 생성하기 위해 우선 Freq.rihanna라는 테이블을 만들고, for 문을 활용하여 Freq.c에 수업 시간에 활용한 W1, W2, W1W2 값을 각각 저장하였다.

 

 

연어 분석 3단계 : 연어 계산

마지막으로 t.score과 MI 계산 공식을 참고하여 연어를 계산하였다. 해당 수치들은 RIHANNA_COLL이라는 데이터프레임으로 저장하였다.

 

 

2. 출력 결과

 

3. 분석 결과 해석

연어 분석에는 주로 문장의 호흡이 긴 Rihanna의 가사 텍스트를 활용하였다. 이전 분석에서 Rihanna를 포함한 많은 가수들의 가사 텍스트 빈도 표를 통해 “you”라는 단어가 눈에 띄게 많이 등장한다는 것을 확인했었다. 주로 “you”라는 표현이 어떤 상대를 지칭하는 것인 지, 어떤 맥락 안에서 많이 사용되는 지 알아보기 위해 중심어를 you로 설정하였다.

위와 같은 코드를 통해 you를 중심으로 일정 구간 내에 함께 분포하는 단어들을 각각 t-score와 MI 를 기준으로 sorting하였다. T-score을 기준으로 정렬한 표를 살펴보면, 상위에 위치한 “love”를 제외하고는 내용어들이 많지 않다는 것을 알 수 있다. 주로 대명사, 조사와 같이 you가 아닌 다른 단어들과도 함께 배치될 확률이 많은 단어들이다. 다만, “사랑”과 관련된 가사가 많이 쓰였음을 다시 한번 확인할 수 있었다.

반면, MI 를 기준으로 정렬한 표에서는 t-score에 비해 비교적 공기빈도가 낮지만, 동사, 명사 위주로 출력되어 유의미한 결과를 도출할 수 있었다. Beast, imagine, swallow와 같이 의미가 명확한 단어들이 상위에 출력되었다. Rihanna의 가사에서는 “you”를 지칭하며 beast라고 표현하기도 하며, 지칭 대상이 상상(imagine)하고 삼키는(swallow) 행동을 묘사하는 경향이 나타났다고 해석할 수 있다. 공기빈도 또한 유의미하게 높은 편으로 확인되었다.