• 데이터분석 »
  • 페이스북 포스트 워드클라우로 돌아보는 2016년

페이스북 포스트 워드클라우로 돌아보는 2016년

이런 워드클라우드를 그려보는건 거의 4년만인거 같다. KoNLP 초기 버전을 개발하고 나서 가장 먼저 했던 일이 워드클라우드를 그려보는 일이었고, 최근엔 이 워드클라우드를 그리는게 R을 배울때 'hello world!'격의 예제가 되어 버렸다.

필자가 가끔씩 페이스북 API로 이런 저런 분석작업을 하는데, 연말이고 하니 1년간 페이스북에 올린 포스트를 기반으로 워드클라우드를 그리는 작업을 해봤다.

올해 wordcloud2 패키지까지 나와줘서 아주 예쁘게 워드클라우드가 그려진다.

library(Rfacebook)
library(KoNLP)
library(data.table)
library(wordcloud2)
#token을 얻는 방법은 "https://developers.facebook.com/tools/explorer"에서
fb_page <- getPage(page="me", token=token, n=2000, since='2016/01/01', until='2016/12/15')


commentslist <- list()
for(id in fb_page$id){
  post <- data.table(getPost(post=id, token=token, comments = F,likes=F))
  #print(id)
  commentslist[[id]] <- post
}

dtlist <- sapply(commentslist, function(x){x$V1})


comm <- rbindlist(dtlist)
#98만 형태소 사전...
useNIADic()

#문장에 NA가 포함된 경우 특정 환경에서 에러가 생길 수 있다. 
#NA를 직접 제거해 주던지, devtools::install_github('haven-jeon/KoNLP') 
#명령어로 보완된 패키지를 설치해 사용한다. 
nouns <- extractNoun(comm$message)

nouns_norm <- Map(function(x){if(!is.na(x) && is.ascii(x)) toupper(x) else x},unlist(nouns))

cnts <- table(unlist(nouns_norm))

cnts_ <- cnts[cnts > 2 & nchar(names(cnts)) > 1]


wordcloud2(data.frame(word=names(cnts_), freq=as.numeric(cnts_)),  color = "random-light", backgroundColor = "grey", shape="star")