이번 포스팅은 SimplePos09 함수를 이용하여 명사를 추출하고, 추가적인 불용어 처리 방법을 정리합니다. 분석에 활용할 텍스트 데이터 지난 포스팅에서 사용했던 네이버의 생성형 AI 서비스 큐에 대한 보도자료를 계속 이용하겠습니다. R 코드는 포스팅 하단에 업로드해 두었습니다.
01. 로딩
분석에 필요한 라이브러리를 로딩합니다.
library(tidyverse)
library(tidytext)
library(KoNLP)
useNIADic()
library(readxl)
library(wordcloud)
02. 작업 폴더
작업 폴더를 별도 지정합니다.
setwd("C:/test/ko_test")
03. 데이터 호출
이전 포스팅에서 사용했던 엑셀 파일과 동일합니다. read_excel 함수를 이용하여 호출합니다.
naverq <- read_excel("naverq.xlsx", col_names = TRUE)
04. 데이터 전처리 : 제목
title 열에 있는 보도자료 제목들을 간단하게 정제합니다.
naverq_title <- naverq %>%
select(title) %>%
mutate(title = str_replace_all(title, "[^가-힣]", " "),
title = str_squish(title),
id = row_number())
05. 품사 분석 : 명사 추출
SimplePos09 함수를 이용하여 품사 분석 후, 두 단어 이상의 명사만 추출합니다. 분석 데이터량이 많을수록 시간 소요가 많습니다. 참고하기 바랍니다.
title_pos <- naverq_title %>%
unnest_tokens(input = title,
output = pos,
token = SimplePos09,
drop = F)
title_pos_nouns <- title_pos %>%
filter(str_detect(pos, "/n")) %>%
mutate(word = str_remove(pos, "/.*$")) %>%
filter(str_length(word) > 1)
06. 정렬
빈도 수 기준으로 단어들을 정렬합니다.
title_pos_nouns <- title_pos_nouns %>%
count(word, sort = TRUE) %>%
filter(n>1)
title_pos_nouns
07. 불용어
불용어 목록에 네이버라는 단어를 추가한 후, 불용어 처리합니다.
stopwords <- tibble(word = c("네이버"))
title_pos_nouns <- title_pos_nouns %>%
anti_join(stopwords, by = "word")
08. 데이터 시각화 : 막대그래프
상위 30개 단어들을 빈도 수 기준으로 정렬한 막대그래프를 구현합니다.
top_noun30 <- title_pos_nouns %>% head(30)
ggplot(top_noun30, 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))
09. 단어 추가 정리
출력 결과 중 "써보", "복잡한" 이라는 단어의 경우, "써보"라는 단어는 삭제하고, "복잡한"의 경우는 "복잡"만 남기는 추가 정리를 합니다. 추가 정리가 잘 되었는지 확인한 후, 상위 빈도 30개 단어를 다시 추출합니다.
title_pos_nouns <- title_pos_nouns %>%
mutate(word = gsub("써보", "", word)) %>%
mutate(word = gsub("복잡한", "복잡", word))
title_pos_nouns
top_noun30 <- title_pos_nouns %>% head(30)
10. 데이터 시각화 : 워드클라우드
추출된 2단어 이상의 명사만 이용하여 워드클라우드를 구현합니다.
wordcloud(words=top_noun30$word,freq=top_noun30$n,
scale=c(7,.5),rot.per=0.0 ,
colors=brewer.pal(8,"Dark2"))
11. 파일 다운로드
위에서 설명한 R 한글 텍스트 마이닝 실행 코드입니다. 본문에는 보도자료의 제목만 이용하여 텍스트 마이닝을 시도했습니다만, 업로드한 파일에는 키워드를 이용한 R 실행코드도 포함되어 있으니 참고 바랍니다.
다음 포스팅은 단어 빈도-역문서빈도 분석(TF-IDF 분석)입니다. 관련 내용은 위의 링크 포스팅을 참고 바랍니다.
'교육' 카테고리의 다른 글
R 한글 텍스트 마이닝 분석 (4) : tidygraph와 ggraph │키워드 네트워크 분석 (0) | 2023.10.10 |
---|---|
R 한글 텍스트 마이닝 (3) : TF - IDF (0) | 2023.10.03 |
R 한글 텍스트 마이닝 (1) │네이버 생성형 AI 큐 국내 보도자료 분석│엑셀 데이터 호출 및 빈도분석 시각화 (0) | 2023.09.24 |
해외 뉴스 텍스트 네트워크 분석 │영어 데이터 정제 방법 (0) | 2023.06.24 |
2023 구글 키워드 플래너 사용법 (0) | 2023.06.20 |