ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [R] 2. R 실전 예제 Part 1
    CSE/R 2015. 7. 13. 17:54

    Chapter 2. R 실전 예제 

     1. 워드 클라우드(Word Cloud)

      - 비정형 데이터를 분석하여 워드 클라우드를 생성하겠습니다.

      - 각각의 데이터 Set에 대해서는 자신이 워드 클라우드를 생성할 목적인 데이터로 진행하시면 재밌으리라 생각됩니다.

      - 혹여 없는 경우 아래 첨부파일을 통해 진행하세요.



    exo_data.txt



      - 아래 명령어를 입력하여 작업 디렉토리를 지정합니다.(r_temp 폴더를 만들어 두신다음 입력하세요. r_temp에 파일을 저장합니다.)


      setwd("C:\\r_temp")



      - 다음으로 필요한 필요한 패키지에 대해서 설치 한 후 R에 Loading 하겠습니다.


      install.packages("KoNLP")

      install.packages("wordcloud")

      library(KoNLP)

      library(wordcloud)

      useSejongDic()



     



     



      - 다음은 클라우드 처리할 데이터를 변수로 읽어들입니다.



      data1 <- readLines("exo_data.txt")

      data1





      - 데이터 중에서 명사만 골라낸 후 nouns 변수에 할당합니다.



      data2 <- sapply(data1, extractNoun, USE.NAMES=F)

      data2








      - 추출된 명사를 30개 만 출력해서 확인합니다.


      head(unlist(data2), 30)







       - 추출된 데이터에 보시면 날짜, 시간 위주와 한 글자인 것들이 있습니다.

       - 위와 같은 데이터를 가려내기 위해 filter를 이용해서 다시 걸러내겠습니다.

       - 아래 예제는 2개 이상의 글자만 걸러내는 예제입니다.   


      data3 <- unlist(data2)

      data3 <- Filter(function(x) {nchar(x) >= 2}, data3)






       - 다음으로 원하지 않는 내용을 걸러내기 위한 gsub 함수를 이용하겠습니다.

       - 사용법은 아래와 같습니다.


        gsub("변경전 글자", "변경후 글자", "원본데이터")




       - 그럼 모든 숫자를 없애고, 여러 단어들을 없애서 걸러내겠습니다.

       - 먼저 숫자를 모두 없애는 명령어 입니다.


       data3 <- gsub("\\d+","", data3)             

      





       - 다음으로 제가 생각하기에 필요없는 단어들을 걸러내겠습니다.


        data3 <- gsub("palpit", "", data3)

        data3 <- gsub("log", "", data3)

        data3 <- gsub(" ", "", data3)
        data3 <- gsub("-", "", data3)
        data3 <- gsub(")", "", data3)





       - 이렇게 걸러낸 데이터를 write 해서 txt 파일로 내보내겠습니다.

        write(unlist(data3), "exo_filtered.txt")






       - 수정된 파일을 read.table 명령으로 다시 불러들입니다. 공백이 사라집니다.


        data4 <- read.table("exo_filtered.txt")




       - 화면에 출력하기 전에 결과를 확인해보겠습니다.


        nrow(data4)


      











       - 다음으로 단어들이 각각 몇 번 나왔는지 table 명령어로 정리해서 wordcount에 저장하겠습니다.


        wordcount <- table(data4)



       - 데이터가 많아서 보기 불편하다면, head와 sort 명령으로 정리 할 수 있습니다. 


        head(sort(wordcount, decreasing=T), 20)




       - 다음으로 Word Cloud 형태로 출력합니다.


        library(RColorBrewer)

        palete <- brewer.pal(9, "Set3")

        wordcloud(names(wordcount), freq=wordcount, scale=c(5, 1), rot.per=0.25,min.freq=1,

        random.order=F, random.color=T, colors=palete)

        legend(0.3, 1, "마이 블로그 랭킹 워드 ",cex=0.8, fill=NA, border=NA, bg="white",

        text.col="red", text.font=2, box.col="red")


        savePlot("exo.png", type="png")




        자 이렇게 해서 아래와 같은 word cloud가 완성되었습니다.









    이렇게 해서 word cloud 예제를 해보았습니다.



    다음 장에서는 그래프로 나타내기 위한 예제를 진행하도록 하겠습니다.





    * 이 포스트는 서적 'R라뷰: R을 활용한 데이터 분석 입문편'을 참고하여 작성한 포스트입니다.

    'CSE > R' 카테고리의 다른 글

    [R] 3. R 실전 예제 Part 2  (0) 2015.07.13
    [R] 1. R 설치 및 구동  (0) 2015.07.13

    댓글

Designed by Tistory.