Data-writing

대본으로 놀아보기 #3 대본 감성분석, 연관분석, 토픽추출

JAY-GO 2020. 1. 11. 12:48
반응형
드라마 W 대본을 활용한 데이터 분석 및 활용

※ 실제 구현 코드는 github상의 jupyter notebook을 참고하시기 바랍니다.

 


이전까지(포스팅#1, 포스팅#2) 대본 분석을 위한 대본 정제, 자연어 태깅 등을 수행 하였습니다.

 

이번 포스팅에서는 앞에서 해본 기법들 위에 감성분석, 연관분석, 토픽추출을 해보고자 합니다.


1. 감성분석

 감성 분석을 위해선 어떤 문장이 어떤 감성을 가지고 있는지를 판단하기 위한 자료를 확보하고, 이를 모델에 학습해서 우리가 원하는 문장에 예측시켜야 합니다.

 

 이를 위해 우리는 네이버 영화리뷰로 만든 감성분석 데이터셋을 활용 합니다.(링크)

20,000개의 영화 리뷰에 대하여 별점을 기준으로 긍정(1), 부정(0)으로 구분해 놓은 자료 입니다.

 이 리뷰를 형태소 별로 분해하여 더 세밀하게 분석 가능하도록 합니다.

 확보한 문장별 형태소로 나눈 'pos' 부분을 긍정 부정 으로 구분한 'label'과 매칭시켜 딥러닝 학습을 수행 합니다.

 20,000개중 15,000개로 학습하고 5,000개로 검증 하였습니다.

Train on 150000 samples
Epoch 1/10
150000/150000 [==============================] - 4s 27us/sample - loss: 0.4175 - binary_accuracy: 0.8165
Epoch 2/10
150000/150000 [==============================] - 4s 25us/sample - loss: 0.3619 - binary_accuracy: 0.8385
Epoch 3/10
150000/150000 [==============================] - 4s 25us/sample - loss: 0.3521 - binary_accuracy: 0.8434
Epoch 4/10
150000/150000 [==============================] - 4s 25us/sample - loss: 0.3424 - binary_accuracy: 0.8471
Epoch 5/10
150000/150000 [==============================] - 4s 25us/sample - loss: 0.3351 - binary_accuracy: 0.8516
Epoch 6/10
150000/150000 [==============================] - 4s 25us/sample - loss: 0.3290 - binary_accuracy: 0.8558
Epoch 7/10
150000/150000 [==============================] - 4s 25us/sample - loss: 0.3234 - binary_accuracy: 0.8596
Epoch 8/10
150000/150000 [==============================] - 4s 25us/sample - loss: 0.3176 - binary_accuracy: 0.8632
Epoch 9/10
150000/150000 [==============================] - 4s 24us/sample - loss: 0.3107 - binary_accuracy: 0.8679
Epoch 10/10
150000/150000 [==============================] - 4s 25us/sample - loss: 0.3025 - binary_accuracy: 0.8735

 15,000개에 대하여 학습 정확도 87%로 완료 되었습니다.

 이를 나머지 5,000개로 검증 해보면 83%의 정확도가 나옵니다. 

50000/50000 [==============================] - 3s 64us/sample - loss: 0.3749 - binary_accuracy: 0.8371

 이를 'W' 대본에 적용 해보도록 하겠습니다.

 학습 모델을 만드는 것과 마찬가지로 형태소 대사를 형태소 별로 분해 하고 이를 모델에 넣어 감성을 예측 해봅니다.

 대사별 감성분석 결과 순으로 나열 해 보았습니다. 직접 눈으로 보고 느낀것과 결과가 비슷 한가요?

저는 잘 모르겠습니다... 이는 대본에서 쓰이는 문장과 네이버 리뷰에 작성하는 문장들의 차이가 크기 때문으로 판단됩니다.

 

 유사한 문장에서 학습한다면 더 좋은 결과를 낼 수 있겠죠?

 

2. 연관분석

 대사들의 연관성을 분석하여 인물들간의 연관성이 있는지를 살펴 보고자 합니다.

 

 이전 포스팅에서 추출한 주요 인물들 ['연주','수봉','박교수','강철','소희','석범']에 대하여 대사의 유사도를 파악해 보았습니다. 각 인물별로 대사를 모아 형태소 분석을 통해 분해 하였고, 이를 벡터화 하여 서로간의 거리를 상관행렬로 나타내었습니다.

인물별 대사 태깅
상관행렬, 낮을수록 관련이 크다

 상관행렬의 수치가 낮을수록 관계가 유사한 대사를 하는것으로 볼 수 있으며, 연산을 토대로 보면 '연주'와 '수봉'이 가장 유사한 말을 쓰고 있고,'소희'와 '석범'이 가장 다른 말을 쓰고 있다고 볼 수 있습니다.

 둘의 대화 일부를 보면... 사실 유사한지 잘 모르겠습니다.

 

3. 토픽추출

 각 인물의 대사를 토대로 주요한 문장을 추출해 보고자 합니다. 일종의 요약이 될 수 있겠죠? 이와 관련한 이론은 구글 검색에 사용되는 pagerank를 바탕으로 하는 textrank 알고리즘 입니다.(링크)

 

 우선 전체 대사에 대하여 주요 문장을 30자 제한으로 추출 해보면 아래와 같습니다.

2위 선수, 마음대로 안 되자 작게 한 숨 쉬며 고개를 젓는데 강철의 얼굴에는 그제야 비로소 소년다운 미소가 싱긋 돈다.
쓰러진 강철의 장면에 붉은 피를 채워 넣으며 미소 짓고 있는 성무의 모습이 보이고..

 대본이 입력되어 대본의 형식으로 추출 됨을 볼 수 있습니다. 대사 같지가 않죠? 드라마 대본의 특성상 1화의 경우 배경 설명이 많아 해당 내용이 추출된거 같습니다. 이것만 보면 범죄수사 드라마네요...

 

 이번에는 주요 인물의 대사에서 토픽을 추출 해보겠습니다.

------------------
연주의 대사 요약

(중얼) 웬일이야~ 미친개가 만화 좋아하는 줄 진즉 알았으면 인생이 편했을텐데~ 그래도 이제라도 안 게 어디야?
(반갑게) 수봉아~ 오랜만이다~
(황당한) 여기가 어디야..?
(버럭) 이봐요!!
강철이 누군데..?
너는 경찰에 신고한다고 나가고
강철이 살아있다고!!
------------------
수봉의 대사 요약

근데 누나 되게 이상한 게 뭐냐면요, 우리가 어제 밖에서 밤샘 작업을 했는데 한 번도 이 방에서 나오시질 않았거든요?
우리가 얼마나 반대했다구요.
선생님 속을 내가 어떻게 알아요?
어디서 보내신 건진 모르겠지만 하여튼 지금 막 보내셨어요!
------------------
박교수의 대사 요약

아버지는 무려 오성무 작가님이신데 딸은 왜 고작 오연주야??
(짜증나, 보던 핸드폰을 흔들며) 임마, 아버지가 딸 사랑하는 마음은 십분 이해하지만 말야, 만화 캐릭터를 이렇게 오연주라고 대놓고 해버리시면 나 같은 독자는 어떻게 보냐?
------------------
강철의 대사 요약

(구겨진 명함을 받아들고 읽는) 흉부외과 레지던트 오연주..?
아무래도 이 여자가 내 인생의 키를 쥔 거 같으니까.
내 존재의 이유.
내 존재의 이유를 밝혀줄 키가 그 여자 같아.
(진지하게) 오연주..
------------------
소희의 대사 요약

(그 말에 순간 기분 상하는) 대표님 인생의 키요..?
(눈 가늘게 뜨며) 근데 인생의 키라고요?
그게 아님 어떻게 처음 본 여자가 인생의 키가 되나요?
대표님 인생의 키가 될 여자는 결코 미인이 아니라고.
------------------
석범의 대사 요약

그 소리에 자동으로 벌떡 일어나는)
(혼비백산 전화 받는) 네 교수님!
석범입니다!
오연주요?
교수님 저도 좀 아는데요, 얘네 아버지가 얄짤 없으시더라구요.
(억울한) 교수님 이건 공정한 처사가 아니신 거 같은데요.
교수님?
교수님?

 인물별로 보면 대사의 조합이 나쁘지 않습니다. 하나의 인물은 아무래도 인관된 스토리 라인상에 존재하니 상호 연관성이 있기 때문으로 보입니다. 강철의 주요 대사가 인상적이네요 '연주에 대한 집착'이 보입니다.

 

마치며

 이번 포스팅에서는 대사들의 감성분석, 연관분석, 주요내용 추출을 해 보았습니다. 대본을 위한 데이터가 아닌 웹상에서 구하기 쉬운 데이터로 감성분석을 하여 결과가 좋지 않았고, 많지않은 대사로 연관 분석으 수행하니 연관성에 신뢰가 가지 않는 등 아쉬운 점이 많았지만, 자연어 분석에서 위와 같은 기법들이 적용 가능하단 것을 아는 정도로 읽어보시면 도움이 되셨으리라 생각 합니다.

 

반응형