# 패키지 설치 install.packages("rJava") install.packages("memoise") install.packages("KoNLP") # 패키지 로드 library(KoNLP) library(dplyr) useNIADic() # 데이터 불러오기 setwd('C:/Users/Playdata/weekend_R/쉽게 배우는 R 데이터 분석') txt <- readLines('./data/hiphop.txt') head(txt) install.packages('stringr') library(stringr) txt <- str_replace_all(txt, '\\W', ' ') extractNoun('대한민국의 영토는 한반도와 그 부소도서로 한다') R.Version() R.version R.version.string version # 가사에서 명사 추출 nouns <- extractNoun(txt) # 추출한 명사 list를 문자열 벡터로 변환, 단어별 빈도표 생성 wordcount <- table(unlist(nouns)) # 데이터 프레임으로 변환 df_word <- as.data.frame(wordcount, stringasFactors = F) head(df_word) # 변수명 수정 df_word <- rename(df_word, word = Var1, freq = Freq) head(df_word) # ?nchar # 두 글자 이상 단어 추출 df_word <- filter(df_word, nchar(word) >= 2) #as.character(df$col1) df_word <- filter(df_word, nchar(as.character(df_word$word)) >= 2) head(df_word) top_20 <- df_word %>% arrange(desc(freq)) %>% head(20) top_20 # 패키지 설치 install.packages('wordcloud') # 패키지 로드 library(wordcloud) library(RColorBrewer) # Dark2 색상 목록에서 8개 색상 추출 pal <- brewer.pal(8, 'Dark2') set.seed(1234) wordcloud(words = df_word$word, freq = df_word$freq, min.freq = 2 , max.words = 200, random.order = F, rot.per = .1, scale = c(4, 0.3), colors = pal ) pal <- brewer.pal(9, 'Blues')[5:9] set.seed(1234) wordcloud(words = df_word$word, freq = df_word$freq, min.freq = 2 , max.words = 200, random.order = F, rot.per = .1, scale = c(4, 0.3), colors = pal) # 10-2 국정원 트윗 텍스트 마이닝 # 데이터 로드 twitter <- read.csv('./data/twitter.csv', header = T, stringsAsFactors = F, fileEncoding = 'UTF-8') head(twitter) # 변수명 수정 twitter <- rename(twitter, no = 번호, id = 계정이름, date = 작성일, tw = 내용) head(twitter) # 특수문자 제거 twitter$tw <- str_replace_all(twitter$tw, '\\W', ' ') head(twitter$tw) # 단어 빈도표 만들기 # 트윗에서 명사추출 nouns <- extractNoun(twitter$tw) # 추출한 명사 list를 문자열 벡터로 변환, 단어별 빈도표 생성 wordcount <- table(unlist(nouns)) # 데이터 프레임으로 변환 df_word <- as.data.frame(wordcount, stringsAsFactors = F) # 변수명 수정 df_word <- rename(df_word, word = Var1, freq = Freq) # 두 글자 이상 단어만 추출 df_word <- filter(df_word, nchar(df_word$word) >= 2) View(df_word) top20 <- df_word %>% arrange(desc(freq)) %>% head(20) top20 library(ggplot2) # 빈도 순서 변수 생성 order <- arrange(top20, freq)$word ggplot(data=top20, aes(x=word, y=freq)) + ylim(0, 2500) + geom_col() + coord_flip() + scale_x_discrete(limit = order) + # 빈도순 막대 정렬 geom_text(aes(label=freq), hjust=-0.3) # 빈도 표 pal <- brewer.pal(8, 'Dark2') set.seed(1234) wordcloud(words = df_word$word, freq=df_word$freq, min.freq = 10, max.words = 200, random.order = F, rot.per =.1, scale = c(6, 0.2), colors = pal) pal <- brewer.pal(9, 'Blues')[5:9] set.seed(1234) wordcloud(words = df_word$word, freq=df_word$freq, min.freq = 10, max.words = 200, random.order = F, rot.per = .1, scale = c(6, 0.2), colors = pal)