ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [R] Do it R 텍스트마이닝_1
    데이터 분석/텍스트 분석 2022. 4. 11. 16:38

    출처 :

    Do it R 텍스트마이닝

    https://6u2ni.tistory.com/46

     

    텍스트 데이터의 전처리에 대해서 공부하였다.

     

    개요

     

    1. 원하는 문자를 제외하고 불필요한 문자를 제거

     

    2. 처리한 문자열 벡터를 데이터 분석에 용이하도록 tibble 구조로 변경

     

    3. 전처리한 데이터의 빈도를 보기 좋게 시각화

     

    + 폰트 변경

    + 파이프를 이용한 함수 연속 실행

     

    데이터는 'Do it R 텍스트마이닝' 저자 김영우님의 github에 있는 speech_park.txt를 이용하였다.

    출처 : github.com/yongwoos/Doit_textmining

    사용하는 패키지

    더보기
    library(stringr)
    library(dplyr)
    library(tidytext)
    library(ggplot2)

    글자 제거, 대체

    저는 한글과 숫자를 제외한 문자들을 모두 " ", 빈 공간으로 대체했습니다.

    text_park <- str_replace_all(raw_park, '[^가-힣0-9]', ' ') %>% str_squish() %>% as_tibble() 
    
    # str_replace_all 함수를 이용하여 [^가-힣0-9] 정규 표현식을 통해 가~힣, 
    #0~9에 포함되는 문자를 제외한 모든 문자를 선택하였고 " ", 빈칸으로 대체합니다.
    
    # str_squish 함수를 이용하여 연속된 공백이 사용되어진 것을 하나만 남겨줍니다.
    
    # as_tibble 함수를 이용하여 문자열 벡터를 tibble구조로 변경합니다.

    str_replace_all()

    str_replace-all 함수는 string, pattern, replacement 파라미터를 지정해서 함수를 실행할 수 있습니다.

    파라미터를 지정할 때 파라미터명을 생략하거나 입력하는 방법이 있는데 

    파라미터명을 생략할 경우 파라미터의 입력 순서를 통해 파라미터 적용되고,

     + 파라미터의 입력 순서 : string(적용할 문장), pattern(바꾸는 문자), replavement(대신 넣을 문자) 순서

    파라미터명을 입력할 경우 파라미터의 입력 순서와 상관없이 적용됩니다.

    txt <- "외모로!! 사람을 판단해서는 xyz 안된다!@#"
    
    # 파라미터명 입력
    
    str_replace_all(string = txt, pattern = "[^가-힣]", replacement = " ")
    ## "외모로   사람을 판단해서는     안된다   "
    str_replace_all(replacement = " ", string = txt, pattern = "[^가-힣]")
    ## "외모로   사람을 판단해서는     안된다   "
    
    # 파라미터명 생략
    
    str_replace_all(txt, "[^가-힣]", " ")
    ## "외모로   사람을 판단해서는     안된다   "
    str_replace_all("[^가-힣]", " ",txt)
    ## "[^가-힣]"

    토큰화

    토큰화란 말뭉치를 토큰 단위로 나누는 것을 의미한다. 토큰 단위로는 한 글자, 한 단어, 한 문장 등이 있다.

    token_park <- text_park %>% unnest_tokens(input = value,
                                              output = word,
                                              token = 'words')

    unnest_tokens()

    input, output, token 파라미터를 입력하여야 한다. input은 토큰화 하고자 하는 tibble 데이터를 입력받는 파라미터이다. output은 출력될 데이터의 열 이름을 정하는 파라미터이다. token은 토큰화를 진행할 토큰 단위를 설정하는 파라미터이다. 

     

     

    정렬 및 선별

    word_space <- token_park %>% 
      count(word, sort = T) %>% # word_space['word']의 등장하는 단어의 수를 세고 순서대로 정렬
      filter(str_count(word) > 1) %>% # # 2번 이상 사용된 것만 출력
      head(20) # 위에서 부터 20개만 저장

    시각화

    font_add_google(name = "Gamja Flower", family = "gamjaflower")
    showtext_auto()
    
    ggplot(word_space, aes(x = reorder(word, n), y = n)) +  
      geom_col() +
      coord_flip() +
      geom_text(aes(label = n), hjust = -0.3) +
      
      labs(title = "박근혜 대통령 출마 선언문 단어 빈도",
           x = NULL, y = NULL) +
      
      theme(title = element_text(size = 12),
            text = element_text(family = "gamjaflower"))  # 폰트 적용

    + reorder 함수는 그래프에서 정렬이 필요할 경우 사용합니다.

    + coord_flip 함수는 그래프의 막대를 가로로 출력하는 함수입니다.

    댓글

Designed by Tistory.