RStudio를 사용해 텍스트를 분석하기 위해선, 우선 R이 컴퓨터에 설치되어야 합니다. CRAN 미러 페이지를 통해 무료로 설치 파일을 다운로드 합니다.
https://cran.r-project.org/mirrors.html
RStudio 역시 아래의 사이트에서 무료로 다운로드 받을 수 있습니다.
https://www.rstudio.com/products/rstudio/download
-주의사항: 윈도우 사용자 계정이 한글로 되어있는 경우, 오류가 발생할 수 있습니다. + [제어판] -> [사용자계정] -> [이름 변경] + ‘새 계정 이름’ 입력란에 영문으로 된 계정 이름을 입력하고 [이름 변경]을 클릭합니다. 출처: 김영우, “쉽게 배우는 R 데이터 분석” p. 37
상단 툴바에서 파일 탭을 누르면 새로운 프로젝트를 시작할 수 있습니다. 프로젝트는 작업 디렉토리와 연동됩니다. 따라서 작업 내용과 결과를 쉽게 저장 및 불러올 수 있습니다.
RStudio의 프로젝트 기능은 다음 중 하나를 선택해서 시작할 수 있습니다.
그리고 “.Rproj”의 확장자를 가진 프로젝트 파일이 생성되는데, 이를 통해 우리가 작업한 내용과 결과를 쉽게 불러옵니다.
다음의 방식으로 프로젝트 기능을 통해 쉽게 코드와 데이터를 저장할 수 있습니다.
텍스트 (전)처리 및 분석을 위해 R을 사용하는 방법에 대해 알아보겠습니다.
오늘 우리는 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
# R 은 연산자 '<-'로 값을 할당받습니다.
a <- 10 # 'a' 객체에 10을 할당합니다.
a - 5 # a에서 5를 뺍니다.
## [1] 5
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!"
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/
nchar()
: 문자 수 및 바이트 수 계산nchar("data")
## [1] 4
nchar("bigdata")
## [1] 7
# 공백과 구두점 역시 계산에 포함합니다.
nchar("big data")
## [1] 8
nchar("big, data")
## [1] 9
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"
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
?c # c( ) : 특정 함수의 도움말보기
## starting httpd help server ... done
?strsplit
help.search("split") # 단어나 구를 포함하는 함수에 대한 도움말을 검색하고 출력합니다.
help(package = "stringr") # 패키지 도움말