본문 바로가기
하나. 빅데이터 머신러닝 /> R

[R] 워드 클라우드 만들기

by 여기블 2019. 10. 1.
반응형
  • 텍스트 마이닝이란? (Text mining)
install.packages("rJava") #r에서 Java를 사용한 패키지 사용 
install.packages("memoise") #koNLP패키지가 사용하는 패키지 
install.packages("KoNLP") #한국어 자연어 처리 
install.packages("stringr") #문자열을 처리하는 여러가지 함수를 가지고 있는 패키지 
install.packages("wordcloud") #워드클라우드를 그려주는 패키지

- 문자로 된 데이터에서 가치 있는 정보를 얻어 내는 분석 기법

- 분석절차 

  1.  형태소 분석
  2. 명사, 동사, 형용사 등 의미를 지는 품사 단어 추출 
  3. 빈도표 만들기
  4. 시각화
  • 텍스트 마이닝 준비하기 

Java 다운로드 및 설치 

자바 다운로드 : https://www.java.com/ko/download/manual.jsp

 

모든 운영 체제용 Java 다운로드

모든 운영 체제용 Java 다운로드 권장 사항 Version 8 Update 221 릴리스 날짜 2019년 7월 16일 Oracle Java 중요 라이센스 업데이트 Oracle Java 라이센스는 2019년 4월 16일 릴리스부터 변경되었습니다. 새로운 Oracle Java SE에 대한 Oracle Technology Network 라이센스 합의서는 이전 Oracle Java 라이센스와는 상당히 다릅니다. 새로운 라이센스는 개인 용도 및 개발 용도와 같은

www.java.com

자바 환경변수 설정 

시스템 > 고급시스템 설정 > 환경변수 > 시스템 변수> path 값 확인 

자바 프로그램 설치 확인 

윈도우+R > cmd > 명령어 입력 

  • 워드 클라우드에 필요한 R 패키지 로드 
install.packages("rJava") #r에서 Java를 사용한 패키지 사용 
install.packages("memoise") #koNLP패키지가 사용하는 패키지 
install.packages("KoNLP") #한국어 자연어 처리 
install.packages("stringr") #문자열을 처리하는 여러가지 함수를 가지고 있는 패키지 
install.packages("wordcloud") #워드클라우드를 그려주는 패키지

#패키지 라이브러리에 올리기
library(KoNLP)
library(stringr)
library(wordcloud)
search()

 

  • 워드클라우드 데이터 전처리 
#한국어 분석에 사용할 사전을 로드 
useSejongDic()

#텍스트 파일(*.txt)에서 한줄씩 문자열들을 읽음
txt <-readLines("data/hiphop.txt")
str(txt)
head(txt)

# 특수문자 제거 
# 정규 표현식 (regular expression) 문자열의 패턴 
txt <-str_replace_all(txt,"\\W"," ")
txt[1:10]

#각 문장에서 명사들만 추출 
nouns <- extractNoun(txt)
str(nouns)

# 명사들로 이루어진 리스트를 돗수분포표 형태로 변환 
word_count <-table(unlist(nouns))
word_count
head(word_count)

# 돗수분포표를 데이터 프레임으로 변환 
# stringsAsFactors -> 문자열을 범주형 데이터로 취급하지 않겠다. 
df <- as.data.frame(word_count, stringsAsFactors = F)
df
head(df)
tail(df)

df<- rename(df,word=Var1,freq=Freq)
tail(df)
str(df)
# 한 글자의 경우 명사가 아닌 경우가 많음으로, 제외 
df <-filter(df,nchar(word) >=2)

str(df)
tail(df)

각 문장에서 명사들만 추출한 결과 

  • 워드 클라우드 그리기 
library(RColorBrewer)
pal <- brewer.pal(8,"Dark1")

#word cloud는 생성할 때마다 랜덤하게 만들어 지는데, 

set.seed(1234)
wordcloud(words = df$word, # 단어
          freq = df$freq, # 빈도
          min.freq = 2, # 최소 단어 빈도
          max.words = 200, # 표현 단어 수
          random.order = F, # 고빈도 단어 중앙 배치
          rot.per = .1, # 회전 단어 비율
          scale = c(4, 0.3), # 단어 크기 범위
          colors = pal) # 색깔 목록

댓글