본문 바로가기

교육

R 한글 텍스트 마이닝 (1) │네이버 생성형 AI 큐 국내 보도자료 분석│엑셀 데이터 호출 및 빈도분석 시각화

지난 포스팅에서 한글 텍스트 마이닝 분석을 위한 KoNLP 설치하는 방법까지 설명하였습니다. 이어서 테스트도 할 겸 엑셀의 텍스트 데이터를 호출하고, 빈도 분석까지 간단히 정리해 보겠습니다. 예제 데이터는 9월 20일 출시된 네이버의 생성형 AI 서비스인 큐에 대한 국내 보도자료이며, 이 중 제목과 키워드를 이용합니다. 

 

KoNLP 설치 순서 │scala-library-2.11.8.jar 오류 해결 방법 │R 4.3.1 (Window 11 기준)

R에서 한글 텍스트 마이닝 분석을 실행하기 위해서는 JAVA와 KoNLP 패키지를 설치해야 합니다. 포스팅을 업데이트하는 현재 날짜는 2023년 9월 19일입니다. 오늘 기준 R 최근 버전은 4.3.1이며, 해당 버

e-datanews.tistory.com

 

1. 데이터 수집

네이버의 생성형 AI 서비스인 큐에 대한 국내 보도자료는 블로그에서 많이 인용했던 빅카인즈입니다. 빅카인즈를 처음 들어본 분들은 다음 포스팅을 통해 사용법을 간단하게 확인하고 이번 포스팅을 읽어보기 바랍니다. 

 

빅카인즈 AI │AI 신문 뉴스 기사 작성 방법과 예시

한국언론진흥재단의 뉴스빅데이터 서비스인 빅카인즈가 신문 뉴스 기사 작성을 지원하는 실험버전인 생성형 AI 서비스, 빅카인즈 AI를 공개하고 있습니다. 이번 포스팅에서는 빅카인즈에서 소

e-datanews.tistory.com

 

[카드뉴스] 빅카인즈(BIGKinds) 활용방법

이번 포스팅에서는 국내 뉴스빅데이터 분석서비스를 제공하는 빅카인즈(BIGKinds) 활용방법을 소개하고자 합니다. 예제 검색키워드는 중앙아시아 5개국가 중 우리나라 화장품 최대 수입국가 중

e-datanews.tistory.com

네이버 생성형 AI 서비스 큐에 대한 보도자료 수집 결과는 다음 파일과 같고, 해당 파일을 이용하여 이번 포스팅 실습을 진행하겠습니다. 

naverq.xlsx
0.01MB

업로드된 파일을 열어보면, 총 25개의 보도자료가 수집되었고, 보도자료 일시, 제목 및 키워드만 추출하였습니다. 관심을 갖고 검토해야 할 점은 제목의 문자열 구분 기준은 빈칸이나, 키워드는 쉼표라는 점에서 차이가 있습니다. 

 

2. 패키지 로딩, 작업 폴더 지정 및 텍스트 데이터 엑셀 호출 

패키지 인스톨과 로딩, 데이터 호출, 분석결과의 저장 등을 위한 작업 폴더를 별도 지정합니다. 지정하지 않은 경우는 내 문서 폴더가 작업 폴더가 됩니다. 

R 코드

더보기

# 01. 패지키 인스톨 및 로딩 
install.packages("tidyverse")
install.packages("tidytext")
install.packages("readxl")
install.packages("wordcloud")
install.packages("openxlsx")

library(tidyverse)
library(tidytext)
library(KoNLP)
useNIADic()
library(readxl)
library(wordcloud)
library(openxlsx) 

# 02. 작업폴더 지정 
setwd("C:/test/ko_test")
getwd()

# 03. 텍스트 데이터 호출 
naverq <- read_excel("naverq.xlsx", col_names = TRUE)

3. 데이터 전처리와 토큰화 

한글을 제외한 모든 문자는 공란으로 처리하고, 두 개 이상의 공란은 하나의 공란으로 처리합니다. 또한 단어 기준으로 토큰화를 실행합니다. 토큰화 이후에는 두 글자 이상의 단어들만 추출하고,  빈도수를 계산한 후, 정렬합니다. 

R 코드

더보기
# 데이터 전처리 (정제) 
naverq_title <- naverq %>%
  mutate(title = str_replace_all(title, "[^가-힣]", " "),
         title = str_squish(title),
         id = row_number())

# 보도자료 제목 토큰화 
naverq_title <- naverq_title %>%
  unnest_tokens(input = title,
                output = word,
                token = "words")      

# 빈도수 기준 정렬 (두 글자 이상의 단어) 
naverq_title <- naverq_title %>%
  count(word, sort = TRUE) %>%
  filter(n >= 2)

# 빈도수 기준 상위 30개 단어 추출 
top30 <- naverq_title %>%
  head(30)

4. 막대 그래프 : 빈도수 기준 데이터 시각화

정렬된 데이터 중 상위 30개 단어들만 이용하여 막대그래프로 데이터 시각화 결과는 다음과 같습니다.

네이버 생성형 AI 큐&#44; 보도자료 제목 분석 R을 이용한 한글 텍스트 마이닝 빈도 분석 결과 데이터 시각화
네이버 생성형 AI 큐, 보도자료 제목 분석 R을 이용한 한글 텍스트 마이닝 빈도 분석 결과 데이터 시각화

 

5. 키워드 기준 텍스트 마이닝

보도자료의 제목은 빈칸으로 문자열이 구분되어 있으나, 키워드는 쉼표로 구분되어 있음을 확인하기 바랍니다. 그 외 코드는 위의 제목을 구현한 코드와 동일합니다만, 빈도수를 표현하는 막대그래프에 몇 가지 옵션들을 추가하여 데이터 시각화를 시도하면 다음과 같습니다. 

네이버 생성형 AI 큐&#44; 보도자료 분석 R을 이용한 한글 텍스트 마이닝 키워드 빈도 분석 결과 데이터 시각화
네이버 생성형 AI 큐, 보도자료 키워드 분석 R을 이용한 한글 텍스트 마이닝 키워드 빈도 분석 결과 데이터 시각화

 

6. 워드클라우드

막대그래프로 구현된 데이터 시각화 결과를 워드 클라우드로 구현하면, 다음과 같습니다.

네이버 생성형 AI 큐&#44; 보도자료 분석 R을 이용한 한글 텍스트 마이닝 키워드 워드 클라우드 데이터 시각화 결과
네이버 생성형 AI 큐, 보도자료 분석 R을 이용한 한글 텍스트 마이닝 키워드 워드 클라우드 데이터 시각화 결과

 

7. 파일 다운로드 

이번 포스팅에서 설명한 R 코드는 다음 파일과 같습니다. 전체 복사한 후, R 콘솔창에 붙여 넣기 하고, 실행하면, 포스팅과 같은 데이터 시각화 결과를 구현할 수 있습니다.

R 한글 텍스트 마이닝 01.txt
0.00MB

 

8. 정리

R을 이용한 한글 텍스트 마이닝 분석을 위해 지난 포스팅에서 KoNLP 패키지 설치를 하였고, 이번 포스팅에서 KoNLP 패키지 설치 후, 테스트를 겸해 간단한 분석을 시도해 보았습니다. 다음 포스팅에서는 이어서 불용어 등 추가적인 전처리 분석 방법에 대하여 설명하겠습니다. 

 

R 한글 텍스트 마이닝 분석 │품사 분석과 불용어 추가 전처리

이번 포스팅은 SimplePos09 함수를 이용하여 명사를 추출하고, 추가적인 불용어 처리 방법을 정리합니다. 분석에 활용할 텍스트 데이터 지난 포스팅에서 사용했던 네이버의 생성형 AI 서비스 큐에

e-datanews.tistory.com

 

네이버 블로그 R 텍스트마이닝 │20대 여친 여사친 선물 추천 비교│네이버 오픈 API 활용

20대 여자 친구와의 기념일이든 생일이든 선물을 골라야 하는 경우 발작적인 선택 장애로 고생하는 남자 친구들을 위해 준비한 포스팅입니다. 일단 네이버 오픈 API를 통해 광고 포스팅이 넘쳐나

e-datanews.tistory.com

이번 포스팅까지 R 한글 텍스트 마이닝을 잘 따라 오신 분들은 네이버 오픈 API를 이용한 텍스트 마이닝 분석에도 도전해보기 바랍니다. 위 링크를 클릭하면, 관련 포스팅으로 이동합니다. 가입 방법부터 실행 방법 그리고 R 코드까지 모두 업로드해두었으니 참고하기 바랍니다.