본문 바로가기

R 크롤링

[R크롤링] 6. 텍스트마이닝: 워드클라우드

반응형

## 작성일: 2017.12.19

## 작성자: 춤추는초코칩

## 참고문허: R과Java로 크롤링하자

## Part04 데이터 분석 및 시각화

## Chapter11 텍스트마이닝(R패키지 활용) > 워드클라우드



## Step0. 실습에 사용할 데이터 가져오기

## 작업폴더 지정

setwd("D:/R/R과Java로 크롤링하자")

getwd()

## 크롤링 패키지 불러오기

library("rvest")

library("R6")

## 문재인 대통령 충칭 임시정부 청사 방문 인사말 크롤링

# html 주소를 url에 저장

url <- 'https://www1.president.go.kr/articles/1827'

# read_html 함수를 사용하여 html 페이지를 htxt 변수에 저장

htxt <- read_html(url)

# html_nodes 함수를 사용하여 cs_body class에 해당하는 부분을 content 변수에 저장

# text left cb text_wrap motion fadeIn visible 클래스로는 안되드라구요. 왜 그럴까. ㅡ.ㅡ;;

content <- html_nodes(htxt,'.cs_body')

# html_text 함수를 사용하여 text 부분을 speach 변수에 저장

speach <- html_text(content)

speach


## Step1. 분석 환경설정

## 한글에 대한 텍스트 마이닝 패키지 KoNLP 설치. 주의:o는 소문자

## 워드클라우드 패키치 wordcloud

## 워드클라우드 단어에 색상을 입히는 패키지 RColorBrewer

##install.packages("KoNLP")

##install.packages("wordcloud")

##install.packages("RColorBrewer")

library(KoNLP)

library(wordcloud)

library(RColorBrewer)

## 세종사전 설치

useSejongDic()


## Step2. 데이터 정제

## 크롤링된 데이터에서 단어 추출하기

## 명사 추출 함수인 extracNoun 함수 사용

pword <- sapply(speach,extractNoun,USE.NAMES = F)

## 필터링을 위해 unlist 함수를 사용해서 저장

data <- unlist(pword)

## 글자수 2개 이상만 취급

data <- Filter(function(x){nchar(x)>=2},data)

## 불필요한 데이터 처리

## 한 번 이상의 숫자

data <- gsub("\\d+","",data)

## 새로운 라인

data <- gsub("\\n","",data)

## 줄 끝 문자를 제외한 모든 문자

data <- gsub("\\.","",data)

data <- gsub("\n","",data)

data <- gsub(" ","",data)

data <- gsub("-","",data)

data


## Step3. 워드클라우드

## 빈도표 작성

data_cnt <- table(data)

## 내림차순 정렬 후 상위 20개 표시

head(sort(data_cnt, decreasing=T), 20)

## 그래픽 구현창(팝업창) 생성

palete <- brewer.pal(9, "Set1")

x11()

## 워드클라우드 실행

wordcloud(

  names(data_cnt),

  freq=data_cnt,

  scale=c(5,1),

  rot.per=0.5,

  min.freq=7,

  random.order=F,

  random.color=T,

  colors=palete

)


반응형