ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 텍스트 시각화를 위한 라이브러리 wordcloud
    Data Analysis/R 패키지 2022. 11. 13. 17:14

    Table of Contents

    1. Introduction
    2. wordcloud 라이브러리
    3. Reference

     

    Introduction

     대용량 데이터의 발생과 함께 비정형 텍스트 데이터 역시 기하급수로 발생하고 있다. 이에 따라 다양한 영역에서 기술 동향 분석을 수행하기 위해 연구논문, 특허, SNS 등의 텍스트 데이터를 수집하여 분석하고자 한다. 이렇게 수집한 텍스트 데이터를 처리한 후 어떤 특징이 있는지 확인할 수 있는 시각화 방법이 있다. 이는 워드 클라우드인데,  이에 대한 설명은 https://jaydata.tistory.com/59에서 설명하고 있다. 다만, 해당 내용은 태블로를 활용하여 워드 클라우드를 하는 방법을 가이드 했으며, 이번 페이지에서는 R을 이용한 워드 클라우드 시각화에 대해 설명한다.

     

    wordcloud 라이브러리

    wordcloud 라이브러리는 디자인이 담긴 워드 클라우드를 구현하기 위해 제공하는 간단한 기능이 담겨있다. 다만, 워드 클라우드를 시각화하기 위해서는 텍스트 데이터를 수집해야 한다. 수집한 텍스트 데이터가 얼마나 많이 담겨 있는지 가공을 한 후 wordcloud() 함수를 이용하여 시각화가 가능하다. 아래 소스는 워드클라우드를 시각화하기 위해 영화 리뷰를 수집하고 이를 처리한 후 워드클라우드르 시각화하는 과정을 정리하였다.

    ## 데이터 수집
    library(rvest)
    library(httr)
    all.reviews = c()
    for(x in 1:100){
       url = paste("http://movie.naver.com/movie/bi/mi/pointWriteFormList.nhn?code=130850&type=after&isActualPointWriteExecute=false&isMileageSubscriptionAlready=false&isMileageSubscriptionReject=false&page=",
                   x,
                   sep="")
       htxt = read_html(url)
       comments = html_nodes(htxt,'div.score_reple')
       links = html_nodes(comments,'p')
       reviews = html_text(comments)
       all.reviews = c(all.reviews, reviews)
    }
    com = repair_encoding(all.reviews)
    
    ## 워드클라우드 시각화
    library(KoNLP)
    library(wordcloud)
    library(plyr)
    
    # 데이터 전처리
    com = gsub("신고", "", com)
    com = gsub("2016", "", com)
    com = gsub("02.", "", com)
    com = gsub("03.", "", com)
    com = gsub("04.", "", com)
    
    list = sapply(com, extractNoun, USE.NAMES=F)
    
    unlist = unlist(list)
    unlist = Filter(function(x){nchar(x)>2},
                   unlist)
    culist = count(unlist)
    
    # 워드클라우드 색상
    pal = brewer.pal(5,"Accent")
    pal = pal[-(1)]
    
    # 워드클라우드 시각화
    wordcloud(words = culist$x,
              freq = culist$freq,
              colors = pal,
              min.freq = 2,
              random.order = F)

     

    주토피아 영화에 대한 리뷰 텍스트 데이터를 수집하여 워드클라우드를 하면서 나온 말 중 나무늘보 캐릭터에 대한 내용이 눈에 띄게 나타나는 것을 확인할 수 있다. 이처럼 워드 클라우드를 활용하면 텍스트 안에서 어떤 내용의 말이 담겨 있는지 확인하는데 유리하기 때문에 이를 기술 동향 분석이나 민원 분석 등에 활용하곤 한다.

     

    Reference

    "Word Clouds", Ian Fellows, https://cran.r-project.org/web/packages/wordcloud/wordcloud.pdf

    "블록체인 뉴스기사에 대한 시회적 반응 분석", 이현상, 2021 한국경영정보학회 춘계통합학술대회

    댓글

Designed by Tistory.