R - 텍스트 마이닝

데이터 마이닝을 시작하며

Posted by Yan on March 27, 2021

데이터 분석 방법

단어 빈도수 분석

예시 )

The Largest Vocabulary in hip hop

  • 셰익스피어의 어휘와 미국 유명 힙합 가수들의 랩을 한 DB에 넣고 얼마나 많은 어휘를 사용했는지 비교

  • 꽤 많은 가수들이 셰익스피어보다 많은 어휘를 사용하고, 모비딕 보다는 적은 어휘를 사용한다는 것을 알아냄

  • 동부 출신 래퍼가 서부 출신 래퍼보다 많은 어휘를 사용한다는 것을 알아냄

텍스트 마이닝의 시작

  1. 텍스트 전처리
  • 언어의 오류, 이모티콘, url, 빈칸 등 불필요한 요소 제거

  • R은 통계 분석을 위한 프로그램으로, 아래와 같은 기능이 있음

텍스트 전처리 과정 R의 기능

  1. 연산

  2. 백터 생성

    • 백터 : 하나 이상의 값으로 구성된 데이터 구조. 일련의 숫자, 문자 도는 논리 값으로 이루어진 것

    • 백터 만들기 : 일련의 숙자, 정수, 문자, 불린

    c(1,3,5) 각 요소 1 3 5를 백터로 결합

    1:5 1 부터 5 까지의 정수 1 2 3 4 5

    seq(1, 5, by=2) 1부터 5까지 2씩 증가하는 정수(by=2는 parameter) -> 1,3,5

    rep(1:5, times=2) 1부터 5까지 2번 반복 (times = parameter) -> 1 2 3 4 5 1 2 3 4 5

    rep(1:5, each=2) 1부터 5까지 2번씩 찍기 -> 1 1 2 2 3 3 4 4 5 5

  3. 객체에 할당

    a <- 10 a에 10을 할당

    b <- "text" b에 문자 text를 할당

    fruits <- c("apple", "mango", "apple") 문자열로 이루어진 벡터 할당

  4. 함수

    sort(fruits) 알파벳 순으로 정렬하여 값 반환 -> apple, apple, mango

    table(fruits) 객체를 구성하는 값의 개수를 반환 -> apple2, mango1

    unique(fruits) 객체를 구성하는 값들의 고유값 -> apple, mango

    print(fruits) 문자열 데이터는 문자 백터가 될 수 있다. -> “apple” “apple” “mango”

    paste(fruits, collapse=",") 문자열을 하나로 합쳐서 보여줌 -> apple,apple,mango

  5. 문자의 처리

    주로 문자열을 특정 단위로 쪼개는 작업이 많이 사용됨

    문단 -> 문장 -> 단어

    strsplit 문자열을 기준에 따라 쪼갬. collapse에서 빈칸 기준으로 나누기 힘들었던 부분이 보완됨

  6. 텍스트 분석

    nchar("big data") 문자열의 문자수를 계산해주는 명령 -> 8 (공백, 기호 포함)

    strsplit 문장을 단어 단위로 쪼개기 위해 사용하는 함수 sent1_split <- strsplit(sent1, split=" ") -> sent1_split은 sent1에서 분할된 단어의 백터 목록을 list객체로 변환해 출력

    snet1_split은 list이기 때문에 결과값을 백터로 출력하려면

    • sent1_split[[1]]같은 형식으로 첫번째 백터를 출력할 수 있음
    • sent1_split[[1][5]]같은 형식으로 첫번째 백터에서 5번째 요소를 출력할 수 있음

    paste 문자열의 결과값들을 어떤 기준에 의해 다시 합칠 때 사용하는 함수

    • sent2 <- paste(sent1_split[[1]], collapse=" ") 단어 요소들이 공백으로 구분된 문장으로 결합

    tolower(), toupper() 모든 문자를 소문자로, 대문자로 변환 (R에서는 대소문자 구분 확실)

    ? 도움말 참고 ?strsplit strsplit에 대한 도움말 볼 수 있음

    help.search("split"), help(pachage = "stringr")같이 help를 사용할 수도 있음


참고자료

빅데이터와 텍스트마이닝