프로그래밍/데이터분석

R 워드 클라우드(word cloud) 분석 결과 만들기

&+&& 2015. 9. 20. 13:30

이번에는 워드 클라우드를 만들어 보는 예제입니다.



기본 데이터는 위키피디아의 클라우드 컴퓨팅에 대한 내용을 사용했습니다.


관련링크 : https://ko.wikipedia.org/wiki/클라우드_컴퓨팅


위 링크에서 텍스트 부분만 긁어서 기본 데이터 txt 파일을 만든 뒤에

C:\rwork라는 폴더에 cloudcomputing.txt라는 이름으로 저장합니다.


여기까지 준비가 되었으면 예제를 실습할 준비가 완료되었습니다.



▶ 작업 디렉토리 지정 / 패키지 설치 / library 로딩


> setwd("c:\\rwork")             #작업 디렉토리 지정


> install.packages("KoNLP")      #KoNLP 패키지 설치

> install.packages("wordcloud")  #wordcloud 패키지 설치


> library(KoNLP)                 #KoNLP 패키지 로딩

> library(wordcloud)             #wordcloud 패키지 로딩


> useSejongDic()                 #한글 사전 사용




▶ 텍스트파일 읽기 / 명사만 저장 / 데이터 확인


> data1 <- readLines("cloudcomputing.txt")     #텍스트파일을 읽어서 data1 변수에 저장


> data1                          #data1에 저장된 내용 확인


> data2 <- sapply(data1,extractNoun,USE.NAMES = F)  # data1에서 명사만 data2에 저장


> data2                          #data2에 저장된 내용 확인


data1, data2의 내용은 어떻게 문서를 긁어왔느냐에 따라서 제가 작업한 내용과 조금 다를 수도 있습니다.


정확한 작업을 위해서 중간중간 데이터를 확인해 주시기 바랍니다.



아래는 작업과 관련한 R Studio 캡처 화면입니다.



Environment 창에 변수 할당 내역이 표시되고 하단 Files 창에 보시면 현재 작업 폴더와 폴더 내의 파일들을 확인할 수 있습니다.



▶ 두글자 이상 단어 필터링 / 숫자, 영문, 괄호 제거


> data3 <- unlist(data2)                                                #두글자 이상 필터링을 위해 unlist작업하여 저장


> data3 <- Filter(function(x) {nchar(x) >= 2}, data3)   # 두 글자 이상 단어만 저장


> data3                                                             #data2에 저장된 내용 확인, 변경된 걸 확인하실 수 있을 겁니다.


> data3 <- gsub("\\d+", "", data3)              #숫자 제외, 정규식


> data3 <- gsub("\\(", "", data3)                 # (괄호 제외


> data3 <- gsub("\\)", "", data3)                 # )괄호 제외


> data3 <- gsub("[A-Za-z]", "", data3)            # 영문 제외, 정규식


gsub이라는 함수는 특정 문자열을 찾아서 치환합니다.(이건 예제이기 때문에 단어부분 제거는 생략했는데 실제로 데이터 분석을 하신다면 데이터를 확인하면서 제외할 부분을 더 작업해 주셔야 합니다.)


숫자와 영문을 찾아서 제거하는 데에는 정규식이 사용되었습니다.


정규식에 대해서는 간단한 내용만 다시 다뤄보겠습니다.




▶ 파일로 분석결과 보내기 /  공백 제거 / 단어별 빈도 확인


> write(unlist(data3), "cloudcomputing2.txt")      #data3를 txt파일로 저장


> data4 <- read.table("cloudcomputing2.txt")      #read.table로 읽으면서 공백 제거


> wordcount <- table(data4)                                  # 단어별 count


> wordcount                                                           # 단어별 count 확인


공백을 제거하는 방법으로는 txt 파일로 그때까지의 분석 결과를 저장한 후에 read.table로 읽어들이면서 공백을 제거하는 방법을 사용했습니다.

data4의 경우 공백이 제거된 데이터이고 이 상태에서 단어별 빈도인 wordcount를 파악합니다.



▶ 컬러 설정 /  워드 클라우드 출력


> library(RColorBrewer)                           #컬러 출력 라이브러리 로딩


> palete <- brewer.pal(9, "Set1")            # 글자 색깔 지정


> wordcloud(names(wordcount), freq=wordcount, scale=c(5,1),rot.per = 0.1,

  + min.freq=1,random.order=F, color=T, colors=palete)


wordcount 분석 결과를 바탕으로 실제 출력을 하는 부분입니다.


출력 부분에서는 여러가지 변수 부분을 변경하면서 실제 결과가 어떻게 나오는지 확인해 보세요.



 아래는 출력 부분 캡처

    몇 가지 잘못된 부분 보이시죠?(%와, 제, 상의 등)

    그래서 중간중간 변수명+엔터로 작업내용을 잘 확인해 주셔야 합니다.







》 다음글 예고 : R 기초문법