livin' seberia

6년 동안 13만km 뛴 기념으로 숫자 분석...

play with data

그러니까 2015년 9월, 대학원 들어오면서 차를 샀는데 (이때 뭐가 많이 겹쳐 있었다. 지방으로 이사도 앞두고 있었고.) 그 차를 탄 지 어언 6년을 채웠고, 차에 던져 둔 주유소 영수증도 치울 겸, 그간 쌓아온 데이터를 입력/정제/분석하는 시간을 가져보기로 했다. (왜냐면 오늘은 주말인데도 불구하고 학교 나왔으니까!) #아_벌써부터_tmi라_지친다 #스압

참고로, 내 차는 프리우스V이고, 이에 대한 연비분석은 무려 2016년에 '차 산 지 1년 됐다'며 기념으로다가 한 차례 한 적이 있다. 

https://seberia.tistory.com/27?category=876171 

 

[내차연비] 프리우스v 연비 분석

가성비와 환경, 환경을 생각하는 것만 같은 도회적인 이미지를 중시(...)하는 필자는 지난해 9월 인생 두 번째 차로 도요타 프리우스 V모델을 구입했다. 첫 번째 차던 아반떼md gdi(2011년식)는 리터

seberia.tistory.com

 

여하튼, 그래저래 세월은 흘렀고 나는 어쩌다보니 박사과정에 들어와있으며... (슬픈 얘기는 생략) 아, 그래도 좋은 소식(?)이 있다면, 물리적으로 낯선 지역에서 벗어나 다시 고향 땅으로 진입했다는 것 정도. (물론 그 세베리아는 더이상 세베리아가 아닌 엄청난 도시가 되었다만! 정말 세상이 너무 빨리 변한다...) 

 

그 사이에 통계학계를 강타하는 엄청날 정도의 발전이 있었다거나, 내 개인적인 지적 능력의 향상이 있었다고 보지는 않지만 ㅎㅎㅎ 암튼 쌓인 데이터만 가지고 살짝 보자면, 다음과 같이 세 개의 테마로 이야기를 할 수 있을 것 같다. 

1. 코로나 시기는 정말 차 타고 돌아다니기 좋은 시기였구나 (네?)... 오해가 있을까봐 미리 하는 얘기지만, 기름값 때문입니다. 
2. 예상 외로, 세월이 흐른다고 해서 리터당 연비가 크게 줄지 않는 구나... (하이브리드라...? 아니면 나의 순해진 운전 습관 덕?)
3. 휘발유 -> 하이브리드로 과연 나는 뽕을 뽑았 이득을 봤는가? 

 

1번. 가장 기본 분석부터 시작하자면, 코로나 첫 해 기름값은 정말 저렴했다

영수증 정리하면서도 느낀거지만, 4만원 돈으로 30리터는 충분히 넣는 행태가 이어졌다. 물론, 돌아다닌 거리는 전후년도에 비해 뜸했다. 2020년엔 1만2천킬로를 탔고, 그 전까지는 기본 2만킬로를 훌쩍 넘겼다. 빈도도 적었지만, 일단 서울로 이사오면서 이동거리가 확실히 줄어든 것도 맞음... 

2015년 10월 5일부터 2021년 6월 28일까지 (이후 기록은 못 모으는 중. 죄다 전자영수증화...ㅠ) 총 252회 주유를 했고, 

그동안 쓴 주유비는 1천19만4206원이다. 즉 1천만원 넘겼다! 

일반적으로 주유할 때는 4만원씩 넣었고, 평균 28리터 정도 들어갔다. 

 

그럼 연도별로 리터당 가격을 보면, 아래와 같다. 걍 평균냄.

2015년 2016년 2017년 2018년 2019년 2020년 2021년
1446.87원 1348.25원 1456.87원 1563.60원 1432.76원 1376.79원 1510.33원

코로나 첫 해에, 많은 뉴스에서 유가 하락을 팡팡 때리던 것이 새삼 실감이 나는데(그래서 유가 관련 펀드가..), 이런 와중에 2016년엔 무슨 일이 있었나 싶어서 찾아보니, 아... 정말 세상은 돌고 도는구나 싶었다. 5년 주기설 이런 건가 싶어 찾아보니 "2011년 이집트에서 시작된 민주화 시위가 중동으로 번져나가면서 국제유가는 사상 최고를 향해 달리기 시작했다. 이른바 '아랍의 봄' 이후 중동과 아프리카 산유국들의 정세 불안 및 공급 차질이 계속되면서 2011년 연평균 111달러, 2012년 112달러로 정점을 찍었다" 라는 연합뉴스 검색 결과가.... (딱히 주기적으로 도는 건 아닌 걸로...) 

조선비즈 2020.3월 기사. 이미지 누르면 링크로 연결.

 

2번.  오래 타고 많이 탈수록 연비가 떨어지는 게 당연한 거 아님?

으음, 아직은 아님. 일단 아래 그래프는 리터당 몇 km 타는지, 즉 연비 추이를 쭉 나열한 것이다. 21년 중간에 뭔일이 있어서 연비가 6을 찍었는지는 잘 모르겠다만(입력 오류 같은 것일듯?) 대부분은 13~25 사이에 들어와 있다. 추세선을 봐도 딱~히 떨어지는 느낌이 아니어서 숫자로 봤다. 

2015년 2016년 2017년 2018년 2019년 2020년 2021년
18.12 18.29 17.51 18.00 18.41 17.25 17.06

음, 20년 이후로 17대를 기록하는 것이 쪼곰 걸리긴 하지만, 그래도 익스트림하게 떨어지는 느낌은 아니다. 참고로 2019년 말에 (돈이 없어서 저렴한ㅠㅠ)타이어로 교체를 한 바 있다. 그 이후 타면서도 느낌적인 느낌으로 연비가 좀 떨어지네, 싶었는데, 아마 그 영향도 없지 않아 있을 듯. (상관관계가 뚜렷하게 나올 수는 없는 상황이라!)

하지만 대부분 17~18 레인지에 들어와있고, 이는 2016년 1월, 프리우스v의 공식복합연비로 발표된 17.9km와 거의 비슷하다고 볼 수 있다. (호오... 믿을만하군) 과연 몇 년 더 탈 수 있을지는 데이터가 더 많아야!!! 알 수 있을 것 같다. 

여기에 더해, 분명 내 운전습관도 순한맛이 되었을 수도 있겠다는 은은한 생각을 해본다.

3번. 그래서 하이브리드는 과연 나에게 이득을 가져다 줬는가? 

지형 지물과 바다 건너는 거 이런 건 다 제외하고 단순히 숫자로만 하는 말이다만, 지구 둘레(4만km)를 세 바퀴 도는 데 드는 기름값이 천 만원... 하이브리드라 그런가보다.... 싶어서 정말 '내가 만일 다른 종류의 차량을 탔다면?'을 한 번 계산해 봤다. 

이게 우리끼리는 가성비 분석이라고 하는데, 차량을 살 때 대략 3800만원(2015년 9월 기준)정도 들었고, 보험료가 대략 연간 80만원 정도 들고, 자동차세도 30만원 정도 내는 듯? 간간이 점검도 하고, 엔진오일도 갈고 했지만 딱히 큰 사고나 수리는 없었고, 통상적으로 몇 킬로 타면 타이어 교체하고, 브레이크패드 바꾸고 하는 것은 다른 차량과 다르지 않을 듯. 보험료와 자동차세 등등에서 그리 크게 차이가 나지 않는다는 전제 하에, 차량가액을 기준으로 과연 '얼마나 타야 뽕을 뽑는가'를 단순 계산해봤다. 정말 단순하게 연비만 넣어서. 

기준은 내 첫 차인 아방이! 우리 아방이는 1800만원 정도 주고 샀던 기억이 나고, 연비는 8km/l 정도였다. 초보였던 내 운전 습관의 문제도 있겠지만, 아무튼 그 차를 계속 탔다고 가정하고(걍 대충 때려넣어서 비슷한 기간 탔다고 치고) 그 차 역시 연비가 안 떨어졌다고 계산하면..

13만 km에 대해, 지난 6년간 리터당 평균 가격이 1441.87원임을 감안해 계산하면

====> 같은 거리를 달렸을 때 2343만387원이 나온다. 즉, 1323만6181원을 아낀 것! 

........ 차값 차이가 아직 더 크구나 ㅎㅎㅎㅎㅎ 언제쯤 2천만원을 아끼는 그날이 오려나 ㅎㅎㅎ 

여기에 더 분석을 보탠다면, 나중엔 탄소배출량 이런 것까지 계산해보면 재미있겠다는 생각은 얼핏 든다. 귀찮으니 패스..

 

암튼 결론은, 

 

13만 킬로미터 탔지만 아직 연비가 익스트림하게 떨어지진 않았고, 아직도 하이브리드로 바꾼 것에 대한 가격(즉 가성비)에서의 논리구조를 만들기에는 차를 좀 더 많이 타야할 것 같으며 (ㅋㅋ), 운세에 역마살 비슷한 것(지살)이 있는 것에 대한 데이터 근거를 마련한 것 같다는 깊은 깨달음... 

ㅎㅎ 아, 이제 후련하게 세이 굿바이 하자, 영수증들아. 요즘은 주유소에서 제로페이 쓰니까 영수증도 안 줘서 더 이상 못 적고 있다.

데이터 정리하면서 몇 가지 발견한 것도 있다. 세베리아에서 세차를 정말 너무 친절하게 해 주셔서 마지막으로 일부러 들러 기름 넣고 온 주유소의 영수증(2020.2.10)도 새삼 반가웠고, 닷새 간격으로 3-4만원씩 넣은 흔적들은 내가 길에서 보낸 시간들을 역력히 보여주는 느낌. 마포랑 양재동은 정말 기름값이 비싸구나, 그래서 나는 정말 최소 금액만 급히 주유했구나, 주로 나는 만남의광장 주유소(경부선)와 하남 만남의광장(중부고속도로) 주유소를 자주 이용했고, 세베리아 가던 시절에는 어찌나 망향휴게소와 입장휴게소를 자주 들렀던지, 그 동네 호두과자 향이 지금도 느껴질 지경. 지금은 연구실이 이사를 가서 더이상 들르지 않는 동수원 초입 주유소의 가격을 매번 매의 눈으로 지켜봤던 기억, 낙성대역 앞 주유소의 가파른 세차 터널에 대한 인상, 아, 이 시기에 내가 남해여행을 했구나, 이건 캠핑 갈 때 들른 주유소겠지? 라고 떠올리게 해주는 수십장의 한 뼘 짜리 환경호르몬 유발 종잇조각들을 오늘에야 모두 처분한다! 안녕 얘들아!! 

아 진짜 너무 많... 이걸 대충 쑤셔넣고 지낸 지난 세월... 차님께 죄송...
이렇게 영수증 상단에 늘 현재의 누적 km를 적어두었다. 주유구 뽑자마자 정말 칼같이 펜 뽑아서 숫자 적고 호다닥 출발하는 게 습관이 되었더라는!

그나저나, 기록병을 버리고 싶은데 과연 가능할까?ㅎㅎ 

그리고 이렇게 적고 모으고 버리고 할 시간에 차라리 OCR을 넣어서 앱을 하나 만들든 있는 걸 찾아 쓰든 할 것을... 아냐, 그래도 데이터를 기록하는 시간은 어쩐지 회상도 가능하고 재밌는 부분도 많으니 만족! 오늘의 기록은 끝! 

SNS에서 모은 데이터로 사람들이 누굴 더 좋아하는 지 알아봤다

play with data

소셜 사용자들은 문재인 후보를 좋아하지만, ‘내 주변 사람’들은 안철수 후보를 선호




여론조사는 ‘당사자의 의견을 듣는 것’에서부터 시작한다. 직접 만나 묻기엔 어려움이 있으니 대개 전화를 이용하는데, 그 응답률은 갈수록 떨어져 2017년 4월 기준 5%도 채 되지 않는 경우까지 등장했다[1]. 그 대안으로 한때 소셜미디어가 떠오르기도 했지만[2], SNS 유저의 다수가 진보 성향의 젊은 그룹임을 감안할 때 그 적중률이 현저히 떨어진다는 연구 결과가 연이어 쏟아져 나왔다[3]. 결과적으로 미국에선 예측을 뒤엎고 도널드 트럼프 후보가 대통령으로 당선됐고, 영국에선 생각지도 못한 큰 표차로 브렉시트가 통과됐으며, 한국에서는 2016년 당시 4.13 총선에서 예상 밖 여소야대가 실현됐다. 이렇듯 여론조사는 번번이 오답지를 제출해왔다. 


그렇게 2017년 장미 대선이 코 앞으로 왔다. “답은 정해져 있지만…”이라는 듯한 대선이 되는가 했는데, 더불어민주당 경선 이후 판이 꽤 흔들리는 모양새다. 많은 여론조사에서 안철수 국민의당 후보가 높은 지지율을 보이며 ‘문재인 대항마’로서의 프레임을 굳히는 분위기가 형성됐다. 과연 이 여론조사를 믿을만 한 것인지, 좀 다른 방식으로 접근해 봤다. 여론조사기관과 학계가 슬슬 버린 카드로 인식하기 시작한 소셜미디어를 역으로 활용했다. ‘당사자’의 의견을 듣자니 당사자들이 편향(bias)돼 있으니, 당사자가 아닌 사람들이 말하는 ‘카더라’를 모아보는 것이다. 즉, “우리 엄마는 000 뽑는대”라는 트윗들을 수집하면, 트위터를 하지 않는 중장년층의 표심을 한 다리 건너 확인할 수 있다. 


트위터를 수집 대상으로 선택한 이유는 다음과 같다. 먼저 즉각적인 코멘트가 많다. 페이스북에 비해 익명성이 강하기 때문에, 순간적인 감정을 표출하는 성향이 강하다. 정치적 성향이 맞지 않는 주변 사람들에 대해 의사를 표현하는 경우가 많다. 또한 단문이다 보니 채팅하듯 오가는 대화들도 캐치할 수 있다. 수다를 떠는 듯한 소소한 방식으로 주변인들의 의견을 전달하는 것이다. 즉 “채팅과 발행(publishing)의 경계”에 있다[4]. 


따라서 트위터에서 지난 4월 2일부터 11일까지 열흘 간 데이터를 모아 샘플로 확인을 해 봤다. 검색 쿼리는 ‘우리 뽑는’ 이다. 이 경우 ‘우리 아버지는 홍준표 뽑는다고 해서…’, ‘우리 할머니는 심상정은 안 뽑는대’ 같은 트윗을 모두 찾아낼 수 있다. 여기에 ‘문재인 뽑는’, ‘안철수 뽑는’, ‘홍준표 뽑는’, ‘유승민 뽑는’, ‘심상정 뽑는’도 함께 검색해 중복을 제거하고 값을 추려냈다. 네이버 검색에서 ‘오빠랑’이라는 키워드로 맛집을 검색하던 과거 사용 행태와 비슷한 패턴으로 발상했다. 


위 쿼리로 수집한 트윗의 양은 1046개로 가운데 중복되는 것을 제하면 798개다. 그 중에서도 실제 ‘주변 인물의 후보 선호’에 관한 내용은 96개다. 이 내용을 가지고 분석한 결과는 다음과 같다. 





결과적으로 제 3자가 “안철수를 뽑는다”는 의견이 우세하고, 더불어 “문재인을 뽑지 않는다”는 말도 동시에 다수 출현한 것을 볼 수 있었다. 심상정을 뽑지 않는 이유로는 ‘여자이기 때문’이라는 말이 많았다. 또한 유승민 후보에 대해서는 뽑는다는 것과 관련한 언급을 발견할 수 없었다. 다만 전수 자체가 굉장히 적다는 점을 생각하면, 이 데이터 자체만으로 미래를 예측한다거나 통계적 유의도를 찾는 것에는 무리가 있다. 


다음과 같은 반론에도 부딪힐 수 있다. 첫째, 트위터를 주로 쓰는 그룹 가운데는 문재인 후보를 지지하는 경우가 많고, 따라서 주변 인물들의 안철수 지지에 대해 불만을 토로하는 것이 많을 수 있다. 둘째, 주변 인물들이 문재인 후보를 지지한다면, 그것을 굳이 표현할 만한 동기 부여가 되지 않았을 가능성도 있다. 이를테면, 박근혜 전 대통령 탄핵 당시 ‘이러나 저러나 문재인이 될 것’이라는 분위기가 아직 남아있어서, 굳이 내 가족이 문재인을 뽑는다는 것을 알릴 이유가 없을 수 있다는 것이다. 하지만 데이터 수집 기간이 대부분 더불어민주당 경선(4월 3일) 이후이고, 안철수 후보의 약진이 두드러지는 시점임을 고려하면 “그래도 우리 집은 문재인 뽑는다”와 같은 발언이 나올 만 한 동력이 있다고 봤다. 또한 트위터에 문재인 지지자가 많다는 점을 고려해도, 일종의 ‘자부심’처럼 “우리 가족은 문재인 뽑는다”는 발언을 하는 경향들도 발견됐다. 셋째, 트위터 수집의 경우 개인의 의사를 너무 배제하는 경향이 있다. 다른 데이터와의 병합이 필요한 대목이다. 


이에 따라 이번에는 각 후보의 페이스북 페이지에 올라온 같은 기간(4월 2일~11일) 포스팅에 대한 <좋아요, 최고예요, 웃겨요, 슬퍼요, 멋져요, 화나요> 등의 버튼 클릭 정보를 살펴봤다. 개인들의 감정 표출을 확인하기 위해서다. 절대적인 감정 클릭 양에 대해선 문재인 후보의 포스팅에 대한 반응이 압도적으로 많다. 평균적으로 문재인 후보는 포스팅 당 4634개의 리액션(reaction) 클릭량을 보였고, 그 뒤를 심상정(3089) 후보가 이었다. 포스팅 하나를 올리면 대략 3,4천 개의 클릭이 발생하는 것이다. 이에 비해 홍준표, 유승민 후보는 42.47건, 68.07건에 불과했다. 안철수 후보는 612.8건으로 계산됐다. 같은 기간 글은 유승민 후보가 가장 많이 올렸고(69건), 그 뒤로 안철수(58건), 홍준표(57건) 후보가 활발하게 글을 올렸다. 문재인, 심상정 후보는 각각 30여 건에 그쳤다. (*참고로 이 자료는 각 후보의 ‘페이지’를 긁은 내용이다. 개인 뉴스피드는 긁는 것이 제한돼 있어서다.)  




이같은 페이스북 리액션 행태 가운데서도, 일상적인 ‘좋아요’보다 더 강한 지지를 표하는 ‘최고예요(♥︎)를 누르는 경우를 살펴봤다. 다른 클릭(like, angry 등)과 달리 적극적인 지지로 해석할 만한 패턴을 보였다. 결론부터 말하자면 각 포스팅 당 문재인 후보에 대해서는 여러 클릭 가운데 평균 7.5%가 ‘최고예요’였다. 안철수 후보 포스팅에서는 전체 클릭 중 ‘최고예요’가 5.1% 비율로 나타났고, 홍준표 후보는 6.4%, 유승민 후보는 4.3%, 심상정 후보는 4.4%만큼 나타났다. 다만 문재인, 홍준표 후보의 ‘최고예요’ 클릭에 대한 포스팅별 표준편차(각 0.0564, 0.0425)는 다소 큰 편이었고, 그에 비해 안철수심상정 후보는 비율을 꾸준히 유지하는 경향을 보였다(각 0.0260, 0.1602).  


만일 한 사람이 여러 후보에 대해 ‘최고예요’를 누르지 않고 오직 한 명의, 한 포스팅에 대해서만 ‘최고예요’를 누른다고 가정할 때 각 후보별 지지도 또한 확인해볼 수 있다. 위 자료를 토대로 정규화를 거쳐 산출한 결과는 다음과 같다. 




또한 긍정적인 반응(‘좋아요’+ ‘최고예요’)을 토대로 살펴보면 다음과 같은 도출할 수 있다. 




마지막으로 이 트위터상 나타나는 3자 선호도와 페이스북 상 선호도를 3:7, 5:5, 7:3 비율로 계산해 SNS 기반 선호도로 뽑아봤다. 트위터의 3자 지지도와 대칭할 페이스북 데이터로는 ‘적극적(즉 ‘최고예요’클릭) 선호도’를 골랐다. 트위터 메시지를 의미적으로 분석한 결과, 여기 언급된 3자들의 경우 지지하는 후보가 여간해선 잘 바뀌지 않는 그룹이었기 때문이다. 며칠 동안 재차 계산방식을 바꿔가며 검토해봤음을 미리 밝힌다. 결론은 다음 표와 같다. 모든 비율을 따져도, 현재 보유하고 있는 데이터 상으로는 안철수 후보가 문재인 후보보다 더 높은 선호를 보인다. 





늘 그렇듯 이같은 분석은 표본이 전체에 대해 대표성을 띠고 있느냐가 가장 중요한 이슈다. 그런 이유로 소셜 미디어는 소위 말하는 p값을 충족하기에 어려움이 있었다. 하지만 제 3자에 대한 정보 전달자적 행태를 고려한다면, 이 부분 또한 배제할 수만은 없는 빅데이터라고 볼 수 있을 것이다. 본 조사는 본격적인 후보등록 및 첫 TV토론이 치러지기 전의 데이터를 토대로 이뤄졌다. 조만간 보충을 거쳐 한 번 더 결론을 내 보려고 한다. 






<참고문헌>

[1] 선거판세도 흔드는 여론조사… 불리하면 음모론까지 들먹. 동아일보. 2017-04-08. 

[2] Predicting Elections with Twitter: What 140 Characters Reveal about Political Sentiment. (2010) Andranik Tumasjan, Time O.Sprenger, Philipp G.Sandler, Isabell M.Welpe. Proceedings of the Fourth International AAAI Conference on Weblogs and Social Media.

[3] Limits of Electoral Predictions using Twitter. (2011) Daniel Gayo Avello, Panagiotis T. Metals, Eni Mustafarai. Association for the Advancement of Artificial Intelligence. 490-493.

[4] Unsupervised Modeling of Twitter Conversations.(2010) Alan Ritter, Colin Cherry, Bill Dolan. Proceeding HTL ’10 Human Language Technologies: The 2010 Annual Conference of the North American Chapter of the Association for Computational Linguistics, 172-180. 

[내차연비] 프리우스v 연비 분석

play with data

가성비와 환경, 환경을 생각하는 것만 같은 도회적인 이미지를 중시(...)하는 필자는 지난해 9월 인생 두 번째 차로 도요타 프리우스 V모델을 구입했다. 첫 번째 차던 아반떼md gdi(2011년식)는 리터당 8km의 믿을 수 없는 실연비를 자랑하며 내게 주유비 폭탄을 안겨준 바 있다. (네이버 검색하면 2015년형의 경우 14.0~18.5km/l라고 나온다. 4년 만에 연비가 엄청 좋아졌나보다...) 

결혼도 했겠다, 마침 장거리를 뛸 일도 늘었고, 해서 기름값을 아끼겠다는 일념 하에 무려 4000만원에 이르는 이 차량을 사게 된 것. (물론 도요타 차량에 대한(기업 말고 차량!!) 신뢰도 좀 있었다. 미국에서 리콜사태로 호되게 까였으니 좀 나아졌겠지 싶은...) 그렇다면 과연 차값을 상쇄할 만큼 주유비를 아낄 수 있을까? 당연히 "아니오"일 것 같지만, 그래도 혹시나 하는 마음에 지난해 10월부터 8개월 동안 연비를 체크해 실질적으로 아낀 비용을 검토해 봤다. 


왜 프리우스V 모델인가?

차를 사려고 마음먹던 지난해 9월로 말할 것 같으면, 1)2016년부턴 하이브리드 차량에 대한 정부 보조금이 없어질 거란 말이 있었고(실제론 여전히 남아있다) 2)2016년에 프리우스 전 차종이 풀체인지 된다는 말이 있었다. 단, V모델만 제외하고. V모델로 말할 것 같으면, 소형SUV 스타일로 나온 프리우스 모델로, 한국에는 2015년 초에 들어왔다. 2016 프리우스 4세대(일명 '피리우스') 풀체인지에서 빠졌기 때문에, 현재 돌아다니는 V차량은 모두 지난해 나온 것과 같다. E모델과 비교할 때 차량 내부나 트렁크 등이 훨씬 크지만, 그만큼 연비는 덜 나온다. 차에 대해 잘은 모르지만, 디자인을 따진다면 왜건 스타일이라고 한단다. 가격은 당시 프리우스 E모델의 가장 기본형이 3300만원대였던 것과 비교하면, 대략 500~600만원 정도 더 비쌌다. 공인연비는 17.4km/l 로, 프리우스 3세대 모델보다도 3km/l 정도 적게 나온다-고 한다.


연비 기록을 어떻게 했느냐 하면, 주유소에서 기름 넣고 영수증 받으면 그 위에 계기판에 찍힌 km거리를 기록해 뒀다. 영수증을 모두 모은 뒤에 csv 파일로 정리했고, 항목은 날짜, 누적주행거리 km, 연비((누적-이전누적)/이번에 넣은 기름량) 등으로 구분했다. 참고로 프리우스 계기판에 찍히는 연비는 L/km 형태로 기록돼 평소 운전할 때 대개 4~6L/km 정도로 나타난다. 즉, 평소 관찰한 내차 연비는 20km 안팎인 셈. 


계기판이 나를 속였을 지도 모른다는 의심이 든 건 사실 지난 2월쯤이었다. 위에서 말한 것처럼 영수증을 차곡차곡 모아다가 연비를 계산했는데, 17km/l 정도가 나온 것이다. 의심 많은 필자는 (마침 정기검사기간도 됐고 해서) 도요타 센터로 달려갔고, "겨울에는 원래 연비가 좀 떨어짐"이라는 답변을 받아들었다. 그렇게 봄이 오기를 기다렸고, 여름까지 영수증을 모았다. 


일단 필자의 운전 스타일로 말할 것 같으면, (신랑도 종종 몰지만 본인이 주로 쓰고 있다) 아반떼 몰던 시절처럼 모는 경향이 없지 않고(좋게 말해 드라이빙을 좀 즐긴달까.. 물론 민폐끼치지 않는 선에서), 그래도 연비운전을 하려고 최선을 다하는 편이다. 다만, 주로 이용하는 도로가 고속도로다. 당연히 도심연비에 비해 떨어지게 나올 수 밖에 없다는 사실을 견지하시길. 운행 거리가 상당히 멀다. 집과 연구실의 거리가 편도 110km다. 여행도 자주 다닌다. 9개월 만에 2만5000km를 주파했고, 지금까지 모두 47번 주유를 했다. 주유비는 정확히 180만원 들었다. 한 번 넣을 때 30리터 정도 들어가고, 대개 40000원이면 꽉 찼다. 


결론부터 말하자면, 일단 아래 표를 보시라. 


맨 아래 x축은 날짜고... 위 x축을 중심으로 살펴보면 된다. 대략 12월, 1월에 연비가 좀 낮았던 것 같고, 봄에는 다소 오르는 것 같은 기분이 든다. (그래프는 타블로(Tableau)의 힘...)

평균 연비를 계산해보면 18.4281km/l 로 나온다. 하지만 봄 이후(즉 3월 10일 이후) 연비는 19.389km/l로 다소 오른다. (1km/l가 올랐으면 꽤 오른 것인가. 음, 비교적 많이 오른 것이라고 생각한다.) 고로 어찌보면, 나는 프리우스v 공인연비라고 나와있는 17km/l 대보다 비교적 더 잘 타고 있는 셈이다. (실제 기자들이 시승했을 당시 공인연비보다 잘 나온다는 코멘트가 상당수 실렸다) 하지만, 내가 평소 관찰하던 것과 비교하면 좀 덜 나오는 기분은 든다. 계기판이 날 속이려 드는 것은 아니겠지만, 계기판의 수치는 말그대로 '운전습관 교정용' 내지는 참고용으로 살피고, 실제 연비는 기록과 분석을 통해 확인하는 것이 옳을 듯. 더불어 내가 프리우스를 구입했을 당시 "주유소에 들렀던 게 언제인지를 잊어버리게 될 것"이라는 이야기를 많이 들었는데, 그보다는 내가 기억력이 좋은 것인지 아니면 그만큼 자주 가는 것인지, 휘발유 냄새는 종종 맡는 것 같다. 대충 봐도 한 달에 너댓번은 주유를 한다. 아마, 기름통이 그만큼 작아서 그런 것일지도. 


시승감에 대해 기대하셨다면, 기대에 조금이라도 부응해야겠다. 일단 운전하는 입장에선 차가 좀 덜 나간다는 생각을 공유하고 싶다. 물론 파워모드도 있고, 에코-전기모드도 있으니 선택해 운행할 수도 있지만 평소 달릴 때 아반떼만큼 팍팍 나가지는 않는다. (장점일 것이다) 가속이 조금 더딘 느낌이 들기 때문에, 독일차 좋아하는 분들은 답답해 하실 법도. 더불어 내 차가 네 등 뒤에 있다는 사실을 알리기 위해 클락션을 톡 두드려야만 한다는 점... 그만큼 차가 굉장히 조용하다. 몇몇 독일 차량은 신호 대기할 때 아예 부르릉 하면서 시동이 꺼지지만, 이 차는 그냥 조용해 진다. 도요타의 기술이라고 들었다. 개인적으로 가속할 때 비행기 뜨는 것 같은 퓨우우웅 하는 소리(ㅋㅋ)를 좋아한다. 

개인적으로는 추천하는 차다. 배터리 무상보증 기간이 10년이고, 나는 이 차를 오래 탈 것 같으며, 현재까진 연비가 크게 떨어지거나 하는 일이 덜 한 것 같다. 물론 저 그래프상 2월 어느 시점에서 팍 떨어지는 모습을 보였지만, 저건 분명 내 잘못일 것이다. (이런 무한한 믿음같으니...)



<?> 글을 끝맺기에 앞서, 그렇다면 차값을 상쇄할만큼 연료비를 아끼게 될까? 단순계산을 해봤다.

아반떼 차량 구입비용이 대략 1800만원 정도였고, 프리우스는 3800만원쯤 주고 샀다. 차값 차이는 2000만원 정도. 

같은 거리를 달렸을 경우, 유가가 같다고 가정할 때 아반떼 차량의 동기간 유류비는. 

2만5000km를 달렸다고 하고, 연비를 8km/리터 라고 할 때 총 3125리터를 썼을 것이다. (프v는 1324.018리터 씀) 동기간 평균 유가가 1367.87원이니, 셈하면 427만4593원이 들었을 것이다. 8개월 간 약 247만원을 덜 썼다. 이대로 5년 정도 더 쓰면... 유가가 폭삭 주저앉지 않는 이상 뽑을 수 있을 듯도... 

사실 아반떼를 3년쯤 쓰면서 잔고장 한 번 난 적이 없었고, 프리우스 또한 마찬가지다. 수리를 할 일이 생긴다면, 당연히 프리우스가 좀 더 나올 테고, 보험료 또한 개인적으로 한 80만원 정도(...) 오른 것 같다. 이런저런 차량 유지비를 생각하면, 그리 돈을 아끼지 못한 기분. 만일 서울시내에서만 굴린다면, 친환경차라는 이유로 여러 혜택을 받을 수 있으니(이를테면 공영주차장 요금 50% 할인이랄지, 남산터널 통과시 80% 감면이랄지) 잔돈을 덜 쓸 수 있을 것이다. 하지만 안타깝게도 지방(특히 세베리아)에서는 그럴 일이 많지 않다. 흑. 

고로, 연료비는 아낄 수 있을지 몰라도 보험료나 기타 수리비(아반떼도 나중엔 잔고장이 잦겠지) 등을 생각하면, 뭐라 확언하기 쉽지 않겠지만! 많이 탈 수록 이득인 건 내가 보기엔 거의 확실해 보인다. 후후. 





PRODUCE 413 - 3월 30일자

play with data



당초 '일일이 데이터를 긁어서 자바스크립트로 시각화까지 해야지~'하고 시작했으나,

오늘따라 일러스트레이터와 포토샵을 만지작거릴 일이 좀 많다보니, 또 그게 손에 배서 그냥 손코딩 손디자인... (오랜만에 내 휴이온 태블릿도 활용했다. 잘했어 토닥토닥) 샘플 작업했다 생각해야지.

확실히 소녀들처럼 샤방한 느낌은 덜하다. 당연한가. 


음 암튼, 신문사들이 싣는 정치인의 사진 속 인물들을 디텍트해서, 빈도수를 셌다. 나중에 발전시킨다면 여기에 왜 많이 사진이 나왔는지 주요 뉴스 링크도 하고, (여기엔 공간이 모자라 안 달았다만) 수치도 달겠지. 아마 누적 포토 수도 넣을 수 있을 것 같다. 참고로 이날 1위를 한 안철수 후보는 11개 신문에 전부 얼굴을 보여줬고(!) 횟수는 13회였다. 어떤 곳은 두 번씩 넣어주기도 했다는 뜻이다. 데이터를 더 모아보면 보수-진보 및 일반지-경제지 등의 매체 차이나 정당 규모별 노출 빈도도 알아볼 수 있을 것 같고. 참, 선거철 보도사진은 특히 centroid를 잡아 가중치를 매기기에 좋지 않다. 끄적끄적. 


과연... 관련 코딩을 완성할 것인가... (저, 저기...스마트미러나 끝내...) 

미디어에서의 애견 노출과 유기견 증가의 상관관계

play with data

The Dog and The Media 

※ 아주 예전에 긁어 모아둔 데이터를 활용해보았다. 위 그림은 내가...


방송에도 흐름이 있다. 2010년대 들어 '가족' 테마를 시작으로 '쿡방', '인테리어', '살림', '먹방'에 이르기까지 대부분 집과 관련한 예능이 봇물처럼 쏟아지고 있다. 애완견 또한 단골 손님이다. 몇몇 강아지는 국민견이라는 명칭을 부여 받는다. 특히 여느 소재와 달리 강아지나 고양이는 '편집의 힘' 덕에 일약 스타덤에 오른다. 

TV에 애완견이 노출될수록 그 종의 강아지가 많이 키워지고 또 버려진다는 말은 줄곧 있어왔다. 하지만 데이터로 밝혀진 바는 없다. 이 연구는 '강아지를 출연시키는 TV프로그램과 버려지는 애완견 수'에 연관성이 있지 않을까하는 생각에서 시작됐다. 


데이터는 국내 유기견 무료분양 사이트 게시판에서 긁었다. 자신의 강아지를 대신 키워줄 사람을 찾는 곳이다. 대부분 자신보다 사정이 더 나은, 더 좋은 주인에게 강아지를 보내고 싶다며 글을 올렸다. 제각기 사정이 다르고, 글쓴이들이 특정될 수도 있는만큼 사이트는 비공개한다. 이 곳에는 총 8천여 건이 올라와있지만, 한국어 수집이 쉽지 않은 관계로 그 중 10%인 약 8백 건(2015.05.31~2015.11.01)을 분석했다. 이 가운데 애완견이 새끼를 낳아 분양하는 경우가 아닌 634건을 다뤘다. 샘플이 작고, 데이터 대상인 게시판의 한계(이를테면 시간이 지난 뒤 자신이 쓴 글을 삭제하는 경우도 발견됐다)도 있다. 데이터도 더 늘릴 계획이고, 문제점도 차츰 보완할 예정이다. 


2015년 2-3분기에 가장 많이 버려진 강아지는 '2015년생 믹스견과 2015년생 푸들'

견종과 출생연도를 함께 기재했다. 글쓴이가 밝히지 않은 경우에는 '불확실'로 분류했다. d3 mosaic을 활용해 시각화했지만 티스토리 방침상 사진으로 캡쳐해 첨부한다. (아쉽다) 나이 또는 태어난 해를 기재한 경우에 한해 계산했다. 키워진 지 705일 만에 게시판에 올라왔다. 541마리가 평균 705.1일 키워진 것으로 나타났다.


방송 노출된 견종일수록 버려지는 경우도 증가(....한다고 봐도 무방하지 않을까)

소제목에서 저리 꼬리를 내린 이유는 아래에 나온다. 먼저 방송 시점과 강아지의 출생 분기를 기준으로 확인해봤다. 해당 시각화에는 Tableau를 활용했다. 시각화를 공부하며 늘 느끼는 거지만 인터랙션보다 중요한 건 한 눈에 들어오는 정보다. (라고 사진을 올리는 자는 나름의 변명을 던져본다...)

태어난 연도 및 분기별 강아지들의 게시판 출현 빈도를 다음과 같이 체크했다. 푸들과 말티즈, 믹스견은 국내에서 많이 길러지는 만큼 사실상 전 연령대에서 버려지고 있다. 


최근 10년 새 프로그램명과 함께 '국민견' 또는 '강아지 화제' 등이 언급된 프로그램을 검색해 리스트를 생성했다. 다음과 같다. 

일시

  프로그램

품종

이름

   2008.1.1  

  베토벤 바이러스

블루먼 콜리

토벤이

2008.2.1

  1박2일

그레이트 피레니즈

상근이

2009.6.1

  결혼못하는남자

치와와

상구

2010.2.1

  지붕뚫고 하이킥

잉글리시십독

히릿

2011.6.1

  신기생전

빠삐용

안드레

2012.8.15

  아름다운 그대에게

사모예드

상추

2013.1.1

  오로라공주

알래스카 말라뮤트

떡대

2013.10.26

  슈퍼독

잭 러셀테리어

이치

2013.10.26

  슈퍼독

Mix 보더콜리

수근이

2013.10.26

  슈퍼독

포메라니안

초롱이

2013.10.26

  슈퍼독

아메리칸 불리

코만도

2014.1.1

  삼시세끼-정선편

Mix

밍키

2014.1.1

  식샤를 합시다

포메라니안

바라씨

2014.5.1

  1박2일

그레이트 피레니즈

호야

2014.9.24

  내겐 너무 사랑스러운 그녀

골든 리트리버

달봉이

2014.10.1

  압구정백야

스코티시 테리어

왕비

2015.1.1

  삼시세끼-어촌편

치와와

산체

2015.1.4

  슈퍼맨이 돌아왔다

진돗개

새봄

2015.2.1

  일밤-애니멀즈

불독

만두

2015.2.1

  일밤-애니멀즈

닥스훈트

녹두

2015.2.1

  일밤-애니멀즈

잉글리시십독

호떡

2015.2.1

  일밤-애니멀즈

킹 찰스 스패니얼

2015.2.1

  일밤-애니멀즈

비숑 프리제

에디

2015.2.1

  일밤-애니멀즈

Mix

파니, 주니

2015.2.1

  일밤-애니멀즈

포메라니안

복실이

2015.2.1

  일밤-애니멀즈

푸들

테리

2015.4.1

  냄새를 보는 소녀

포메라니안

뭉치

2015.4.1

  식샤를 합시다2

포메라니안

도그

2015.6.1

  나혼자산다

푸들

고구마

2015.8.1

  삼시세끼-정선편2

Mix

사피, 에디


프로그램이 짧게는 몇 주에서 길게는 수 년간 지속하는 점을 고려해야 했다. 따라서 강아지의 미디어 출현 시점을 모두 분기로 정제해야 했다. 사실 미디어에 얼마나 노출돼야 사람이 강아지를 사거나 구하고 싶어지는 지를 알기는 쉽지 않다. (일단 개인차가 클 것으로 예상된다) 

따라서 다시 리스트를 짜면 다음과 같다. 

2008년 1분기 - 블루먼 콜리, 그레이트 피레니즈

2009년 2분기 - 치와와

2010년 1분기 - 잉글리시 십독

2011년 2분기 - 빠삐용

2012년 3분기 - 사모예드

2013년 1분기 - 알래스카 말라뮤트 

2013년 4분기 - 잭 러셀 테리어, Mix 보더콜리, 포메라니안, 아메리칸 불리

2014년 1분기 - Mix견, 포메라니안

2014년 2분기 - 그레이트 피레니즈

2014년 3분기 - 골든 리트리버

2014년 4분기 - 스코티시 테리어

2015년 1분기 - 치와와, 진돗개, 불독, 닥스훈트, 잉글리시 십독, 킹 찰스 스패니얼, 비숑 프리제, Mix견, 포메라니안, 푸들

2015년 2분기 - 포메라니안, 푸들

2015년 3분기 - Mix견

노란색 또는 연두색으로 컬러바(Color bar)가 칠해진 견종이 바로 위 프로그램에 출연한 강아지들이다. 프로그램 노출 이후를 붉은 색으로 표시했다. 이 강아지들만 추려 프로그램 방영 전후의 상관관계를 분석했다. 그 결과 방영 전에 태어난 강아지들과 방영 후 태어난 강아지 수 사이에는 강한 상관관계(cor=0.7612, df = 15, p<0.05)가 있었다. TV 방영 전에 태어나 버려진 강아지가 많으면 방영 후에 태어나 버려진 강아지도 많다는 것이다. 

방영 후에 태어난 강아지와 전에 태어난 강아지 수의 차이(diff)를 통계적으로 살펴봤다. t-test 결과 95% 신뢰구간이 (-2.205, 8.675)로 나타난다. 다만, p값이 0.226으로 귀무가설을 기각하기는 어렵다. (샘플 수를 늘려야한다...!!!) 통계를 넘어 단순히 수치상으로 본다면 방송 후에 태어나 입양됐다 게시판에 오른 강아지의 수가 방송 전 강아지에 비해 55마리나 많다. 통계적으로 의미를 더하려면 무엇보다 더 많은 샘플을 확보해 더 자세하게 조사해야할 것이다. (주르륵..)

앞서 말했듯 이 데이터에는 꽤 많은 한계가 있다. 최근 글을 파싱했기 때문에 최근 태어난 강아지가 유독 많은 것일 수도 있고, tv 방영여부와는 별개로 라이프 스타일의 변화 때문에 애완견을 더 키우게 된 것일 수도 있다. 사실 800개 넘는 글의 형태소를 분석한다 한들 견종을 일컫는 말이 제각각이고, 태어난 날짜 등을 셈하기가 어려웠다. 따라서 모두 수작업으로 데이터를 정제해야 했다. (애로사항1) 잘 정리된 데이터가 있다면, 아마 더 나은 연관성을 찾아볼 수도 있을 듯 하다. (정부 기관에 정보공개 청구를 하든, 사회단체에 문의를 하든 해야겠다. 한국어 자연어 처리는 정말이지... 애로사항2..)

미디어에게 "무책임하게 마구잡이식으로 강아지 예능 만들지 말라고!" 라고 아주 크게 외치고 싶지만, 사실 그들만 탓할 것도 아니다. 강아지를 키운다는 것이 얼마나 큰 책임감을 요구하는 지를 모두가 잘 알고 있어야 한다. 이번 데이터를 모으면서 글을 올리는 사유도 함께 참고했다. 가장 많이 나온 말은 '개인사정'이었다. 특히 '직장에 하루종일 있다보니 강아지가 집에 혼자 있다'며 '더 나은 환경으로 보내주고 싶다'는 말이 많았다. 그 다음으로 '임신(또는 결혼)을 해서', '이사가는 집이 아파트', '이민을 간다', '아이의 아토피 때문에', '주민들의 민원으로 어쩔 수 없이', '기존에 키우던 강아지와 너무 싸워서', '부모님의 반대', '원룸에서 키우다가 들켰다'는 말이 줄을 이었다. 

예능 프로그램에서 강아지가 연예인의 액세서리가 아니듯, 집에서 키우는 강아지는 인형이나 가구, 인테리어 소품이 아니다. 살아 움직이며 소통하는 생명체다. 키우기 전에 한 번 더 생각하고, 고민해야 한다. 

 


   

  

D3 히트맵 활용 - lpga scores

play with data

LPGA SCORES


미국 여자 프로골프투어(LPGA) 경기를 지켜보는 골프 팬들은 "요즘 들어 유독 선수들의 언더파(Under Par) 비율이 는 것 같다"고들 합니다. 지난 2014년 에비앙 챔피언십에서는 처음 LPGA 메이저 대회에 출격한 김효주 선수가 1라운드 10언더파(71타 경기이기 때문에 61타로 기록)를 쳐 남녀 메이저 사상 최저타 기록을 세우기도 했습니다. 몇몇 난이도 높은 메이저 대회를 제외하면 컷을 통과한 선수 가운데 오버파를 기록하는 경우가 드물 정돕니다. 이번 과제에서는 실제로 라운드당 언더파 비율이 늘었는지 살펴보기로 했습니다. 


대표적인 선수 13명의 데이터만 우선적으로 추출해 살펴봤습니다. 먼저 2007년~2014년 사이 미국여자프로골프투어(LPGA)에서 뛴 선수 13명을 골랐습니다. 2007년 top10에 드는 비율이 15% 이상인 선수 중 2014년에도 경기에 나서고 있는 선수 10명을 우선 채택했습니다. 또 2007년에는 성적이 좋지 않았지만(혹은 데뷔 이전이지만) 2014년 top10 수치가 상승한 박인비, 미쉘 위, 스테이시 루이스의 스코어도 추가했습니다. 데이터는 http://www.lpga.com 에 나와있는 선수들의 기록 가운데 "Underpar per round(average, %)" 부문 데이터를 추출했습니다.



상위권 선수들을 중심으로 뽑다보니 전반적으로 색채가 짙게 나타납니다. 특히 박인비 선수와 스테이시 루이스 선수, 수잔 페테르센 선수는 언더파 비율이 점차 오르는 것을 확인할 수 있습니다. 반면 크리스티커 선수와 카리웹 선수는 꾸준한 성적을 보여주고 있군요. 일본의 미야자토 아이 선수와 한국의 김인경 선수의 기록은 다소 굴곡이 있다고 봐야할 듯 합니다. 2011년을 전후로 슬럼프를 겪었던 미쉘 위 선수는 다시 전성기때만큼의 기량을 찾아가는 모습이네요. 

 
선수마다 차이는 있지만, 2007년과 2013년만 놓고 봐도 색채 자체가 확연히 다른 것을 볼 수 있습니다. 단지 선수들의 실력이 늘었기 때문일까요, 아니면 코스가 모두에게 익숙해진 걸까요? 더 좋은 장비, 더 나은 훈련 환경 덕분은 아닐까요?



##해당 그래픽은 자바스크립트 D3를 활용해 제작됐습니다. 티스토리에선 연동이 안 되네요. 흠. 방법 혹시 아시는 분? 

R놀이 - 워드클라우드로 몸풀기

play with data

일년 전 요맘때만 해도 "R을 써야 데이터 어쩌고들이 가능하다"는 말을 귀에 못이 박히도록 들었습니다. 당시엔 바빠서 못했지만. 

그래도 일단 설치는 해뒀더랬습니다. http://www.r-project-org 로 들어가 CRAN 에서 한국어 버전을 자신의 운영체제에 맞게 다운받으면 됩니다. 저는 맥순이니까 OS 버전으로 받았지요. 

이후 책도 사두었습니다. 훗날 벌어진 일입니다만, 우리 연구실 사람들은 제가 이 책을 산 걸 보고 "역시 뭘좀 안다"며 감탄하더군요. (사실 새 책 그 상태 그대로인데 말입...) 암튼 얼핏 봐도 정말 제가 원하는 걸 다 알려줄 것 같은 목차와 글자들이 눈에 들어왔습니다. 이제부터 꼼꼼하게 보려고요. 



그렇게 R에 대한 모든 것을 묵혀둔 지 근 반 년이 지났지요. 그간 파이썬과 자바스크립트, 각종 통계와 수학에 몰두하느라 R 자체를 잊고 살았더랬습니다. 서론이 긴데, 결론적으로 오늘은 폭설과 강추위로 인해 세베리아(이 블로그에서 자주 등장할 말입니다. 세종+시베리아의 합성어지요...)에 고립된 기념으로, 또 노트북도 연구실에 있고, 또 위의 저 책도 연구실에 있는데다가, 또 마침 문재인 더민주 대표가 신년기자회견도 한 기념으로다가! 제 맥을 가지고 다룰 수 있는 간단한 워드 클라우드 작성 및 몇 가지 분석을 해보려고 합니다. (후앙) 책도 없고 하니 인터넷 이곳 저곳의 힘을 빌렸지요. 

일단 워드클라우드를 만들려면 한국어 텍스트를 쪼개야겠지요. 그런데 말입니다. 한국어 자체를 분석하기는 참 까다롭습니다. 하지만 어디선가(전희원님께서 개발하셨다고 합니다 http://konlpy.org/ko/v0.4.0/references ) 감사하게도 한국어 자연어 처리가 가능한 KoNLP를 마련해주신 덕에 이렇게 분석이 쉬워졌습니다. 아 정말 감사드립니다. 이외에도 꼬꼬마, KoNLPy 등 각종 프로그램에서 돌아가는 한국어 형태소 분석기가 있지요. 


아, 이게 왜 필요하느냐면 말입니다. (간단 설명)

글 하나를 큰 부분에서부터 좁혀 들어가봅시다. 큰 글 하나 -> 여러개의 문장 -> 문장을 구성하는 요소들이 있을테고, 이 요소 안에서도 각각의 조각들은 제 역할들을 가지고 있답니다. 이를테면, '사과를' 이라는 요소가 있다면, '사과+를' 이 되는 것이지요. 사과는 아시다시피 명사, 를은 목적어를 받쳐주는 조사지요. 요 쪼그만 조각들을 형태소라고 합니다. 전 불문과를 나온 관계로 이걸 morpheme으로 배웠지요. (영어 단어로도 같아요!) 

그런데 이놈의 형태소 분석이 말입니다. 영어는 쉽고 한국어는 어렵습니다. 왜냐면, 영어를 보시면 다들 띄어쓰기로 잘 분리가 돼있죠. 이를테면, you are such a good girl. 이라는 문장이 있을 때 각각의 morpheme들이 제 할 일들을 잘 하고 있구나, 하는 걸 알 수 있습니다. 그런데, 한국어는 보시다시피 글자들이 사각형 형태로 모두 뭉쳐져있지요. ㄱㅏㄴㅏㅊㅗㅋㅗㄹㅔㅅ 이런 식으로 쓰지 않는다는 겁니다. 방금 쓴 '겁니다' 같은 것은 '것+입니다' 인데 의존명사인 것에 ㅂ을 붙여버리는 경우도 있죠. 

대개의 경우 이런 한계를 하나의 엄청나게 큰 말뭉치(나중에 언어분석에서 보게 되겠지만, 브라운코퍼스(browncorpus)같은 걸 일컫습니다)와 비교해 얼마만큼의 확률로 "이건 명사일거야, 이건 동사일걸?"이라며 판단해 풀어나간답니다. 영어에선 위에 말한 코퍼스들이 저런 역할을 하고, 한국어에도 세종코퍼스와 같은 사전들이 있지요. 

그나마 형태소 분석이나 가능한 편입니다. 통사론(문장의 구조에서 접근하는 방식, syntax)으로 한국어를 분석하긴 쉽지 않습니다. 따라서 이 모든 어려움을 극복하고 한국어 자연어 처리 형태소 분석기를 만들어주신 분들께 감사드릴 따름이지요. 물론 더더더 나아져야겠지만 말입니다. (학계가 SCI논문에만 집착하면 한국어의 분석은 날로 요원해질 것입니다 ㅠㅠ) 요즘은 Semantic 즉 의미론적인 부분에서의 연구가 많이 이어지고 있지요. 이런 관련 연구 얘긴 다음에 차차 하기로. 


말이 길어지니 일단 R을 켜서 Console 이라는 곳에 요 명령어들을 쳐서 패키지들(기능꾸러미!)을 설치토록 합니다. 

> install.packages("KoNLP")    

> install.packages("wordcloud")

> install.packages("RcolorBrewer") 

첫번째는 아시다시피 "글은 이렇게 쪼개고, 이녀석은 명사고, 이녀석은 동사야!" 라고 알려줄 KoNLP 꾸러미, 두번째는 워드클라우드를 만들어주는 패키지, 세번째는 R 프로그램에서 앞으로도 누차 쓰일 색채 팔레트입니다. 참고로 KoNLP를 깔 때 Java를 깔라는 말이 나올 수도 있습니다. 그럴땐 주저없이 깔면 됩니다.

이 친구들을 깔았다면, 모두 불러야겠지요. 

> library(KoNLP)

> library(wordcloud)    여기까지만 해도 아래 RColorBrewer은 자동으로 불러집니다.

> library(RColorBrewer)

위에서만 " "를 써줄 뿐 여기선 안 써도 된답니다. 


참.

미리 대통령 연설문 등 몇 가지를 txt 파일로 저장해둡니다. 맥에서 어떻게 txt 저장을 하느냐는 분들도 많은데요(왜냐면, 텍스트입력기라는 기본 프로그램은 확장자가 rtf거든요) 저는 sublime text 2 ( http://www.sublimetext.com/ )라는 프로그램을 쓰고 있는지라, 거기에 붙여넣고 그냥 txt로 저장했답니다. 여러 코딩용 프로그램 써봤지만, 전 이게 가장 편하더라고요. (파이썬 쓸 땐 종종 ipython notebook도 쓰고, xcode 프로그램도 쓸 때가 있습니다마는) 무엇보다 폰트 색깔이 예뻐용(...)


이렇게 저장해둔 txt 파일을 불러와야죠. 저는 걍 홈에다가 갖다 박아놨으므로(안 좋은 습관이라지만...) 홈에서 모두 불러옵니다. 


> f <- file("/Users/Home/park.txt", blocking=F)

> txtLines <- readLines(f)

f라는 이름으로 파일을 불러온 뒤에, 이 f를 계속 부려먹습니다. 요 f를 라인 바이 라인으로 읽어들이거라! 그럼 그것은 txtlines라고 명명하겠다! 라고 선언을 하지요. *(r에선 <- 이런 화살표를 참 많이 씁니다.)


워드 클라우드 특성상 워드 즉 단어들을 다루지요. 아무래도 명사형을 모조리 모아야할 듯 합니다. 


> nouns <- sapply(txtLines, extractNoun, USE.NAMES = F)

f를 좀 정제한 txtLines에서 Noun을 extract하라는 것이지요. 그리고 Names를 쓰는 것은 False 값을 줍니다. 

어떻게 돌아가고 있는지 궁금하면,

> nouns         를 쳐보면 텍스트에서의 명사들만 쭈루룩 정렬됩니다. 이 nouns만 다시 추려서 새 파일로 만들어볼게요. 


> undata=unlist(nouns)

중복된 애들을 빼고 각각 몇 개씩 있는지 한 번 볼까요 

> wordcount <- table(undata)

> length(wordcount)

이걸 내림차순으로 하면

> sort(wordcount, decreasing = T)

오름차순으로 하고 싶다면 decreasing=F 로 하면 됩니다. 


일단 전 여기까지 모두 4개의 파일을 각각 풀어 모아두었죠. 다 어디 쓸 데가 있어서(...)



워드클라우드를 만듭니다. 그 전에 아까 그 Rcolorbrewer 기억나시나요. 

무슨 색이 있을까 궁금하니까, 일단 모든 brewer 색을 보겠습니다.

> display.brewer.all()


아아 예쁜 색이 무척 많아요! 전 이 가운데 음 어떤 팔레트를 쓸까 고민하다가, Pastel1을 골랐답니다.

> pal <- brewer.pal(9, "Pastel1")

앞에 있는 숫자 9는 내가 쓸만큼의 색깔을 뜻해요. 저는 제가 쓸 팔레트에 들어있는 색상의 색깔 모두를 쓸거라 9를 써뒀지요. > pal   이라고 치면 [1] "#FBB4AE" "#B3CDE3" "#CCEBC5" "#DECBE4" "#FED9A6" "#FFFFCC" "#E5D8BD" "#FDDAEC" "#F2F2F2"    이렇게 제가 쓸 색채들이 쭉 나열된답니다. 


색채와 관련해서도 하고 싶은 말이 많은데. 음, 일단 컴퓨터상 색채는 RGB를 중심으로 하고, 또 16진법으로도 표현할 수 있지요. 관련해선 추후 포스팅을 또 하기로.... (한 뒤에 아래에 링크 걸어야겠네요. 호홋)


그리고 드디어, 대망의, 워드클라우드를 만들어봅니다!!!

근데 전 개인적으로 '것', '등'이라는 글자가 너무 많이 나오는 게 싫습니다. (그분은 정말 '것'이라는 의존 명사를 참 많이 쓰시더군요) 따라서 모든 단어는 2자 이상일 수 있도록 함수를 하나 설정해보겠습니다. 이를테면 이런 식이지요. 

> data= Filter(function(x){nchar(x)>=2}, undata)

> wordcount1 <- table(data)

이렇게 해야 두 글자 이상인 단어만 모인 워드카운트 뭉치가 생성됩니다.


> wordcloud(names(wordcount1), freq = wordcount1, scale=c(7,1), rot.per=0.25, min.freq=1, random.order=F, random.color=T, colors=pal)

설명하자면, wordcount 수만큼 frequency(빈도)를 확인해라, 그리고 scale(폰트의 크기)은 최고 7픽셀에서, 제일 작은건 1픽셀까지만. rotation되는 단어의 빈도는 0.25정도로 하고, 등장하는 단어의 가장 작은 빈도 수는 1로, 빈도가 가장 큰 단어를 중앙에 두도록 하기 위해 random order는 False 값을 줍니다. 컬러는 맘대로 해도 좋으니 True 값을, 대신 그 컬러 팔레트는 위에 정한 pal 로 쓰렴!   이렇게 해석이 되는 겁니다. 


아 그런데 이게 무슨 일입니까. 


흐린 건 둘째 치더라도 한글이 즌혀 나오지 않습니다. ('ㅅ')ㅗ

이럴땐 언어 코드가 맞지 않는 경우가 대부분이라 하더이다. 따라서 저는 다시 해결 방법을 찾아봅니다. 제 컴은 맥이니 알아서 UTF-8으로 잘 설정이 돼있고, R Studio 프로그램에서 Tools-GlobalOptions-Default Text encoding:도 utf-8으로 돼있습니다. 찾아보니 이건 Plot을 extract 할 때 pdf의 encoding이 UTF-8으로 돼 있어야 한다는 군요. 이리보고 저리봐도 잘 풀리지 않고 있답니다. ㅠ 아마 어떤 컴퓨터에선가는 다 잘 될 듯.

몸풀기용 워드클라우드 치고 꽤 오랜 시간 매달렸더니 힘이 드네요. 곧 다시 살펴보도록 하지요. 답 아시는 분은 아래 댓글 좀 달아주세요. 흑. 


아무튼, 연구실 윈도기반 컴퓨터를 써서 다시 만든 결과는 다음과 같네요. (너무 흐려서 pal=set1으로 다시 설정했어요)

그 분(1월 13일 신년 기자회견)은 '우리' '국민' '경제' '일자리' 요런 단어를 많이 언급했군요. 

내친김에 다른 당대표들것도 좀 추려볼까요. 

일단 김무성 새누리당 대표(1월 18일 신년기자회견)는 개혁과 국민, 국회 등에 대한 얘길 많이 했네요.

얼핏 보면 앞 워드 클라우드와 다소 비슷한 느낌이 없지 않은 듯한 그런 느낌적인 느낌.... 요건 잠시 뒤 다른 포스팅에서 세부적으로 풀어가겠습니당.

더불어민주당 문재인 대표(1월 19일 신년 기자회견)는 국민과 경제, 우리, 박근혜 등의 단어를 많이 언급했습니다. 경제 보다는 정치라는 단어가 더 많이 보이고요.

얼핏 보면 뭔가 대통령에 대해 참 많은 이야기를 한 듯 합니다.

그렇다면, (이건 신년기자회견문은 아니지만) 국민의당 인재영입위원장의 지난해 12월 27일 신당창당 기자회견문을 볼까요?

국민, 대한, 사람 등도 많지만 특히 새정치를 하겠다고 나온만큼 정치를 많이 언급했군요.

자, 여기서 더 나아간 분석은 곧 업로드됩니다.