본문 바로가기
Programming & Machine Learning/R X 머신러닝

R을 이용한 통계분석 - 2 (Textmining 에서의 데이터 전처리 & 종류별 데이터 import방법)

by Yamarae 2017. 7. 5.

1. 비정형 데이터 처리


텍스트와 음성, 이미지는 비정형 데이터라고 할 수 있다. 최근 머신러닝 분야에서 가장 활발하게

연구 및 개발이 이루어지고 있는 것들이 바로 이 비정형 데이터라고 할 수 있다. 

비정형 데이터를 이용하여 인사이트를 도출하는 것이 데이터 분석 / 머신 러닝 분야의 가장 큰 화두인듯 하다.

1.1 텍스트 처리 : KoNLP를 이용

  • 텍스트마이닝 전처리 과정

텍스트를 분석에 용이한 형태로 전처리 하기 위해서는, 가장 먼저 사전작업이 필요하다.

여기서 사전은 Dictionary를 의미한다. R Studio에서는 사전을 메모리상에 올린 뒤,

MergeUserDic(discrete 되었다.) 으로 사전을 구성한다. 

다음으로 텍스트를 pre-processing 해야하는데, 주로 소문자 변환, 유사단어 통일, 공백 제거 등의 과정이다.

# string to lower
txt0 = str_to_lower(txt)

# word unite
txt1 = gsub("빅데이타", "빅데이터", txt0)
txt1 = gsub("bigdata", "빅데이터", txt1)
txt1 = gsub("big data", "빅데이터", txt1)
txt1 = gsub("[[:digit:]]", "", txt1)
txt1 = gsub("[[A-z]]", "", txt1)
txt1 = gsub("[[:punct:]]", "", txt1)
# txt1 = gsub("[a(\\d)+]", "", txt1) -> regular expression
txt1 = gsub("  ", " ", txt1)
txt2 = txt1[str_length(txt1)>1] # remove empty line

텍스트 전처리를 마쳤으면,

extractNoun (한글 형태소 분석의 경우)을 통해 간단한 텍스트 분석을 시행해보고

table을 이용해 결과를 확인해본다.

txt_e = extractNoun(txt2)
txt_t = table(unlist(txt_e))

2. 각종 데이터 import 방법


data1 = read.table('clipboard', header = T) # for window
data1 = read.table(pipe("pbpaste"), header = T) # for mac

data2 = read.csv("data1.csv")

str(data2)
names(data2) = c("x1", "x2") # set column names

# install.packages("xlsx")
dyn.load("/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/server/libjvm.dylib")
library(rJava)
library(xlsx)

data3 = read.xlsx("data1.xlsx", sheetIndex = 1, header = T)

3. 이미지 데이터 import 방법


dyn.load("/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/server/libjvm.dylib") # for mac
library(rJava)
install.packages("readbitmap") # even jpg, png possible
library(readbitmap)

bmp1 = read.bitmap("7.bmp")
str(bmp1)
dim(bmp1)

jpg1 = read.bitmap("7.jpg")
str(jpg1)
dim(jpg1)

png1 = read.bitmap("7.png") # png is 4dim for transparency
dim(png1)

bmp_m = matrix(bmp1, nrow=1, byrow = T)
jpg_m = matrix(jpg1, nrow=1, byrow = T)
png_m = matrix(png1, nrow=1, byrow = T)