KoNLP를 활용하여 형태소 분석 패키지를 이용할 수 있다. 또 이렇게 분석된 한글을 통해 워드 클라우드 형태의 시각화 자료도 생성 가능하다.
#day04_03_wordcloud.R
install.packages('tidyverse')
library(tidyverse)
#1. 한글 분석을 위한 데이터 불러오기
moon_txt <- readLines('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/moon_UTF8.txt',encoding = 'UTF-8')
moon_txt
#한글 형태소 분석을 위한 형태소 분석기 설치
#java가 없으면 에러
install.packages('KoNLP')
#CRAN 에서 제외된 패키지설치하기 ex)KoNLP
install.packages('devtools')
install.packages('https://cran.r-project.org/src/contrib/Archive/KoNLP/KoNLP_0.80.1.tar.gz',repos = NULL, type='source')
devtools::install_github('haven-jeon/KoNLP')
library(KoNLP)
SimplePos09('밥을 먹고 싶다고 생각하는 밤')
moon_ko<- moon_txt %>% SimplePos09()
moon_ko
library(reshape2)
#melt()를 이용하여 원 데이의 출현 빈도 숫자를 세고, tibble을 활용하여 dataframe 의 형태로 변경한다.
moon_ko %>% melt %>% head(10) #melt : 리스트 내의 데이터를 빼내면서 정형화 시키는 메서드
moon_ko %>% melt %>% as_tibble() %>% head(10) # as_tibble() : 데이터 프레임의 형태로 전환 가능하게 하는 메서드, 데이터 프레임은 테이블에 비해 연산이 가능하다는 차이점을 가진다.
m_df <- moon_ko %>% melt %>% as_tibble()
m_df
#명사의 출현빈도를 구하기 위하여 필요한 데이터 분류
m_df1 <- m_df[,c('L1','value')]
m_df1
#정규식을 이용하여 한글이면서 /N으로 끝나는 글자만
tmp_txt <- c('사실/N','test/N','알/P')
tmp_txt
tmp_txt %>% str_match('([가-힣]+)/N')[,2]
#연설문 데이터를 정규식으로 분류하기
m_df1$value %>% str_match('([가-힣]+)/N')
#pipe 방식아닌 기존 방식으로 코드 작성시
str_match(m_df1$value,'([가-힣]+)/N')
m_df1<- m_df1 %>% mutate(noun=str_match(value,'([가-힣]+)/N')[,2]) %>% na.omit()
#mutate 열을 늘린다.
#na.omit() : 결측값이 있는 행 전체를 데이터셋에서 제거
m_df1
#'세' 번 처럼 1글자는 대부분 의미가 없으므로 글자 길이를 세어서 2개 이상 인 경우만 가져오기
m_df1$noun %>% str_length()
m_df1 %>% mutate(noun_length=str_length(noun)) #열 늘림 (noun_length 열 추가)
m_df1 %>% mutate(noun_length=str_length(noun)) %>% filter(noun_length>=2) #noun_length 가 2 이상인 것만 가져오기, filter()활용
m_df2<-m_df1 %>% mutate(noun_length=str_length(noun)) %>% filter(noun_length>=2) %>% count(noun,sort=T) #filter가 된 데이터들의 개수 세는 메서드 추가
m_df2
#count() : group별로 관측지 수를 세어 테이블 형태로 리턴하는 함수
#워드 클라우드 그리기
install.packages('wordcloud2')
library(wordcloud2)
wordcloud2(m_df2)
#단어가 너무 많이 나오므로 단어 출현의 빈도가 2 이상인 것만 그려보기
m_df2<-m_df1 %>% mutate(noun_length=str_length(noun)) %>% filter(noun_length>=2 & noun>=2) %>% count(noun,sort=T)
wordcloud2(m_df2)
m_df2 %>% filter(n>=2) %>% wordcloud2()
#글자의 회전 반경 정하기
m_df2 %>% filter(n>=2) %>% wordcloud2(minRotation = 0,maxRotation = 0)
#숙제
#my_crawling.csv 이용하여 워드클라우드 그리기
#day04_03_wordcloud.R
install.packages('tidyverse')
library(tidyverse)
#1. 한글 분석을 위한 데이터 불러오기
moon_txt <- readLines('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/moon_UTF8.txt',encoding = 'UTF-8')
moon_txt
#한글 형태소 분석을 위한 형태소 분석기 설치
#java가 없으면 에러
install.packages('KoNLP')
#CRAN 에서 제외된 패키지설치하기 ex)KoNLP
install.packages('devtools')
install.packages('https://cran.r-project.org/src/contrib/Archive/KoNLP/KoNLP_0.80.1.tar.gz',repos = NULL, type='source')
devtools::install_github('haven-jeon/KoNLP')
library(KoNLP)
SimplePos09('밥을 먹고 싶다고 생각하는 밤')
moon_ko<- moon_txt %>% SimplePos09()
moon_ko
library(reshape2)
#melt()를 이용하여 원 데이의 출현 빈도 숫자를 세고, tibble을 활용하여 dataframe 의 형태로 변경한다.
moon_ko %>% melt %>% head(10) #melt : 리스트 내의 데이터를 빼내면서 정형화 시키는 메서드
moon_ko %>% melt %>% as_tibble() %>% head(10) # as_tibble() : 데이터 프레임의 형태로 전환 가능하게 하는 메서드, 데이터 프레임은 테이블에 비해 연산이 가능하다는 차이점을 가진다.
m_df <- moon_ko %>% melt %>% as_tibble()
m_df
#명사의 출현빈도를 구하기 위하여 필요한 데이터 분류
m_df1 <- m_df[,c('L1','value')]
m_df1
#정규식을 이용하여 한글이면서 /N으로 끝나는 글자만
tmp_txt <- c('사실/N','test/N','알/P')
tmp_txt
tmp_txt %>% str_match('([가-힣]+)/N')[,2]
#연설문 데이터를 정규식으로 분류하기
m_df1$value %>% str_match('([가-힣]+)/N')
#pipe 방식아닌 기존 방식으로 코드 작성시
str_match(m_df1$value,'([가-힣]+)/N')
m_df1<- m_df1 %>% mutate(noun=str_match(value,'([가-힣]+)/N')[,2]) %>% na.omit()
#mutate 열을 늘린다.
#na.omit() : 결측값이 있는 행 전체를 데이터셋에서 제거
m_df1
#'세' 번 처럼 1글자는 대부분 의미가 없으므로 글자 길이를 세어서 2개 이상 인 경우만 가져오기
m_df1$noun %>% str_length()
m_df1 %>% mutate(noun_length=str_length(noun)) #열 늘림 (noun_length 열 추가)
m_df1 %>% mutate(noun_length=str_length(noun)) %>% filter(noun_length>=2) #noun_length 가 2 이상인 것만 가져오기, filter()활용
m_df2<-m_df1 %>% mutate(noun_length=str_length(noun)) %>% filter(noun_length>=2) %>% count(noun,sort=T) #filter가 된 데이터들의 개수 세는 메서드 추가
m_df2
#count() : group별로 관측지 수를 세어 테이블 형태로 리턴하는 함수
#워드 클라우드 그리기
install.packages('wordcloud2')
library(wordcloud2)
wordcloud2(m_df2)
#단어가 너무 많이 나오므로 단어 출현의 빈도가 2 이상인 것만 그려보기
m_df2<-m_df1 %>% mutate(noun_length=str_length(noun)) %>% filter(noun_length>=2 & noun>=2) %>% count(noun,sort=T)
wordcloud2(m_df2)
m_df2 %>% filter(n>=2) %>% wordcloud2()
#글자의 회전 반경 정하기
m_df2 %>% filter(n>=2) %>% wordcloud2(minRotation = 0,maxRotation = 0)
#숙제
#my_crawling.csv 이용하여 워드클라우드 그리기
댓글
댓글 쓰기