Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Sum
- max
- 그래프 생성 문법
- 빅데이터분석
- 팀스파르타
- loop 문
- if문 작성법
- sql
- 막대그래프
- merge
- 총과 카드만들기
- 그래프시각화
- 회귀분석
- %in%
- Intersect
- 데이터분석
- 상관관계
- sqld
- 정보획득량
- 빅데이터
- Dense_Rank
- 데이터분석가
- 히스토그램 그리기
- 단순회귀 분석
- 회귀분석 알고리즘
- 여러 데이터 검색
- count
- 불순도제거
- difftime
- 순위출력
Archives
- Today
- Total
ch0nny_log
[빅데이터분석] R _ 42. 데이터 시각화 7 (워드 클라우드 그래프 (2)) 본문
★ 점심시간 문제
cbs 라디오 그대와 여는 아침에 노래는 주로 어떤 노래들이 반복해서 선곡되는지 워드 클라우드로 확인하세요.
김용신의_그대와_여는_아침_선곡표_7월부터_9월까지 install.packages("wordcloud2") install.packages("tm") install.packages("RColorBrewer") install.packages("plyr") install.packages("data.table") # 라이브러리 로드 library(wordcloud2) library(tm) library(RColorBrewer) library(plyr) library(data.table) # 텍스트 데이터 로드 setwd("c:\\data") file_path <- "김용신의_그대와_여는_아침_선곡표_7월부터_9월까지.txt" txt <- readLines(file_path, encoding = "UTF-8") # 특수문자 제거 및 공백 처리 cleaned_txt <- iconv(txt, "UTF-8", "UTF-8", sub="") cleaned_txt <- gsub("[^[:alnum:][:space:]]", " ", cleaned_txt) cleaned_txt <- gsub("\\s+", " ", cleaned_txt) # 연속된 공백 제거 # 텍스트를 Corpus로 변환 corpus <- Corpus(VectorSource(cleaned_txt)) # 데이터 전처리 corpus <- tm_map(corpus, content_transformer(tolower)) # 소문자로 변환 corpus <- tm_map(corpus, removePunctuation) # 구두점 제거 corpus <- tm_map(corpus, removeNumbers) # 숫자 제거 corpus <- tm_map(corpus, removeWords, stopwords("en")) # 영어 불용어 제거 corpus <- tm_map(corpus, stripWhitespace) # 여백 제거 # 불필요한단어 빼기 # 단어 행렬 생성 dtm <- TermDocumentMatrix(corpus) m <- as.matrix(dtm) word_freqs <- sort(rowSums(m), decreasing = TRUE) word_freq_df <- data.frame(word = names(word_freqs), freq = word_freqs) # 워드 클라우드 생성 (하트 모양) wordcloud2(data = word_freq_df, shape = "heart", color = brewer.pal(8, "Dark2"))
■ 감정분석 데이터 분석
문제 1. 조바이든 연설문을 워드 클라우드로 시각화 하시오
# 패키지 설치 및 라이브러리 로드 install.packages("wordcloud2") install.packages("tm") install.packages("RColorBrewer") install.packages("htmlwidgets") install.packages("webshot") install.packages("magick") install.packages("ggplot2") install.packages("grid") library(wordcloud2) library(tm) # 문자를 정제하고 전처리하기 위해 필요 library(RColorBrewer) library(htmlwidgets) # html 위젯을 생성하기 위해 필요합니다. library(webshot) # html 파일을 png 그림파일로 저장하기 위해 library(magick) # 이미지 파일을 읽고 변환하기 위한 패키지 library(ggplot2) library(grid) # 두개의 그래프를 하나의 화면에 출력하기 위해 필요 # PhantomJS 설치 webshot::install_phantomjs() # webshot 패키지를 위해 필요한 패키지 # 텍스트 데이터 로드 setwd("c:\\data") biden_file_path <- "joe.txt" biden_txt <- readLines(biden_file_path, encoding = "UTF-8") # 특수문자 제거 및 공백 처리 cleaned_txt <- iconv(biden_txt, "UTF-8", "UTF-8", sub="") cleaned_txt <- gsub("[^[:alnum:][:space:]]", " ", cleaned_txt) cleaned_txt <- gsub("\\s+", " ", cleaned_txt) # 텍스트를 Corpus로 변환 corpus <- Corpus(VectorSource(cleaned_txt)) # 데이터 전처리 corpus <- tm_map(corpus, content_transformer(tolower)) # 소문자변환 corpus <- tm_map(corpus, removePunctuation) # 구두점 제거 corpus <- tm_map(corpus, removeNumbers) # 숫자 제거 corpus <- tm_map(corpus, removeWords, stopwords("en")) # 불용어 제거 corpus <- tm_map(corpus, stripWhitespace) # 공백만 있는 행 제거 # 단어 행렬 생성 dtm <- TermDocumentMatrix(corpus) # 단어 행렬 만들기 m <- as.matrix(dtm) # 행렬형태로 변환 word_freqs <- sort(rowSums(m), decreasing = TRUE) # 빈도수 높은 단어로 정렬 word_freq_df <- data.frame(word = names(word_freqs), freq = word_freqs) word_freq_df # 상위 100개의 단어만 선택 word_freq_df <- head(word_freq_df, 100) # 워드 클라우드 생성 word_cloud <- wordcloud2(data = word_freq_df, shape = "circle", color = brewer.pal(8, "Dark2")) # htmlwidgets로 워드 클라우드를 저장 saveWidget(word_cloud, "biden_cloud.html", selfcontained = TRUE) # 워드 클라우드를 이미지로 저장 webshot("biden_cloud.html", file = "biden_cloud.png", delay = 10) # magick으로 이미지 불러오기 biden_img <- image_read("biden_cloud.png") # ggplot으로 이미지 변환 biden_plot <- ggplot() + annotation_custom(rasterGrob(biden_img, width=unit(1,"npc"), height=unit(1,"npc"))) + theme_void() # 플롯 출력 print(biden_plot)
문제 2. 위와같이 트럼프 연설문도 시각화하시오.
# 패키지 설치 및 라이브러리 로드 install.packages("wordcloud2") install.packages("tm") install.packages("RColorBrewer") install.packages("htmlwidgets") install.packages("webshot") install.packages("magick") install.packages("ggplot2") install.packages("grid") library(wordcloud2) library(tm) library(RColorBrewer) library(htmlwidgets) library(webshot) library(magick) library(ggplot2) library(grid) # PhantomJS 설치 webshot::install_phantomjs() # 텍스트 데이터 로드 setwd("c:\\data") biden_file_path <- "joe.txt" positive_words_file <- "positive-words.txt" biden_txt <- readLines(biden_file_path, encoding = "UTF-8") #긍정단어 불러오기 positive_words <- readLines(positive_words_file, encoding = "UTF-8") # 특수문자 제거 및 공백 처리 cleaned_txt <- iconv(biden_txt, "UTF-8", "UTF-8", sub="") cleaned_txt <- gsub("[^[:alnum:][:space:]]", " ", cleaned_txt) cleaned_txt <- gsub("\\s+", " ", cleaned_txt) # 텍스트를 Corpus로 변환 corpus <- Corpus(VectorSource(cleaned_txt)) # 데이터 전처리 corpus <- tm_map(corpus, content_transformer(tolower)) corpus <- tm_map(corpus, removePunctuation) corpus <- tm_map(corpus, removeNumbers) corpus <- tm_map(corpus, removeWords, stopwords("en")) corpus <- tm_map(corpus, stripWhitespace) # 단어 행렬 생성 dtm <- TermDocumentMatrix(corpus) m <- as.matrix(dtm) word_freqs <- sort(rowSums(m), decreasing = TRUE) word_freq_df <- data.frame(word = names(word_freqs), freq = word_freqs) # 긍정 단어 필터링 positive_word_freq_df <- word_freq_df[word_freq_df$word %in% positive_words, ] # 상위 100개의 단어만 선택 positive_word_freq_df <- head(positive_word_freq_df, 100) # 워드 클라우드 생성 positive_cloud <- wordcloud2(data = positive_word_freq_df, shape = "circle", color = brewer.pal(8, "Dark2")) # htmlwidgets로 워드 클라우드를 저장 saveWidget(positive_cloud, "positive_cloud.html", selfcontained = TRUE) # 워드 클라우드를 이미지로 저장 webshot("positive_cloud.html", file = "positive_cloud.png", delay = 10) # magick으로 이미지 불러오기 positive_img <- image_read("positive_cloud.png") # ggplot으로 이미지 변환 positive_plot <- ggplot() + annotation_custom(rasterGrob(positive_img, width=unit(1,"npc"), height=unit(1,"npc"))) + theme_void() # 플롯 출력 print(positive_plot)
문제 3. 조바이든 연설문에는 긍정단어가 얼마나 나오는지 워드 클라우드로 시각화 하시오
데이터: 영문 긍정단어, 영문 부정단어
문제 3. 트럼프 연설문에는 긍정단어가 얼마나 나오는지 워드 클라우드로 시각화 하시오
데이터: 영문 긍정단어, 영문 부정단어
# 패키지 설치 및 라이브러리 로드 install.packages("wordcloud2") install.packages("tm") install.packages("RColorBrewer") install.packages("htmlwidgets") install.packages("webshot") install.packages("magick") install.packages("ggplot2") install.packages("grid") library(wordcloud2) library(tm) library(RColorBrewer) library(htmlwidgets) library(webshot) library(magick) library(ggplot2) library(grid) # PhantomJS 설치 webshot::install_phantomjs() # 텍스트 데이터 로드 setwd("c:\\data") trump_file_path <- "trump.txt" positive_words_file <- "positive-words.txt" trump_txt <- readLines(trump_file_path, encoding = "UTF-8") positive_words <- readLines(positive_words_file, encoding = "UTF-8") # 특수문자 제거 및 공백 처리 cleaned_txt <- iconv(trump_txt, "UTF-8", "UTF-8", sub="") cleaned_txt <- gsub("[^[:alnum:][:space:]]", " ", cleaned_txt) cleaned_txt <- gsub("\\s+", " ", cleaned_txt) # 텍스트를 Corpus로 변환 corpus <- Corpus(VectorSource(cleaned_txt)) # 데이터 전처리 corpus <- tm_map(corpus, content_transformer(tolower)) corpus <- tm_map(corpus, removePunctuation) corpus <- tm_map(corpus, removeNumbers) corpus <- tm_map(corpus, removeWords, stopwords("en")) corpus <- tm_map(corpus, stripWhitespace) # 단어 행렬 생성 dtm <- TermDocumentMatrix(corpus) m <- as.matrix(dtm) word_freqs <- sort(rowSums(m), decreasing = TRUE) word_freq_df <- data.frame(word = names(word_freqs), freq = word_freqs) # 긍정 단어 필터링 positive_word_freq_df <- word_freq_df[word_freq_df$word %in% positive_words, ] # 상위 100개의 단어만 선택 positive_word_freq_df <- head(positive_word_freq_df, 100) # 워드 클라우드 생성 positive_cloud <- wordcloud2(data = positive_word_freq_df, shape = "circle", color = brewer.pal(8, "Dark2")) # htmlwidgets로 워드 클라우드를 저장 saveWidget(positive_cloud, "positive_cloud.html", selfcontained = TRUE) # 워드 클라우드를 이미지로 저장 webshot("positive_cloud.html", file = "positive_cloud.png", delay = 10) # magick으로 이미지 불러오기 positive_img <- image_read("positive_cloud.png") # ggplot으로 이미지 변환 positive_plot <- ggplot() + annotation_custom(rasterGrob(positive_img, width=unit(1,"npc"), height=unit(1,"npc"))) + theme_void() # 플롯 출력 print(positive_plot)
문제 4. 바이든 연설문에서 긍정단어를 워드클라우드로 그리는데 하나의 화면에 같이 출력되게하시오.
# 패키지 설치 및 라이브러리 로드 install.packages("wordcloud2") install.packages("tm") install.packages("RColorBrewer") install.packages("plyr") install.packages("data.table") install.packages("patchwork") install.packages("htmlwidgets") install.packages("webshot") install.packages("magick") install.packages("ggplot2") install.packages("grid") library(wordcloud2) library(tm) library(RColorBrewer) library(plyr) library(data.table) library(patchwork) library(htmlwidgets) library(webshot) library(magick) library(ggplot2) library(grid) # PhantomJS 설치 webshot::install_phantomjs() # 텍스트 데이터 로드 biden_file_path <- "joe.txt" positive_words_file <- "positive-words.txt" negative_words_file <- "negative-words.txt" biden_txt <- readLines(biden_file_path, encoding = "UTF-8") positive_words <- readLines(positive_words_file, encoding = "UTF-8") negative_words <- readLines(negative_words_file, encoding = "UTF-8") # 특수문자 제거 및 공백 처리 cleaned_txt <- iconv(biden_txt, "UTF-8", "UTF-8", sub="") cleaned_txt <- gsub("[^[:alnum:][:space:]]", " ", cleaned_txt) cleaned_txt <- gsub("\\s+", " ", cleaned_txt) # 텍스트를 Corpus로 변환 corpus <- Corpus(VectorSource(cleaned_txt)) # 데이터 전처리 corpus <- tm_map(corpus, content_transformer(tolower)) corpus <- tm_map(corpus, removePunctuation) corpus <- tm_map(corpus, removeNumbers) corpus <- tm_map(corpus, removeWords, stopwords("en")) corpus <- tm_map(corpus, stripWhitespace) # 단어 행렬 생성 dtm <- TermDocumentMatrix(corpus) m <- as.matrix(dtm) word_freqs <- sort(rowSums(m), decreasing = TRUE) word_freq_df <- data.frame(word = names(word_freqs), freq = word_freqs) # 긍정 단어 및 부정 단어 필터링 positive_word_freq_df <- word_freq_df[word_freq_df$word %in% positive_words, ] negative_word_freq_df <- word_freq_df[word_freq_df$word %in% negative_words, ] # 상위 100개의 단어만 선택 positive_word_freq_df <- head(positive_word_freq_df, 100) negative_word_freq_df <- head(negative_word_freq_df, 100) # 워드 클라우드 생성 positive_cloud <- wordcloud2(data = positive_word_freq_df, shape = "circle", color = brewer.pal(8, "Dark2")) negative_cloud <- wordcloud2(data = negative_word_freq_df, shape = "circle", color = brewer.pal(8, "Reds")) # htmlwidgets로 각각의 워드 클라우드를 저장 saveWidget(positive_cloud, "positive_cloud.html", selfcontained = TRUE) saveWidget(negative_cloud, "negative_cloud.html", selfcontained = TRUE) # 두 개의 htmlwidgets을 한 화면에 표시 webshot("positive_cloud.html", file = "positive_cloud.png", delay = 10) webshot("negative_cloud.html", file = "negative_cloud.png", delay = 10) # magick으로 이미지 불러오기 positive_img <- image_read("positive_cloud.png") negative_img <- image_read("negative_cloud.png") # ggplot으로 이미지 변환 positive_plot <- ggplot() + annotation_custom(rasterGrob(positive_img, width=unit(1,"npc"), height=unit(1,"npc"))) + theme_void() negative_plot <- ggplot() + annotation_custom(rasterGrob(negative_img, width=unit(1,"npc"), height=unit(1,"npc"))) + theme_void() # patchwork로 두 이미지를 하나의 화면에 표시 combined_plot <- positive_plot + negative_plot # 플롯 출력 print(combined_plot)
문제 5. 트럼연설문에서 긍정단어를 워드클라우드로 그리는데 하나의 화면에 같이 출력되게하시오.
# 패키지 설치 및 라이브러리 로드 install.packages("wordcloud2") install.packages("tm") install.packages("RColorBrewer") install.packages("plyr") install.packages("data.table") install.packages("patchwork") install.packages("htmlwidgets") install.packages("webshot") install.packages("magick") install.packages("ggplot2") install.packages("grid") library(wordcloud2) library(tm) library(RColorBrewer) library(plyr) library(data.table) library(patchwork) library(htmlwidgets) library(webshot) library(magick) library(ggplot2) library(grid) # PhantomJS 설치 webshot::install_phantomjs() # 텍스트 데이터 로드 trump_file_path <- "trump.txt" positive_words_file <- "positive-words.txt" negative_words_file <- "negative-words.txt" trump_txt <- readLines(trump_file_path, encoding = "UTF-8") positive_words <- readLines(positive_words_file, encoding = "UTF-8") negative_words <- readLines(negative_words_file, encoding = "UTF-8") # 특수문자 제거 및 공백 처리 cleaned_txt <- iconv(trump_txt, "UTF-8", "UTF-8", sub="") cleaned_txt <- gsub("[^[:alnum:][:space:]]", " ", cleaned_txt) cleaned_txt <- gsub("\\s+", " ", cleaned_txt) # 텍스트를 Corpus로 변환 corpus <- VCorpus(VectorSource(cleaned_txt)) # 데이터 전처리 corpus <- tm_map(corpus, content_transformer(tolower)) corpus <- tm_map(corpus, removePunctuation) corpus <- tm_map(corpus, removeNumbers) corpus <- tm_map(corpus, removeWords, stopwords("en")) corpus <- tm_map(corpus, stripWhitespace) # 단어 행렬 생성 dtm <- TermDocumentMatrix(corpus) m <- as.matrix(dtm) word_freqs <- sort(rowSums(m), decreasing = TRUE) word_freq_df <- data.frame(word = names(word_freqs), freq = word_freqs) # 긍정 단어 및 부정 단어 필터링 positive_word_freq_df <- word_freq_df[word_freq_df$word %in% positive_words, ] negative_word_freq_df <- word_freq_df[word_freq_df$word %in% negative_words, ] # 상위 100개의 단어만 선택 positive_word_freq_df <- head(positive_word_freq_df, 100) negative_word_freq_df <- head(negative_word_freq_df, 100) # 워드 클라우드 생성 positive_cloud <- wordcloud2(data = positive_word_freq_df, shape = "circle", color = brewer.pal(8, "Dark2")) negative_cloud <- wordcloud2(data = negative_word_freq_df, shape = "circle", color = brewer.pal(8, "Reds")) # htmlwidgets로 각각의 워드 클라우드를 저장 saveWidget(positive_cloud, "positive_cloud.html", selfcontained = TRUE) saveWidget(negative_cloud, "negative_cloud.html", selfcontained = TRUE) # 두 개의 htmlwidgets을 한 화면에 표시 webshot("positive_cloud.html", file = "positive_cloud.png", delay = 10) webshot("negative_cloud.html", file = "negative_cloud.png", delay = 10) # magick으로 이미지 불러오기 positive_img <- image_read("positive_cloud.png") negative_img <- image_read("negative_cloud.png") # ggplot으로 이미지 변환 positive_plot <- ggplot() + annotation_custom(rasterGrob(positive_img, width=unit(1,"npc"), height=unit(1,"npc"))) + theme_void() negative_plot <- ggplot() + annotation_custom(rasterGrob(negative_img, width=unit(1,"npc"), height=unit(1,"npc"))) + theme_void() # patchwork로 두 이미지를 하나의 화면에 표시 combined_plot <- positive_plot + negative_plot # 플롯 출력 print(combined_plot)
'빅데이터 분석(with 아이티윌) > R' 카테고리의 다른 글
[빅데이터분석] R _ 44. 데이터 시각화 9 (소리데이터) (0) | 2024.07.04 |
---|---|
[빅데이터분석] R _ 43. 데이터 시각화 8 (지도 그래프) (0) | 2024.07.04 |
[빅데이터분석] R _ 41. 데이터 시각화 7 (워드 클라우드 그래프) (0) | 2024.07.03 |
[빅데이터분석] R _ 40. 데이터 시각화 6. (박스 그래프) / IQR /이상치 확인 (0) | 2024.07.03 |
R 그래프 코드 모음 (0) | 2024.07.03 |