R 단어 빈도 분석에 대해 알아보도록 하겠습니다. R은 텍스트 마이닝에 대한 유용한 라이브러리를 제공합니다. 단어의 빈도수를 확인하여 문장내에서 어떤 비중을 차지하고 있는지 확인해보도록 하겠습니다.
목차
Toggle1.텍스트 전처리
- 데이타 읽기
# 라이브러리 설치
install.package(”stringr”)
# 라이브러리 로딩
library(stringr)
raw_moon <- readLines("data/km-theking", encoding = "UTF-8")
head(raw_moon)
txt <- "치킨은!! 맛있다. xyz 정말 맛있다!@#"
txt
str_replace_all(string = txt, pattern = "[^가-힣]", replacement = " ")
- 불필요한 문자 제거하기
- str_replace_all()
- string : 처리할 텍스트
- pattern : 규칙 → 예> “[^가-힣]” : 한글 제외
- replacement : 바꿀 문자 → 예> “ “ : 공백
- str_replace_all()
# 라이브러리 설치
install.package(”stringr”)
# 라이브러리 로딩
library(stringr)
raw_moon <- readLines("data/km-theking", encoding = "UTF-8")
head(raw_moon)
txt <- "치킨은!! 맛있다. xyz 정말 맛있다!@#"
txt
moon <- raw_moon %>% str_replace_all(pattern = "[^가-힣]", replacement = " ")
- 연속된 공백 제거하기
- str_squish()
- 연속된 공백은 제거되고 하나의 공백만 남음.
moon <- moon %>% str_squish()
- tibble 구조로 바꾸기
- as_tibble()
library(dplyr)
moon <- as_tibble(moon)
- 전처리 작업 한 번에 하기
moon <- raw_moon %>%
str_replace_all("[^가-힣]", " ") %>% # 한글만 남기기
str_squish() %>% # 연속된 공백 제거
as_tibble() # tibble로 변환
2. 토큰화하기
- tidytext – unnest_tokens()
- “sentences”
- “words”
- “characters”
install.packages("tidytext")
library(tidytext)
# 문장 기준 토큰화
text %>%
unnest_tokens(input = value, # 토큰화할 텍스트
output = word, # 출력 변수명
token = "sentences") # 문장 기준
# 띄어쓰기 기준 토큰화
text %>%
unnest_tokens(input = value,
output = word,
token = "words") # 띄어쓰기 기준
# 문자 기준 토큰화
text %>%
unnest_tokens(input = value,
output = word,
token = "characters") # 문자 기준
- 토큰화하기
text %>%
unnest_tokens(input = value,
output = word,
token = "words") # 띄어쓰기 기준
3. R 단어 빈도 분석하기
- 단어 빈도 구하기 – count()
word_space <- word_space %>%
count(word, sort = T)
word_space
- 한 글자로 된 단어 제거하기 – filter(str_count())
str_count("배")
str_count("사과")
# 두 글자 이상만 남기기
word_space <- word_space %>%
count(word, sort = T) %>%
filter(str_count(word) > 1)
- 자주 사용된 단어 추출하기
top20 <- word_space %>%
head(20)
top20
- 막대 그래프 만들기 – geom_col()
install.packages("ggplot2")
library(ggplot2)
ggplot(top20, aes(x = reorder(word, n), y = n)) + # 단어 빈도순 정렬
geom_col() +
coord_flip()
- macOS에서 R 그래프에서 한글 표현하기
theme_set(theme_gray(base_family="AppleGothic"))
- 그래프 다듬기
ggplot(top20, aes(x = reorder(word, n), y = n)) +
geom_col() +
coord_flip() +
geom_text(aes(label = n), hjust = -0.3) + # 막대 밖 빈도 표시
labs(title = "문재인 대통령 출마 연설문 단어 빈도", # 그래프 제목
x = NULL, y = NULL) + # 축 이름 삭제
theme(title = element_text(size = 12)) # 제목 크기
- 워드 클라우드 만들기 – geom_text_wordcloud()
install.packages("ggwordcloud")
library(ggwordcloud)
ggplot(word_space, aes(label = word, size = n)) +
geom_text_wordcloud(seed = 1234) +
scale_radius(limits = c(3, NA), # 최소, 최대 단어 빈도
range = c(3, 30)) # 최소, 최대 글자 크기
- 그래프 다듬기
ggplot(word_space,
aes(label = word,
size = n,
col = n)) + # 빈도에 따라 색깔 표현
geom_text_wordcloud(seed = 1234) +
scale_radius(limits = c(3, NA),
range = c(3, 30)) +
scale_color_gradient(low = "#66aaf2", # 최소 빈도 색깔
high = "#004EA1") + # 최고 빈도 색깔
theme_minimal() # 배경 없는 테마 적용
- 그래프 폰트 바꾸기
install.packages("showtext")
library(showtext)
font_add_google(name = "Nanum Gothic", family = "nanumgothic")
showtext_auto()
- 그래프에 폰트 지정하기
ggplot(word_space,
aes(label = word,
size = n,
col = n)) +
geom_text_wordcloud(seed = 1234,
family = "nanumgothic") + # 폰트 적용
scale_radius(limits = c(3, NA),
range = c(3, 30)) +
scale_color_gradient(low = "#66aaf2",
high = "#004EA1") +
theme_minimal()
- 검은 고딕으로 바꾸기
font_add_google(name = "Black Han Sans", family = "blackhansans")
showtext_auto()
ggplot(word_space,
aes(label = word,
size = n,
col = n)) +
geom_text_wordcloud(seed = 1234,
family = "blackhansans") + # 폰트 적용
scale_radius(limits = c(3, NA),
range = c(3, 30)) +
scale_color_gradient(low = "#66aaf2",
high = "#004EA1") +
theme_minimal()
- ggplot2 패키지로 만든 그래프의 폰트 바꾸기
font_add_google(name = "Gamja Flower", family = "gamjaflower")
showtext_auto()
ggplot(top20, aes(x = reorder(word, n), y = n)) +
geom_col() +
coord_flip() +
geom_text(aes(label = n), hjust = -0.3) +
labs(title = "문재인 대통령 출마 연설문 단어 빈도",
x = NULL, y = NULL) +
theme(title = element_text(size = 12),
text = element_text(family = "gamjaflower")) # 폰트 적용
- RStudio는 새로 시작하면 폰트는 재설정해주어야 한다.
- ggplot2 기본 테마 폰트 바꾸기
theme_set(theme_gray(base_family = "nanumgothic"))
형태소 분석기에 대해 궁금하신 분은 여기 링크를 참고바랍니다.
참고 > Do It! 쉽게 배우는 R 텍스트 마이닝
“이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.”