## 작성일: 2017.12.20
## 작성자: 춤추는초코칩
## 참고문헌: R과Java로 크롤링하자
## Part04 데이터 분석 및 시각화
## 이책은 쉽게 따라할 수 있는 반면에 배경지식에 대한 설명이 조금 부족한 거 같다.
## 함수는 왜 사용하고 실행결과에 대한 해석 부분이 아쉽다.
## 별도의 공부가 필요한거 같습니다.
## 본 교재는 여기서 끝내도록 하겠습니다.
## Chapter11 텍스트마이닝(R패키지 활용) > 연관어 분석
## 작업폴더 지정
setwd("D:/R/R과Java로 크롤링하자")
getwd()
## 연관어 분석에 필요한 패키지 설치
## install("KoNLP")
## install("arules")
## install("igraph")
## install("combinat")
library(KoNLP)
useSejongDic()
library(arules)
library(igraph)
library(combinat)
## 데이터 불러오기
rule <- file("kennedy.txt", encoding = "UTF-8")
rules <- readLines(rule)
close(rule)
head(rules, 10)
## 9. 단어 추출 및 트랜잭션 생성
## 단어를 추출하여 tran에 저장
tran <- Map(extractNoun, rules)
tran <- unique(tran)
tran <- sapply(tran, unique)
tran <- sapply(tran, function(x) {Filter(function(y)
{nchar(y) <= 4 && nchar(y) > 1 && is.hangul(y)},x)})
tran <- Filter(function(x) {length(x) >=2}, tran)
tran
names(tran) <- paste("Tr", 1:length(tran), sep="")
names(tran)
wordtran <- as(tran,"transactions")
wordtran
wordtab <- crossTable(wordtran)
wordtab
## 10. 단어 간 연관 규칙 산출
## apriori 함수를 사용하여 데이터 연관분석
ares <- apriori(wordtran, parameter = list(supp=0.1, conf=0.2))
## inspect 함수를 사용하여 연관 분석 결과 확인
inspect(ares)
## 11. 시각화
## labels 함수와 strsplit 함수를 사용하여 rules 변수의 내용을 정제하여 입력
rules <- labels(ares, ruleSep=" ")
rules <- sapply(rules, strsplit, " ", USE.NAMES = F)
## rulemat 변수에 do.call 함수를 사용하여 데이터 입력
rulemat <- do.call("rbind", rules)
ruleg <- graph.edgelist(rulemat[-c(1:6),], directed = F)
plot.igraph(ruleg, vertex.label=V(ruleg)$name, vertex.label.cex=1,
vertex.size=30, layout=layout.fruchterman.reingold.grid)
## 12. 단어 근접 중심성 파악
closen <- closeness(ruleg)
plot(closen, col="red", xaxt="n", lty="solid", type="b", xlab="단어", ylab="closeness")
points(closen, pch=16, col="navy")
axis(1, seq(1, length(closen)), V(ruleg)$name, cex=5)
## 근접 중심성이란 각각의 노드가 네트워크 구조 내에서 얼마나 중심에 위치하고 있는가를 나타내는 중심성지표 중 하나
'R 크롤링' 카테고리의 다른 글
오픈API를 활용한 대기오염정보 조회(1) (0) | 2017.12.29 |
---|---|
[R크롤링] 8. 웹사이트 스크래핑 예제 : IMDb site (0) | 2017.12.22 |
[R크롤링] 6. 텍스트마이닝: 워드클라우드 (0) | 2017.12.19 |
[R크롤링] 5. 데이터 분석(정제) (0) | 2017.12.18 |
[R크롤링] 4. 네이버 증권에서 삼성전자 주식 일별 시세 가져오기 (9) | 2017.12.16 |