텍스트 마이닝

텍스트 마이닝 : 문자로 딘 데이터에서 가치 있는 정보를 얻어 내는 분석 기법

힙합가사 텍스트 마이닝

준비하기

  1. 패키지 준비
    • KoNLP : 한글 자연어 분석 패키지
    • KoNLP를 사용하기 위해서는 Java가 설치되어 있어야 한다
  2. KoNLP를 위한 패키지 설치
    • KoNLP를 사용하기 위해서는 rJava, memoise가 설치되어 있어야 한다.
    • 두 패키지를 설치 한 후 KoNLP를 설치
       install.packages("rJava")
       install.packages("memoise")
       install.packages("KoNLP")
      
  3. 패키지 로드

     library(KoNLP)
     library(dplyr)
    
  4. 사전 설정
    • KoNLP에서 지원하는 단어는 98만개 정도
    • 형태소 분석을 위해 서전을 이용하도록 설정한다 ```r useNIADic()

    #이 메시지가 나와야 한다 Backup was just finished! 983012 words dictionary was built. ```

  5. 데이터 불러오기
    • readLines()로 데이터를 불러온다
       txt <- readLines("hiphop.txt")
      
  6. 특수문자 제거
    • 문장에 특수문자가 포함되어 있으면 오류가 발생할 수 있기 때문에 stringr의 str_replace_all()을 이용해 특수문자를 빈칸으로 처리한다
     install.packages("stringr")
     library(stringr)
    
     # 특수문자를 공백으로 처리
     txt <- str_replace_all(txt, "\\W", " ")
    

가장 많이 사용된 단어 알아보기

  1. 명사 추출 : KoNLP - extractNoun()

     extractNoun("대한민국의 영토는 한반도와 그 부속도서로 한다")
    
     [1] "대한민국" "영토"     "한반도"   "부속도서" "한"
    
  2. 가사에서 명사 추출 후 빈도표를 만들기

     # 가사에서 명사 추출
     nouns <- extractNoun(txt)
    
     # 추출한 명사 list를 문자열 벡터로 변환 후 빈도표 생성
     wordcount <- table(unlist(nouns))
    
     # 데이터 프레임으로 변환
     df_word <- as.data.frame(wordcount, stringsAsFactors = F)
    
     # 변수명 설정
     df_word <- rename(df_word,
                     word = Var1,
                     freq = Freq)
    
  3. 자주 사용된 단어 빈도표 만들기
    • 두글자 이상 단어 추출
       df_word <- filter(df_word, nchar(word) >=2 )
      
  4. 상위 20개 단어 추출

     top_20 <- df_word %>%
         arrange(desc(freq)) %>%
         head(20)
    

워드 클라우드 만들기

워드 클라우드 : 단어의 빈도를 구름 모양으로 표현한 그래프

  1. 패키지 준비
    • wordcloud : 워드 클라우드 만들 수 있다
    • RColorBrewer : 글자 색깔을 표현, R내장
     install.packages("wordcloud")
    
     library(wordcloud)
     library(RColorBrewer)
    
  2. 단어 색상 목록 만들기
    • RColorBrewer - brewer.pal() : 색상 코드 목록을 만든다
       pal <- brewer.pal(8,"Dark2")
      
    • Dark2 색상 목록에서 8개 색상 추출
  3. 난수 고정하기
    • wordcloud는 실행할 때마다 다른 모양의 워드 클라우드를 만들어 낸다
    • 항상 동일한 워드 클라우드가 생성되도록 난수 고정
       set.seed(1234)
      
  4. 워드 클라우드 만들기

     wordcloud(words = df_word$word, #단어
             freq = df_word$freq,    #빈도
             min.freq = 2,           #최소 단어 빈도
             max.words = 200,        #표현 단어 수
             random.order = F,       #고빈도 단어 중앙 배치
             rot.per = .1,           #회전 단어 비율
             scale = c(4, 0.3),      #단어 크기 범위
             colors = pal)           #색상 목록
    

    chp10-1
    많이 사용된 단어일 수록 글자가 크고 가운데에 배치되며, 덜 사용된 단어일수록 글자가 작고 바깥쪽에 배치되는 형태로 구성되어 있다.
    따라서 어떤 단어가 많이 사용됐는지 직관적으로 알 수 있다.

  5. 단어 색상 바꾸기
    • 단어 색상 목록을 이용하여 단어 색을 바꿀 수 있다.
       pal <- brewer.pal(9,"Blues")[5:9]
      

      chp10-2

카테고리:

업데이트: