RStudio 설치

RStudio를 사용해 텍스트를 분석하기 위해선, 우선 R이 컴퓨터에 설치되어야 합니다. CRAN 미러 페이지를 통해 무료로 설치 파일을 다운로드 합니다.

https://cran.r-project.org/mirrors.html

RStudio 역시 아래의 사이트에서 무료로 다운로드 받을 수 있습니다.

https://www.rstudio.com/products/rstudio/download

-주의사항: 윈도우 사용자 계정이 한글로 되어있는 경우, 오류가 발생할 수 있습니다. + [제어판] -> [사용자계정] -> [이름 변경] + ‘새 계정 이름’ 입력란에 영문으로 된 계정 이름을 입력하고 [이름 변경]을 클릭합니다. 출처: 김영우, “쉽게 배우는 R 데이터 분석” p. 37

RStudio 프로젝트 사용하기

상단 툴바에서 파일 탭을 누르면 새로운 프로젝트를 시작할 수 있습니다. 프로젝트는 작업 디렉토리와 연동됩니다. 따라서 작업 내용과 결과를 쉽게 저장 및 불러올 수 있습니다.

RStudio의 프로젝트 기능은 다음 중 하나를 선택해서 시작할 수 있습니다.

그리고 “.Rproj”의 확장자를 가진 프로젝트 파일이 생성되는데, 이를 통해 우리가 작업한 내용과 결과를 쉽게 불러옵니다.

RStudio에서 코드와 데이터를 저장 및 불러오기

다음의 방식으로 프로젝트 기능을 통해 쉽게 코드와 데이터를 저장할 수 있습니다.

텍스트 전처리를 위한 R의 기본 함수들

텍스트 (전)처리 및 분석을 위해 R을 사용하는 방법에 대해 알아보겠습니다.

오늘 우리는 R 기본 패키지에 포함되어 이미 설치되어 있는 기본 함수들을 사용하겠습니다.

문자열 데이터를 처리하는 기초 R 연습

  1. R 은 통계 프로그래밍 언어입니다.
# 간단한 덧셈, 뺄셈 
10+5
## [1] 15
10-5
## [1] 5
# 벡터 만들기 : 일련의 숫자, 정수, 문자, 부울린 
c(1,3,5) # 각 요소를 벡터로 결합 
## [1] 1 3 5
1:5 # 정수
## [1] 1 2 3 4 5
seq(1, 5, by=2) # 1부터 5까지 2씩 증가 
## [1] 1 3 5
rep(1:5, times=3) # 1부터 5까지 3번 반복 
##  [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
rep(1:5, each=3) # 1부터 5까지 각각 3번 반복 
##  [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
  1. R 은 객체 지향 환경으로 객체에 숫자를 할당할 수 있습니다.
# R 은 연산자 '<-'로 값을 할당받습니다. 
a <- 10 # 'a' 객체에 10을 할당합니다.
a - 5 # a에서 5를 뺍니다.
## [1] 5
  1. R 객체에는 또한 문자도 할당할 수 있습니다.
class <- "text mining"
print(class)
## [1] "text mining"
# R 은 객체 지향 프로그래밍 언어이며, 모든 것을 객체에 할당할 수 있습니다.
fruits <- c("Apple","Grape","Pear","Apple","Mango","Orange","Mango","Strawberry","Grape","Apple")
sort(fruits) # 알파벳 순으로 정렬하여 값을 반환합니다.
##  [1] "Apple"      "Apple"      "Apple"      "Grape"      "Grape"     
##  [6] "Mango"      "Mango"      "Orange"     "Pear"       "Strawberry"
table(fruits) # 객체를 구성하는 값(요소)들의 개수를 볼 수 있습니다.
## fruits
##      Apple      Grape      Mango     Orange       Pear Strawberry 
##          3          2          2          1          1          1
unique(fruits) # 객체를 구성하는 값(요소)들의 고유 값을 볼 수 있습니다.
## [1] "Apple"      "Grape"      "Pear"       "Mango"      "Orange"    
## [6] "Strawberry"
# 문자열 데이터는 문자 벡터가 될 수 있습니다.
hello <- c("Hello!", "World", "is", "good!")
print(hello)
## [1] "Hello!" "World"  "is"     "good!"
  1. 문자를 다음과 같이 처리할 수 있습니다.
paste(hello, collapse = ",")
## [1] "Hello!,World,is,good!"
hello_paste <- paste(hello, collapse = " ")
strsplit(hello_paste, split = " ")
## [[1]]
## [1] "Hello!" "World"  "is"     "good!"

앞으로의 과정에서 배울 내용

가장 많은 어휘가 쓰인 힙합?을 시각화한 예시를 살펴봅시다. Source: https://pudding.cool/2017/02/vocabulary/

텍스트 분석을 위한 R 함수 소개

기본 함수

  1. nchar(): 문자 수 및 바이트 수 계산
nchar("data")
## [1] 4
nchar("bigdata")
## [1] 7
# 공백과 구두점 역시 계산에 포함합니다. 
nchar("big data")
## [1] 8
nchar("big, data")
## [1] 9
  1. strsplit(): 문장은 글자로 이루어진 단어로 구성되어 있습니다. 따라서, 텍스트 마이닝에서 우리는 전처리된 토큰인 단어로 문장을 분류합니다. 그러고나서, 다시 결합해야할 수도 있습니다.
sent1 <- "Text mining begins with preprocessing and tokenization"
# 공백을 기준으로 문장을 7개의 단어로 나눕니다.
sent1_split <- strsplit(sent1, split=" ") # 매개변수  (split=" ") 는 단어를 토큰으로 구분하는 문자를 지정합니다.
sent1_split # sent1에서 분할된 단어의 벡터 목록을 list 객체로 변환해 출력합니다.
## [[1]]
## [1] "Text"          "mining"        "begins"        "with"         
## [5] "preprocessing" "and"           "tokenization"
sent1_split[[1]] # list 객체에서 단어 분류의 첫 번째 벡터를 출력합니다.
## [1] "Text"          "mining"        "begins"        "with"         
## [5] "preprocessing" "and"           "tokenization"
sent1_split[[1]][5] # 단어 분류의 첫 번째 벡터에서 5번째 요소를 출력합니다.
## [1] "preprocessing"
  1. paste(): 단어를 빈 칸으로 분리하는 문장으로 다시 단어 부분을 결합할 수 있습니다.
sent2 <- paste(sent1_split[[1]], collapse=" ") # 매개변수 (collapse) 는 sent1_split에 있는 요소를 결합하는 방법을 정의합니다. 여기서 우리는 단어 요소들이 공백으로 구분된 문장으로 결합하고자 합니다.
paste(sent1_split[[1]], collapse=" ") 
## [1] "Text mining begins with preprocessing and tokenization"
sent2
## [1] "Text mining begins with preprocessing and tokenization"

4.tolower() and toupper(): 영어의 대문자를 소문자로 또는 그 반대로 변환할 수 있습니다.

sentence <- "Text mining is easy to learn"
toupper(sentence)
## [1] "TEXT MINING IS EASY TO LEARN"
tolower(toupper(sentence))
## [1] "text mining is easy to learn"

주의사항: R은 대문자 또는 소문자를 따로 구분합니다.

word1 <- "TEXT"
word1
## [1] "TEXT"
word2 <- "Text"
word2
## [1] "Text"
word1 == word2
## [1] FALSE
  1. 도움말 : 함수 및 패키지에 대한 도움말을 볼 수 있습니다.
?c # c( ) : 특정 함수의 도움말보기 
## starting httpd help server ... done
?strsplit
help.search("split") # 단어나 구를 포함하는 함수에 대한 도움말을 검색하고 출력합니다.
help(package = "stringr") # 패키지 도움말