R을 통해서 단일 논문에서 자주 출현하는 키워드를 클라우드로 구현해보았다. 대상 논문은 김현교수님의 "디지털 인문학:인문학과 문화콘텐츠의 상생 구도에 관한 구상[각주:1]"으로 하였다. 만약 어떤 문장에서 자주 출현하는 단어들과 그 빈도수를 시각화하고 싶다면 괜찮은 방법으로 생각된다. 






김현 교수님의 "디지털 인문학:인문학과 문화콘텐츠의 상생 구도에 관한 구상"은 너무나 당연하게도 "인문학"과 "디지털"이 가장 많이 출현하였다. 특히 인문학의 기본에 디지털을 추가한다는 개념과도 같게 "인문학"은 물론이고 "인문"도 자주 출현하는 것을 볼 수 있다. 그 뒤를 "지식"이 따라가고 있다. 재미있는 것은 제목에 출현한 "문화콘텐츠"보다 "인문콘텐츠"의 출현빈도가 더욱 많다는 것이다. "인문콘텐츠"을 강조하고 싶으셨나 보다.


그 뒤를 따르고 있는 단어들은 대부분이 "연구"나 "인력" 혹은 "교육" 및 "육성"등이 자치하고 있다. 이는 본 논문에서 가장 중요시 하는 것이 앞으로 디지털 인문학이 발전하기 위하여 후학들을 어떻게 교육시키고 육성할 것인가에 맞추어져 있다고 할 수 있다.



# 모든 명령어의 세부 내용이 궁금할 때에는 "?file"혹은 "??file"의 형식으로 입력하면 상세한 설명이 당신의 눈앞에 펼쳐진다. 물론 영어 압박이다. 하지만...이쪽 바닥이 원래 꼬브랑말을 할 수 밖에 없다. ~.~;;

# 중간중간 실행결과를 "dh.lines"처럼 입력해서 구동하는 것을 추천한다. 그래야 어떻게 변환됐는지 알 수 있다.

# 본 내용에서는 다음과 같은 팩키지를 사용하게 된다. "KoNLP"는 한글에 관한 텍스트 마이닝(text mining package)의 기본이며 필수라고 생각해도 무방하다. "RColorBrewer"는 시각화시의 색 관련 사항이다. 아름다운 시각화에 관심이 없으면 무시해도 좋다. "wordcloud"는 단어들을 크라우드로 변환해주는 package이다.

# 패키지를 설치한다.

install.packages("KoNLP")
install.packages("RColorBrewer")
install.packages("wordcloud")

# 패키지를 로딩한다.

library(KoNLP)
library(RColorBrewer)
library(wordcloud)

# 한글처리의 경우 "UTF-8"코드로"txt"형식으로 저장이 기본이다.

dh <- file("c:/rtext/dh.txt", encoding="UTF-8")

# 불러온 text에 라인을 넣어주어야 한다.

dh.lines <- readLines(dh)

# 세종단어집을 불러온다. 그런데 세종단어집은 완전하지 않다.

useSejongDic()

# 그래서 "dh.lines"을 실행해서 세종단어집에 포함되지 않은 아래 단어들을 적당히 추가시켰다. 참고로 단어집에 포함되지 않은 단어들은 조사와 붙어서 나오는 경우가 많다.

mergeUserDic(data.frame(c("문화콘텐츠","인문콘텐츠","스토리텔링","코디네이터","콘텐츠"), c("ncn")))

# 이제 라인으로 구획된 text에서 단어만을 추출해준다.

dh.nouns <- sapply(dh.lines, extractNoun, USE.NAMES=F)

# 이제 각각의 단어들이 몇 회 출현하였는지 숫자를 센다. 사실 데이터만으로는 "dh.wordcount"만으로 완성되었다고 볼 수 있다. 남은 건 가시화다.

dh.wordcount <- table(unlist(dh.nouns))

# 예쁘게 꾸미기 옵션이다. 세팅을 바꾸어가면서 색의 변화을 즐겨보자. 본인은 취미 없다.

pal <- brewer.pal(12,"Set3")
pal <- pal[-c(1:2)]

# 이제 실제로 가시화를 한다. 랜덤으로 해놓고 몇 번 실행하면서 마음에 드는 것을 적당히 골라도 되고, 처음부터 철저하게 원하는대로 나오도록 세팅해도 된다. 본인은 렌덤이다.

wordcloud(names(dh.wordcount),freq=dh.wordcount,scale=c(6,0.3),min.freq=10,
          random.order=T,rot.per=.1,colors=pal)


  1. ...본인의 글이 아니어서 함부로 전문을 올리기가 힘들다. 각자 알아서 적당한 소설이나 논문을 대상으로 해보도록-0-;;; [본문으로]

+ Recent posts