[데이터 시각화] word cloud
안녕하세요. 은행 IT운영부 이지성과장입니다.
원래는 "의사결정나무"를 다음 포스팅으로 다루려고 했으나, 조금 가벼운 주제를 먼저 소개해 드리려 합니다.
그 전에 "데이터 시각화"에 대한 이야기를 좀 해보려 합니다.
인간은 매우 시각적인 동물이라고 합니다. 인간은 자연적으로 시각적 입력을 다른 어떤 방법보다도 빠르게 인지 한다고 합니다. 그만큼 우리에게 시각이 중요하다는 의미인데, 보통 사람이 감각기관을 통해 획득하는 정보의 80% 이상이 시각을 통해 얻어진다고 합니다. 이런 근거로 우리에게 왜 데이터 시각화가 효과적이고, 각종 보고서에서 왜 사용되는지 이해가 되실겁니다.
사실 저도 중간관리자로서 말로 장황하게 설명하는 보고서 보다는, 그래프로 한눈에 보이는 보고서를 봤을 때, "아, 이 보고서가 더 명확하고 이해하기가 쉽구나..." 하고 느낀적이 많습니다. (사실 보기 좋은 떡이 먹기도 좋다고 ....ㅎㅎ -0-;;)
한편, 공공 기관에서도 데이터를 시각화하여 유저들에게 제공하려는 시도들이 많고, 최근에는 최근 데이터 활용에 대한 관심이 매우 높은 금융권에서 데이터 시각화 기술을 적용한 데이터 분석 플랫폼을 조직 내에 구축하고 있습니다. 신한은행은 임원진이 경영 관련 빅데이터를 시각화 자료로 실시간 모니터링하고, 의사결정 할 수 있는 ‘빅데이터 워룸’을 만들었습니다. KEB하나은행도 은행 핵심 경영지표, 조직 단위별 영업 실적 모니터링, 고객 특성에 따른 비정형 분석 등 은행 내부 데이터를 숫자가 아닌 시각화 형태로 확인할 수 있는 BI ‘하나 빅 인사이트’를 구축했습니다.
(KB도 이런 프로젝트가 시도되고 있는지??? 알고 계시는분~~~은행에 태블로를 개발하는 조직이 있다고는 들었습니다.)
오늘 코딩해 볼 주제는 너무나도 유명한 word cloud 기법인데, 아래와 같은 사진 한장 정도는 신문이던, 웹사이트 건 어디서든 한번쯤은 보셨으리라 생각됩니다. 전체 문장에서 많이 사용된 단어별로 단어의 폰트를 크게 보여주어, 화자가 어떤 화제를 주로 이야기 하고 있는지 시각화 하는 너무나도 기본적인 시각화 기법이라고 할 수 있습니다.
그리하여 이번엔 데이터 시각화의 일환으로, 우리 회사의 CEO 레터를 word cloud로 시각화 해 보았습니다.
오늘 코딩에 사용 되는 텍스트 데이터는 여러분께서도 모두 사내 메일로 받은, 지난 1월과 2월에 CEO 께서 직접 보내신 CEO letter의 내용으로 하였습니다.
그런데..OTL, 텍스트 전처리를 하지 않아 "하시"와 같은 의미없는 단어들이 보이네요. 텍스트 데이터를 다루는 중요한 요소 중에 하나가 전처리 입니다. 이것에 대한 내용은 별도로 다루도로 하겠습니다.
word cloud로 시각화 한 결과 CEO께서 디지털 이라는 단어를 가장 많이 사용하셨음을 볼 수 있습니다.
2월 letter
직원 여러분 안녕하십니까 ?
2020년 한 해가 시작하고 벌써 1개월이 지나갔습니다.
다시 한번 올해 디지털/IT전문회사로 전환하는 원년으로 만들겠다는 마음을 다지면서,
직원분들께 회사의 주요 추진과제와 변화사항에 대해 공유 드리고자 합니다.
- 차세대와 주요 디지털 사업
The K 차세대 선 오픈 (2월3일)후 빠르게 안정화되고 있습니다.
(생략...)
1월 letter
직원 여러분 안녕하십니까 ?
경자년 신년사로 인사드린 바 있지만, 중요한 2020년을 맞는 첫달인 만큼 주요 추진과제와 변화사항에 대해서 공유드리고자 메일 드립니다
- 차세대와 주요 디지털 사업
유례를 찾기 어려운 대규모 시스템 교체 작업인, The K 콜센터 시스템 1단계 인프라 부문에 대해 ACS 센터, 상담센
(생략...)
R 코딩 (라인 by 라인으로 주석을 달아놓았습니다.)
#패키지설치
install.packages("wordcloud")
install.packages("KoNLP")
install.packages("RColorBrewer")
#라이브러리 호출
library(wordcloud)
library(KoNLP)
library(RColorBrewer)
#업로드 파일 경로 설정
setwd("C:/Users/etern")
#데이터 불러오기
data <- readLines("ceoletter_1.txt")
data2 <- readLines("ceoletter_2.txt")
#명사만 추출
data <- sapply(data, extractNoun, USE.NAMES = F)
data2 <- sapply(data2, extractNoun, USE.NAMES = F)
#명사를 list형태로 변환
data_unlist <- unlist(data)
data2_unlist <- unlist(data2)
#2글자 이상만
data_unlist_f <- Filter(function(x){nchar(x)>=2}, data_unlist)
data2_unlist_f <- Filter(function(x){nchar(x)>=2}, data2_unlist)
#많이 사용된 상위 50단어추출
wordcount1 <- table(data_unlist_f)
wordcount2 <- table(data2_unlist_f)
word_count_top1 <- head(sort(wordcount1, decreasing = T),50)
word_count_top2 <- head(sort(wordcount2, decreasing = T),50)
#wordcloud 색상설정
pal <- brewer.pal(7,"Set3")
#wordcloud 구현
wordcloud(words = names(word_count_top1),
freq = word_count_top1,
min.freq=5,
max.words = 30,
random.order = FALSE,
rot.per = 0.1,
scale=c(3,0.3),
colors = pal)
wordcloud(words = names(word_count_top2),
freq = word_count_top2,
min.freq=5,
max.words = 30,
random.order = FALSE,
rot.per = 0.1,
scale=c(3,0.3),
colors = pal)
깃허브 : https://github.com/jasonlee8318/R-programming/blob/master/wordcloud_practice.R
jasonlee8318/R-programming
R-programming. Contribute to jasonlee8318/R-programming development by creating an account on GitHub.
github.com
코로나 감염병이 아직도 잡히지 않고 있습니다. 코로나를 이겨내는 건강한 3월 되시기 바랍니다.
다음 주제로는 분류 알고리즘인 "의사결정나무"를 다룰 예정입니다.