본문 바로가기
R 주제/텍스트마이닝

[R 텍스트마이닝] 창세기 단어구름(wordcloud) 만들기 (3) 단어구름 만들기

by 만다린망고 2020. 10. 6.
반응형

R 텍스트마이닝

창세기 단어구름(wordcloud) 만들기 (3) 단어구름 만들기


지난 코드에 이어서 설명하겠습니다.


library(stringr)

library(dplyr)


#텍스트 불러오기

gen=readLines("E:/ONE_DRIVE/OneDrive/21.textmining/bible_example/genesis.txt",encoding="EUC-KR")


#단어 단위로 쪼개기

gen_word = strsplit(gen ,split=" ") %>% unlist()


#불필요한 단어 찾아 위치 저장하기

rm_obj=which(str_detect(gen_word,":")|str_detect(gen_word,"<")|str_detect(gen_word,">"))


#불필요한 단어 제거하기 

gen_word_r1=gen_word[-rm_obj]



원본에서 불필요한 단어를 제거했고, 아래와 같이 단어 단위로 벡터에 저장된 상태입니다. 


> gen_word_r1[1:10]

 [1] "태초에"       "하나님이"     "천지를"       "창조하시니라" "땅이"         "혼돈하고"     "공허하며"    

 [8] "흑암이"       "깊음"         "위에" 


이제 단어 별 등장 빈도를 구합시다. table 함수를 이용합니다. sort 함수를 이용하여 내림차순 정렬합니다. 


gen_word_r2=table(gen_word_r1) %>% sort(decreasing=TRUE)


> gen_word_r2[1:5]

gen_word_r1

    그 이르되   내가   그의     내 

   525    359    318    299    285


이제 단어구름을 만들어봅시다. wordcloud 함수를 이용합니다. 먼저 wordcloud 패키지를 설치해야합니다.


> install.packages("wordcloud")


설치한 패키지를 불러옵시다.


library(wordcloud)


wordcloud함수는 아래와 같이 사용합니다. 각각 옵션에 대한 설명은 주석으로 대신합니다. 


wordcloud(words=names(gen.word.r2), #단어

          freq=gen.word.r2, #빈도

          min.freq=5, #등장 단어 최소빈도

          max.words=200, #최대 등장 단어 수 

          random.order=FALSE, #순서 임의화 여부

          rot.per=0.1, #90도 회전한 단어 비율

          scale=c(8,0.5), #최대, 최소 단어 스케일

          colors=brewer.pal(8,"Dark2")) #색 설정



<코드 모아보기>


library(stringr)

library(dplyr)

library(wordcloud)


#텍스트 불러오기

gen=readLines("E:/ONE_DRIVE/OneDrive/21.textmining/bible_example/genesis.txt",encoding="EUC-KR")


#단어 단위로 쪼개기

gen_word = strsplit(gen ,split=" ") %>% unlist()


#불필요한 단어 찾아 위치 저장하기 

rm_obj=which(str_detect(gen_word,":")|str_detect(gen_word,"<")|str_detect(gen_word,">"))


#불필요한 단어 제거하기 

gen_word_r1=gen_word[-rm_obj]


#빈도 계산하기

gen_word_r2=table(gen_word_r1) %>% sort(decreasing=TRUE)


#단어구름 그리기

wordcloud(words=names(gen.word.r2), #단어

          freq=gen.word.r2, #빈도

          min.freq=5, #등장 단어 최소빈도

          max.words=200, #최대 등장 단어 수 

          random.order=FALSE, #순서 임의화 여부

          rot.per=0.1, #90도 회전한 단어 비율

          scale=c(8,0.5), #최대, 최소 단어 스케일

          colors=brewer.pal(8,"Dark2")) #색 설정


반응형

댓글