본문 바로가기

코딩과 교육/파이썬

파이썬으로 만들어본 대선 주자들 연설문 Word Cloud

word cloud 를 만들어 보기위해 하루 공부했다. 다행히 R 이나 파이썬이 어려운 언어가 아니고, 기존에 어느정도 알고 있는 것들이라 쉽게 적용할 수 있었다.


아직 모양은 조금 더 다듬어졌으면 하지만 이정도만 해도 우선은 합격이다. 더 필요한 것은 나중에 Big Data 를 다루면서 한번 더 해보기로 한다.


설치와 기타 모든 과정은 생략한다. 다음번에 기회가 되면 파이썬과 R 을 이용한 워드클라우드 만들기를 강의로 올리도록 하겠다.


파이썬으로 만든 Word Cloud 의 데이터는 5인의 대선후보 수락 연설문이다. 가져온 데이터의 위치는  http://raythep.mk.co.kr/newsView.php?cc=270001&no=13153 이고, 여기서 PDF 내부의 raw 데이터를 추출해 내어서 별도의 위치에 저장해 두었다.


https://github.com/eventia/CandSpeech


위 링크를 따라가면 5 명의 후보 수락 연설문의 raw 데이터와 함께 본 작업을 수행한 파이썬의 코드가 있다. 파이썬 버젼은 3.4 였으며, 조금만 변형하면 2.7 로도 가능하다. 원 소스는 [ http://konlpy.org/ko/v0.4.3/examples/wordcloud/ ] 에 있으며, 파이썬 2.7 버젼에서 KoNLPy 를 사용한다.


한글로 word cloud 를 만들기 위해 폰트를 추가로 넣어주는 과정이 있었으나, 그 과정을 포함하여 세부적인 기술사항은 이 글에서는 생략한다. 




1번 문재인 후보의 연설문으로 word cloud 를 작성한 것이다. 글씨 크기는 본문안에 그 단어가 몇번 나왔는지의 비중에 따라 달라진다. 가장 많이 사용한 단어는 국민이고, 다른 후보들과는 조금 특이한 점이 "저"라는 겸양대명사의 사용이 두드러진다. "대통령" 이라는 말보다 "저"의 빈도가 높다. 또 다른 후보들과 달리 자신의 이름 "문재인"을 호명하는 횟수가 적다. 총 2번이다. 실제로 "국민"이라는 말은 다른 단어에 포함된 것을 합하면 총 33번 등장한다. 어쨌거나 있는 그대로를 가지고 word cloud 를 만들어야 한다는 생각으로 별도로 자료에 대한 수정을 가하지는 않았다.



2번 홍준표 후보의 경우 "대통령"이라는 말이 연설문 안에서 큰 비중을 차지한다. 의도적으로 그 단어를 자주 드러냄으로서 원하는 것을 제대로 강조하고 있다. 그 외에 대한민국, 계파, 우리, 당, 좌파 등의 단어가 자주 언급된다. 자신의 이름도 자주 언급한다. 내용은 차치하고 단어 선택에 있어서 산만하지 않고 제대로 한길을 파고 있다는 것이 보인다.




3번 안철수 후보의 연설문에는 두드러지게 "국민"이라는 말이 등장한다. 문재인의 연설문에도 "국민"이 큰 빈도를 가지지만 안철수의 연설문에서 "국민"의 언급횟수는 문재인의 언급횟수를 뛰어 넘는다. 나, 여러분, 미래, 대통령, 승리, 안철수 등이 자주 등장한다. 한글 자연어 처리 방법에서 , 를 제대로 처리하지 못하는 것 때문에 "안철수,"와 "안철수"가 별도의 단어처럼 되어 2번 등장한다. 이것을 합치면 안철수 후보의 연설문속에 자신의 이름을 반복해서 언급하는 비중은 다섯 후보중 가장 많다. 문재인이 "저"라는 겸양대명사를 썼다면 안철수는 자신의 이름 "안철수"를 대중들에게 각인시키는 연설을 했다. 연설문을 통해 후보들이 보이는 다른 전략이 보인다.




4번 유승민 후보의 연설문에서 대통령이라는 단어의 비중은 확실히 크다. 보수, 여러분, 저, 대한민국, 유승민, 문재인등이 그 다음으로 큰 비중을 가진다. 다른 후보들과 달리 유승민 후보는 연설문에서 "문재인"을 5번 언급한다. 유승민의 선거전력이 보이는 부분이다. 유력 후보인 문재인에 대한 비판을 최대의 앞당겨서 연설문부터 시작하겠다는 의지의 표명으로 보인다. 나름 굵직한 단어들이 많이 포진되어 있는 것으로 보아 중요하다고 생각되는 단어들을 자주 반복해서 언급함으로 그 중요성을 부각시키려는 전략은 모든 후보들 중 가장 나아보인다.


5번 심상정 후보의 연설문은 가장 많이 나온 단어인 "정의당" 이 총 13번 등장한다. 이는 유승민 후보의 27번 언급된 "대통령"이나 안철수 후보가 41번 언급한 "국민", 28번 언급된 홍준표의 "대통령", 33번 언급된 문재인의 "국민"과 비교하면 너무 횟수가 적다. 동어반복을 피하고자 하는 의도가 있었던 것이 아닐까하는 생각을 해보지만 결국 일반 대중을 상대로 하는 연설문을 고급진 문장으로 구사하면 일반인들의 이해는 떨어질 수 밖에 없다. 심상정 후보의 연설문은 강조되는 단어가 없다. 즉각적으로 와 닿는 단어들을 만들어내지 못했다. 멀찍이 떨어져있는 단어들은 국민들에게 이해의 정도를 떨어뜨릴 수 밖에 없다. 아쉬운 부분이다.