jwmsg

Twitter 데이터를 활용한 차기 대권주자 긍부정 통계 연구

오랜만에 의미 있는 연구를 하게 되어 기쁩니다.

본 프로젝트는 광운대학교 정보융합학부 “데이터시각화” 과목의 수업 일환으로 기말 프로젝트로 진행되었습니다. 본 프로젝트는 광운대학교 정보융합학부 정재완, 윤영훈 이 함께 진행한 프로젝트로, 저작권은 본 프로젝트를 수행한 두 사람에게 있음을 알립니다.

참고로 본 연구 프로젝트는 특정 정당 혹은 후보, 대권주자를 지지하지 않습니다. 사실 및 과학에 근거한 정보만 다룹니다.

주제선정

사실 주제선정이 가장 어려웠습니다. 일단 전제 조건이 “파이썬을 이용해야 한다”, 시각화는 “Tableau를 이용해야한다” 가 조건이었기에 상당히 제한적이었습니다. 데이터 셋도 국가 데이터를 이용하자니 데이터 셋이 많아 보이지 않았고, 그렇다고 거대한 데이터를 불러오는것도 2주만에 개발해야하는 입장에서는 무리수였습니다.

그래서 고심끝에 결정한게, Twitter API 를 갖고 있으니까, 이를 이용해서 뭔갈 해보자! 였습니다. 가장 사람들이 관심을 많이 갖고 있고, 한눈에 지표로 봤을때 도움이 되는게 무엇일지 생각끝에, “역시 정치와 관련된 게시물은 분석하기가 쉽다” 라는점을 이용하여 “트위터 데이터를 이용하여 2022 대권 주자를 언급하는 게시글의 긍부정을 통계로 나타내는 프로젝트” 를 진행하게 되었습니다.

진행과정

데이터의 수집

일단, 데이터를 수집하기 위해 서버를 만들었습니다.

피같은 정재완의 한달치 월급을 탈탈 털어서 산 서버 (램 192기가 CPU 2개짜리)

트위터 API 를 이용해서 수집을 해야하는데, 직접 REST 로 구현해서 데이터 불러오기엔 개발 시간이 턱없이 부족했습니다.. 그래서 뭔가 트위터 관련 라이브러리가 있지 않을까 싶어서 이것 저것 뒤져본 결과 tweepy 라는 python 모듈을 발견하였습니다.

일단 모듈을 쓰던 안쓰던 15분동안 최대 request 는 180회 할 수 있습니다. 그럼 1회당 100개씩 불러온다고 가정을 하면 18,000개의 트윗을 15분간 가져올 수 있다는 얘기인데, 한시간에 60분이니까, 한시간에 7만 2천개 쯤 가져올 수 있네요.

그래서 일일이 키워드별로 1주치 데이터 ( 11/30 00:00:00 ~ 12/07 12:00:00 ) 를 수집한 결과….

44만건 정도 될줄은 저도 몰랐습니다. (한 열 몇시간 걸린것 같아요.)

뽑아놓고 통계를 내보니, 각 대권 주자별로 업로드된 게시글 수가 다릅니다. (확실히 유명도 혹은 가장 구설수에 많이 오를 수록 게시글 빈도가 높게 나타났습니다.)

가나다 순입니다.

그리고 비 정상적으로, 특정 대권주자 한명의 글이 높은 빈도를 갖는 현상을 발견하였습니다. (이 당시 뉴스를 보시면 왜 이런 결과가 나왔는지 이해가 되실겁니다.)

데이터 전처리

긍정적인 글인지, 부정적인 글인지를 각각 처리해야 할 필요성이 생겼습니다. 해당 글의 긍부정과 그 비율 긍부정한 글을 작성하는 작성자의 유형에 따라 통계를 내기 위해 글 자체의 긍부정 판단을 어떻게 할지 고민을 하던 와중

Python의 Keras 를 활용하여 네이버 영화 후기 20만개를 학습시킨뒤, 글들의 긍부정 판단을 시도해 보았습니다.

긍부정 판단을 하기전 Konlpy 를 이용해서 한글 문장을 형태소 별로 분해하고, 빈도수 낮은 형태소를 제거하고 나머지를 토큰화 한뒤 사전에 러닝한 모델을 이용해 긍부정 판단을 시도하였으며, 그 결과 85% 의 신뢰 정확도를 보였습니다.

이를 DB에 저장하였고 부가적인 부분을 데이터 해석에 이용하였습니다.

데이터 해석

아무리 특정 주자가 해당 시점에 구설수에 많이 오른다고 해도, 누군가가 도배하지 않는한 이상하다고 판단이 들었습니다. 이에 “게시자 별로 대권주자에게 쓴 글 빈도수” 를 나타내 보았습니다.

위 그래프에서 볼 수 있듯, 특정 대권주자에게 부정적 글을 대량 작성한 게시자의 존재를 확인해 볼 수 있었습니다. 반대로 긍정적인 글을 작성하는 경우도 존재 했구요. 그렇기에 오로지 게시글로만 대권주자의 긍부정을 판단하는데에는 문제가 있어 보였습니다.

그리고 더더욱 문제인것은, “트위터와 같은 SNS 는 부정적인 글이 많은 공간” 이라는 특이성이 존재하다보니, 대부분의 글들이 부정적으로 편향되어 있음을 파악했습니다.

주황색이 부정, 파랑색이 긍정

그래서 게시자들 별로 대권 주자에 대한 긍정과 부정 평균 비율을 스팩트럼으로 나타낸 뒤, 50% 를 기점으로 긍정적 게시자와 부정적 게시자를 통계를 내어 보았습니다. (게시글로 판단하는건 의미가 없어 보여, 중복을 제거하고 대권 주자에 대한 지지 성향 비율을 표현하고자 했습니다.)

이렇게 보니까 좀 골고루(?) 퍼져 보이긴 했습니다. 물론 평균적으로 30%(부정적인측면) 사람들이 대다수였지만, 스펙트럼이 골고루 퍼져 보여서 통계 내는데 괜찮아 50% 기준으로 딱 잘라 긍정적 평가를 하는 인원수를 표현 한 결과

이런 그래프가 나왔는데, 뭔가 어디서 많이 본듯한 그래프가 나왔습니다.

상위 3인은 한길 리서치와 비슷하지 않은가요? (실제로 우리 연구에서도 6인만 대권 주자로 뽑아서 처리 했습니다) 그리고 하위 3인은 한국갤럽과 비슷한 양상을 보이고 있었습니다.

분석 연구 결론

트위터나 SNS 만큼 확실하게 나타나는 여론 혹은 나타나는 현상은 없다고 생각이 듭니다. 확실히 SNS 트랜드를 뽑으면 현재 해당 키워드에 사람들이 얼마나 반응하는지, 얼마나 긍정적이고, 얼마나 부정적인지 알아내는데에 꽤 정확도 높은 지표를 뽑을 수 있을 것이라고 판단 되었습니다.

물론 이번 연구에서는 “확실하게 SNS 데이터를 통해 가시적으로 보여줄 수 있는” 정치적 요소를 활용 했지만, 본 연구가 결코 정치적인 요소에서 끝나지 않고, 다양한 방면에서 활용될 수 있는 가치가 되었으면 좋겠습니다.

혹시 본 연구에 대한 궁금증 혹은 문의가 있으신 분은 본 사이트 하단의 연락처로 문의 바랍니다. 긴 글 읽어주셔서 감사합니다.