[R] R 9일차 워드클라우드를 만들어보았다.

특별히 어려운 부분은 없지만 한 개의 단어를 보다 효율적으로 찾는 방법에 대해서 고민을 해봐야겠다.

조사가 포함되는 걸 막기 위해 한 글자를 모두 없애기에는 한 개로 된 단어도 다수 존재하기 때문이다.



=================================== R ===================================

rm(list=ls())


#필요한 패키지 설치 및 라이브러리 등록

install.packages("rJava")

library("rJava")

install.packages("memoise")

library("memoise")

install.packages("KoNLP")

library("KoNLP")

install.packages("devtools")

library("devtools")

install.packages("stringr")

library("stringr")

useNIADic()


#박근혜 전 대통령 사과문을 txt1에 등록, encoding은 UTF-8로 한다. 꼭 대문자로 써야한다.

txt1 <- readLines("apology.txt", encoding = "UTF-8")

txt1


#텍스트 내부에 있는 escape문자를 ""로 바꾼다. W는 대문자이다

txt2 <- str_replace_all(txt1, "\\W", " ")

head(txt2)


#sapply{base}를 선택하여 txt1에 있는 모든 명사를 추출하고(extractNoun) 한글만 뽑아낸다(USE.NAMES = F).

txt3 <- sapply(txt1, extractNoun, USE.NAMES = F)

txt3


#리스트를 풀어준다.

txt4 <- unlist(txt3)

txt4


#글자의 갯수가 1개인 것들은 뺀다.

txt5 <- Filter(function(x){nchar(x)>=2}, txt4)

txt5


#gsub을 이용하여 원하는 단어를 뺀다.

txt5 <- gsub("박근혜","", txt5)

txt5


#얻은 자료를 new_word.txt로 저장한다.

write(unlist(txt5),"new_word.txt")

txt6 <- readLines("new_word.txt")

txt6


#wordcloud를 만들기 위해 관련 라이브러리 설치 및 호출

install.packages("wordcloud")

install.packages("RColorBrewer")

library("RColorBrewer")

library("wordcloud")


#wordcloud를 사용하기 위해 얻은 자료를 표로 만든다.

word1 <- read.table("new_word.txt")

word1


#각 단어의 사용 빈도를 확인하기 위해서 table()에 넣어본다.

word2 <- table(word1)

word2


#8가지 색상, Dark2라는 타입의 색 군집을 불러온다.

wordcolor <- brewer.pal(8, "Dark2")


#wordcloud 함수 사용. 

wordcloud(names(word2), freq = word2, min.freq = 1, max.words = 200, random.order = F, rot.per= .1, scale = c(4,0.5), colors = wordcolor)

#파이차트를 만들기 위해 빈도가 높은 상위 8개만 추린다.

top10 <- head(sort(word2, decreasing = T), 8)


top10










###################################

#전처리용 라이브러리 등록

library("dplyr")

library("stringr")

library("KoNLP")

useNIADic()


#트위터 댓글 자료를 가져와서 twitter에 저장

twitter <- read.csv("newstapa.csv", header = T, stringsAsFactors = F, fileEncoding = "UTF-8")


#안에 있는 컬럼의 이름을 한글에서 영어로 바꿔준다.

#앞이 최종적으로 출력하고자 하는 컬럼이름, 뒤가 바꾸려고 선택한 컬럼이름 이다.

twitter <- rename(twitter, no = 번호, id = 계정이름, date = 작성일, tw = 내용)


#내부에 있는 escape문자를 없애기 위해 str_replace_all을 사용한다. W는 대문자.

#띄어쓰기를 살리기 위해 escape문자를 " "스페이스 한 칸으로 바꾼다.

twitter$tw <- str_replace_all(twitter$tw, "\\W", " ")

#명사만 추출

nouns <- extractNoun(twitter$tw)

#unlist를 하고 테이블에서 자료를 본다.

word1 <- table(unlist(nouns))

#구조를 확인

str(word1)

#데이터프레임으로 바꾼다.

dfword <- as.data.frame(word1, stringsAsFactors = F)

#일단 위에 3개만 출력

head(dfword,3)

#컬럼에 Var1, Freq가 있는데 이름을 바꿔준다.

dfword <- rename (dfword, word = Var1, hit =Freq)

#바꾼걸 확인

head(dfword,3)


#한 개짜리 단어는 버린다

dfword <- filter(dfword, nchar(word)>=2)

#빈도수가 많은 단어로 정렬해서 위에서 25개만 추린다.

top25 <- dfword %>% arrange(desc(hit)) %>% head(25)

top25








#마음에 안 드는 단어들이 있어 다시 처리해준다.


#트위터 댓글 자료를 가져와서 twitter에 저장

twitter <- read.csv("newstapa.csv", header = T, stringsAsFactors = F, fileEncoding = "UTF-8")


#안에 있는 컬럼의 이름을 한글에서 영어로 바꿔준다.

#앞이 최종적으로 출력하고자 하는 컬럼이름, 뒤가 바꾸려고 선택한 컬럼이름 이다.

twitter <- rename(twitter, no = 번호, id = 계정이름, date = 작성일, tw = 내용)


#########여기서 마음에 안 드는 단어를 없앤다#########

#내부에 있는 escape문자를 없애기 위해 str_replace_all을 사용한다. W는 대문자.

#띄어쓰기를 살리기 위해 escape문자를 " "스페이스 한 칸으로 바꾼다.

twitter$tw <- str_replace_all(twitter$tw, "\\W", " ")

twitter$tw <- str_replace_all(twitter$tw, "들이", " ")

twitter$tw <- str_replace_all(twitter$tw, "우리", " ")

#명사만 추출

nouns <- extractNoun(twitter$tw)

#unlist를 하고 테이블에서 자료를 본다.

word1 <- table(unlist(nouns))

#구조를 확인

str(word1)

#데이터프레임으로 바꾼다.

dfword <- as.data.frame(word1, stringsAsFactors = F)

#일단 위에 3개만 출력

head(dfword,3)

#컬럼에 Var1, Freq가 있는데 이름을 바꿔준다.

dfword <- rename (dfword, word = Var1, hit =Freq)

#바꾼걸 확인

head(dfword,3)


#한 개짜리 단어는 버린다

dfword <- filter(dfword, nchar(word)>=2)

#빈도수가 많은 단어로 정렬해서 위에서 25개만 추린다.

top25 <- dfword %>% arrange(desc(hit)) %>% head(25)

top25



=================================== R ===================================

[R] R 9일차



'프로그래밍 > Python, R 프로그래밍' 카테고리의 다른 글

[R] 10일차  (0) 2018.05.28
[Python] 9일차  (0) 2018.05.23
[Python] Python 8일차  (0) 2018.05.21
[R] R 8일차  (0) 2018.05.21
[Python] Python 7일차  (0) 2018.05.18

+ Recent posts