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

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

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

R 텍스트마이닝

창세기 단어구름(wordcloud) 만들기 (2) 전처리


지난 글에서 창세기 텍스트를 불러왔습니다. 


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


오늘은 텍스트를 단어 단위로 쪼개고, 불필요한 단어를 제거하도록 하겠습니다. 단어단위로 쪼개기 위해 stringr 패키지를 


설치하겠습니다. 파이프 연산자 사용을 위해 dplyr 패키지도 설치합시다.


> install.packages("stringr")

> install.packages("dplyr")


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


library(stringr)

library(dplyr)




1. 단어 단위로 쪼개기


strsplit 함수를 이용하여 단어 단위로 쪼개줍니다. split 옵션을 " " 으로 놓으면 됩니다. 공백을 의미합니다. 


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


strsplit 함수는 결과가 리스트형태로 입력됩니다. unlist 함수를 적용하여 벡터로 만들어줍니다. 결과는 아래와 같습니다. 


> gen_word[1:5]

[1] "창1:1"    "<천지"    "창조>"    "태초에"   "하나님이"




2. 불필요한 단어 제거하기


장과 절에 해당되는 단어는 제거하겠습니다. 소제목 <>도 제거합시다. 먼저 해당 단어를 찾아야합니다. str_detect 함수를 이용하여 해당 단어가 있는 위치를 TRUE로 표시하고, which 함수로 그 위치를 찾습니다. or연산자 | 를 사용하였습니다.


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


> rm_obj[1:5]

[1]  1  8 21 29 38


인덱싱을 이용하여 해당 위치의 원소들을 제거해줍니다. 


gen_word_r1=gen_word[-rm_obj]


> gen_word_r1[1:10]

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

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




<코드 모아보기>


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]


반응형

댓글