출처: http://bigbigdata.tistory.com/78 [데이터 긁긁해]
KoNLP패키지와 wordcloud패키지를 이용해
한글 WordCloud 만들기
빈도수가 높은 단어일수록 크게 나타내는 WordCloud
[셋팅하기]
KoNLP 패키지와 wordcloud패키지를 설치하고, 로딩한다.
install.packages("패키지이름")
library(패키지이름)
한글이 저장되있는 세종사전을 사용합니다. R이 한글을 분석할 때 이 사전을 참고해야 하니까.
useSejongDic()
그리고 사전에 특수한 명칭같은 단어들이 필요하다면 추가해준다.
mergeUserDic(data.frame("해수욕장","ncn"))
1. 텍스트에서 명사만 골라내기
명사만 골라낼 때, KoNLP 패키지의 extractNoun 함수를 사용한다.
① 각 줄에서 단어만 남기기
data = sapply(txt, extractNoun, USE.NAMES=F)
이렇게 되면 extractNoun함수에 의해서 각 줄마다 단어만 남게 된다.
예를들면
1번째 줄 : "초콜렛" "과자" "사먹"
2번째 줄 : ""
3번째 줄 : "저희" "실험"
....
이런식으로 되게 된다. (물론 저렇게 ~~째줄 이런식으로 나오진 않는다. [[1]] [1] .. 이렇게나옴)
아무튼 여러줄로 구성되있는 텍스트 데이터에서 각 줄마다 해당 줄의 단어만 남게 된다는 것이다. 줄별로
② 단어만 가져가기 (단어뭉치 만들기) + 두글자 이상 단어만 남기기
어쨌든 작업을 하려면 이상태로 있으면 안된다. 작업을 위해서는 단어들만 필요하다.
줄 순서에 상관없게 단어들만 가져오려면 unlist 메소드를 이용한다.
- unlist에 대한 자세한 설명은 여기서 확인하기 (http://rfunction.com/archives/2238)
undata = unlist(data)
이렇게 되면 undata는 순수하게 단어들만 들어있는 단어뭉치가 된다.
그리고 추가로, 두글자 이상의 단어만 작업하기 위해 필터링을 해준다.
data = Filter( function(x){nchar(x)>=2},undata)
Filter함수를 이용해
첫번째 인자인 필터링 조건은 사용자함수로 만들어줬고,
두번째 인자인 필터링할 데이터에 unlist작업한 단어뭉치를 넣어준다.
2. 원하지 않는 내용 걸러내기
gsub 함수를 이용해 원하지 않는 내용을 걸러내버린다.
원하지 않는 내용을 "" 즉 아무것도 아닌것으로 바꿔버릴거다.
gsub("원하지않는내용", "뭘로바꿀건지", 데이터)
예를들면
data = gsub("질문","",data)
이렇게 ..
그럼 이제 data는 2글자 이상이고 내가 원하지않는 단어는 걸러내버린 단어뭉치가 된다.
3. 다듬은 단어뭉치를 txt파일로 저장하고 table형태로 다시 가져오기
이제 이렇게 다듬은 단어뭉터기를 txt파일로 저장하고
write(unlist(data),"new_data.txt")
이 파일을 다시 테이블형식으로 변환해 가져온다
table_data <-read.table("new_data.txt")
테이블 형식으로 가져온 table_data 를 확인해보면
101 피자
102 맛있습니다
103 미래
...
이런식으로 넘버링 - 단어 이렇게 저장된걸 확인할 수 있다.
테이블형태로 변환해서 저장해주잣
wordcount<-table(table_data)
4. WordCloud 형태로 그래픽 출력하기
열심히 다듬은거를 wordcloud로 출력한다.
wordcloud(names(wordcount), freq=wordcount, scale=c(5,1), rot.per=0.25, min.freq=1, random.order=F, random.color=T, colors=brewer.pal(9,"Set1"))
그 전에 화면에 컬러 출력인 colors옵션값의 brewer를 쓰기 위해서는 RColorBrewer 라이브러리를 로딩해야한다.
이렇게 wordcloud 명령을 내리면 두두두둔 결과물이 뜬다.
저장은 savePlot으로 해주면 된다.
위 내용은 R까기 책을 공부하면서 <Part1 비정형데이터로 wordcloud생성하기> 파트를 공부한 내용을 요약한 것입니다!!
이미지 출처
http://onertipaday.blogspot.kr/2011/07/word-cloud-in-r.html