하이킥 대본 후다닥 분석

2019. 10. 4. 22:01nlp

반응형

맨스플레인(mansplain)은 남자(man)와 설명하다(explain)를 결합한 단어로, 대체로 남자가 여자에게 의기양양하게 설명하는 것을 말한다 (from Wiki ^^)

 

내가 지금까지 겪어본 맨스플레인들은

1) 뭐냐면 

2) - 거든

을 엄청나게! 많이 사용했다. 

 

'뭐냐면~' 하면서 자신이 아는 걸 설명하고, '-거든'이라는 어미로 그 내용을 자신만 알고 있음을 전제한다. 

 

사전을 찾아보면 -'거든'은 연결어미 또는 종결어미로 쓰인다. 종결어미로 쓰일 때 2가지 의미가 있다.

 

1) 해할 자리에 쓰여청자가 모르고 있을 내용을 가르쳐 을 나타내는 종결 어미자랑이나 감탄의 느낌을  가 있다.

2) 해할 자리에 쓰여으로  어떤 이야기의 전제로 베풀어 놓음을 나타내는 종결 어미.

(출처: https://ko.dict.naver.com/seo.nhn?id=1406500)

 

맨스플레인과 관련된 '-거든'은 1)번 의미로 쓰였을 것이다. 하지만 2)번 의미도 청자가 화자가 말하는 내용을 모르고 있다고 전제할 때 사용한다.

 

이런 '-거든'과 비교되는 '-잖아'. 이 어미는 상대방이 내가 하는 말을 이미 알고 있다고 전제한다.

 

그래서 권위적이고 남을 가르치려드는 남성일수록 '-거든', '뭐냐면'을 많이 쓰고, 그렇지 않은 사람들은 '-잖아'를 많이 쓸 것이라는 가설을 세웠다.

 


이 가설을 확인해볼 데이터로 <지붕뚫고 하이킥>의 대본을 골랐다. 하이킥 전체 대본은 없고 78개가 있다. 기말고사 때문에 받은 대본 파일..ㅎ

 

하이킥 대본의 좋은 점 

1) 누가 말했는지 확실하다.

2) 시트콤이라서 일상적인 구어체다.

 

우선 리눅스로 여러 텍스트 파일을 하나로 합친다.

 

 

합치고 싶은 텍스트 파일을 한 폴더 안에 넣고

 

 

cat 명령어로 합쳐준다.

 

근데 이렇게만 하면 지긋지긋한 유니코드 에러를 만나게 된다.

 

 

인코딩이 cp949로 되어 있어서 그렇다. 이걸 utf-8로 바꿔줘야 한다.

 

 

이제 주피터 노트북에서 읽어서 예쁜 pandas DataFrame으로 만들어 보자~! 

 

# 텍스트 파일 읽어오기 
with open('all_u8.txt', 'r', encoding='UTF8') as f:
    lines = f.read().splitlines()
    
# 빈줄 제거 
sentences = [line for line in lines if line != '']

# [인물] : [대사] 형식으로 되어 있음 
# : 이 포함되어 있는 대사만 따로 모으기
lines=[]
for sent in sentences:
    if ':' in sent:
        lines.append(sent)

 

여기까지 하면 lines는 다음과 같은 리스트로 저장된다

 

['민호Na:서울은 가득하다. 사람들로 가득하고, 자동차로, 빌딩으로, 아파트와 가게와 백화점, 또 그 속을 꽉 채운 물건들로, 불빛과 소음으로, 가득하다. 그렇게 가득한 서울을 훌훌 털고 어느 날 빈곳을 찾아 떠났다..', '민호Na:도시를 채우는 것들의 흔적없는 빈곳. 태백산맥 깊은 산중. 사람, 차, 빌딩 대신 숲과 나무, 하늘만 있는 그 빈 곳에서 나는 무한한 자유를 느끼..ㄴ거 까진 좋았는데..(촐싹톤으로 바뀌며)길을 잃었네? 이런 옘병..아씨..', '민호:야 일어나~(화들짝 몸을 일으킨다)', '재용:(부스스 눈을 뜬다)으..추워..여기가 어디야?', '민호:빨리 일어나. 오늘까지 길 못 찾으면 우리 끝장이야 진짜. 아!(다리가 아픈듯 힘들게 절며 일어나 핸드폰을 꺼내 눌러본다)', '재용:핸드폰 아직도 안 터져?', '민호:(통화권 이탈로 뜨는 핸드폰)하..그냥 무조건 내려가는 수밖에 없어.(절며 걷는)', '재용:(일어나 걸으며)다린 어때? 좀 나아졌어?', '민호:(절며)이게 나아진 걸로 보이냐? 빨리 내려가는 길이나 찾아.', '재용:(민호 앞지르며)길이 없잖아. 어디가 길이야 도대체?', '민호:(난감)저쪽인가..?', '재용:그러게 왜 이런 첩첩산중으로 와 갖구..다 너 때문이야!', ... 

 

# DataFrame 만들기
import pandas as pd
df = pd.DataFrame(lines)

# 대사를 한 인물만 들어있는 칼럼 만들기
df['character'] = df.loc[:,0].apply(lambda x : str(x).split(':')[0])

# 대사만 들어있는 칼럼 만들기 
df['lines'] = df.loc[:,0].apply(lambda x : str(x).split(':')[1])

# 새로 만든 character, lines 칼럼만 살리기
df = df[['character', 'lines']]

 

여기까지 실행하면 df는 다음과 같은 DataFrame이 된다. 개선의 여지는 있지만 '후다닥 분석'이니까 그냥 모르는 척하기로 한다.

 

 

이제 '-거든'이라는 대사가 들어간 부분만 포함된 새로운 DataFrame을 만들 것이다. 얘 이름은 mp

 

mp = pd.DataFrame(columns=["character", "lines"])
count=0
for i in range(len(df)):
    if '거든' in df.iloc[i,1]:
            character = df.iloc[i,0]
            lines = df.iloc[i,1]
            mp.loc[count] = [character, lines]
            count+=1

 

지금 mp는 이런 상태다

 

 

이제 인물의 성별을 나타내는 칼럼을 만든다.

 

# 일단 모두 여자로 설정해놓기 
mp['sex'] = 'f'

# 남자 인물 리스트에 들어있으면 남자로 바꾸기 
for i in range(len(mp)):
    if mp.iloc[i,0] in ['광수', '배달부', '보석', '봉실장', '세호', '소개팅남', '순재', '영어선생', '일우', '조교', '준혁', '지훈', '친구1']:
        mp.iloc[i,2] = 'm'

 


이제 분석할 일만 남았다~!

 

우선 '-거든'을 말한 여성과 남성의 비율을 살펴봤는데

 

mp.groupby('sex').count()

 

여자가 더 많았다..ㅎ..

'-거든'으로 맨스플레인을 잡아낼 수 없는 걸까? 

 

캐릭터별로 '-거든'을 말한 빈도를 살펴봤다.

 

pd.DataFrame(mp.groupby('character')['lines'].count().sort_values(ascending=False))

 

황정음의 엄청난 비율..!

'-거든'이 포함된 황정음의 대사를 살펴보면 대부분 과외학생인 준혁이나 지훈한테 시비걸때가 많았다.

 

mp.query('character=="정음"')

 

"이런 문장은 단어가 좀 어렵지? 이럴 땐 단락별로 끊어서 보면 쉽거든. 자, 해봐."

"내가 과장님한테 직접 물어봤거든요. 뿡이든 뽕이든 상관없다 그려셨구요"

 

흑흑흑 어쨌든 내 가설이 무너졌다 흑흑흑

 

'뭐냐면'과 '-잖아'도 분석해봤는데

'뭐냐면'은 내가 가진 하이킥 대본 통틀어 2번밖에 안 나왔다. 한 번은 순재, 한 번은 인나.

 

'-잖아'는 귀찮아서 성별 분류는 안 하고 인물별 분류만 했는데 이번에도 황정음이 제일 많았다 

 

 


 

맨스플레인을 분석했다기보다 그냥 하이킥 속 황정음의 말투를 분석하게 되었다..

 

※ 개선의 여지

1) 단순 빈도수가 아니라, 각 인물의 총 대사 수에 비해 '-거든'/'-잖아'를 얼마나 자주 언급했는지, 비율로 나타내기 

2) 더 큰 데이터로 분석하기 

3) '-거든', '-잖아' 말고 맨스플레인을 나타낼 수 있는 더 다양한 지표 생각해보기 

반응형