본문 바로가기

R 크롤링

[R크롤링] 7. 텍스트마이닝: 연관어 분석

반응형

## 작성일: 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)

## 근접 중심성이란 각각의 노드가 네트워크 구조 내에서 얼마나 중심에 위치하고 있는가를 나타내는 중심성지표 중 하나

반응형