## 작성일: 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
)
'R 크롤링' 카테고리의 다른 글
[R크롤링] 8. 웹사이트 스크래핑 예제 : IMDb site (0) | 2017.12.22 |
---|---|
[R크롤링] 7. 텍스트마이닝: 연관어 분석 (4) | 2017.12.20 |
[R크롤링] 5. 데이터 분석(정제) (0) | 2017.12.18 |
[R크롤링] 4. 네이버 증권에서 삼성전자 주식 일별 시세 가져오기 (9) | 2017.12.16 |
[R크롤링] 3. R을 이용한 트위터 크롤링 (6) | 2017.12.11 |