본문 바로가기

교육

R 한글 텍스트 마이닝 (3) : TF - IDF

R을 이용한 한글 텍스트 마이닝 세 번째 포스팅은 TF-IDF입니다. TF-IDF 개념은 이전 포스팅에서도 많이 언급했습니다. 주요 개념은 다음 포스팅 등을 참고하기 바랍니다. 

 

단어 빈도-역문서 빈도 분석(TF-IDF) 개념과 계산 방법│ChatGPT의 오류, 영혼 없는 사과

단어빈도-역문서빈도(Term Frequency-Inverse Document Frequency: 이하 TF-IDF) 분석은 전처리와 토큰화 이후 분석할 텍스트 데이터를 탐색하는 가장 기초적인 분석 단계입니다. 이번 포스팅에서는 TF-IDF의 개

e-datanews.tistory.com

또한 분석 예제 파일도 이전 포스팅에서 다루었던 파일을 계속 사용하겠습니다. 앞서 정리했던 주제들은 윈도 11 기준 KoNLP 설치 방법부터 품사분석과 불용어 처리까지 다루었습니다. 이 포스팅부터 확인한 분들은 이전 포스팅을 순서대로 읽어보기를 권합니다. 

 

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

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

e-datanews.tistory.com

분석에 필요한 라이브러리와 분석 파일을 로딩하고, 간단한 전처리 및 토근화 과정까지는 이전 포스팅과 동일합니다. 실습용 R 실행 코드는 포스팅 하단에 업로드해 두겠습니다. 내려받은 후, 실습해 보면 됩니다. 

 

1. TF - IDF 계산과 결과 엑셀 저장

다음 R 코드를 실행하면, 단어들의 tf, idf 와 tf-idf 분석 결과를 확인 및 저장할 수 있습니다. 다만, bind_tf_idf를 통해 나타난 tf는 텍스트의 전체 단어 수에서 해당 단어의 수가 차지하는 "비율"을 의미합니다. 단어 빈도를 전체 단어 빈도로 나눈 비율이며 결국 텍스트에 사용된 전체 단어 수가 많을수록 작아지게 됩니다. 

더보기

# 06. TF-IDF
naverq_keywords_tfidf <- naverq_keywords_tokens %>%
  count(id, word) %>%
  bind_tf_idf(word, id, n) %>%
  arrange(desc(tf_idf))

# 07. 저장 
output01 <- "naverq_keywords_tfidf.xlsx"
write_xlsx(naverq_keywords_tfidf, output01)

 

2. 불용어 추가 전처리

분석 결과에서 "네이버",  "최수연",  "관계자" 단어는 불용어 처리한 후, TF - IDF 값이 큰 상위 30개 단어들을 추출하여 막대그래프로 시각화하면 다음과 같습니다. 

TF-IDF 상위 30개 단어 막대 그래프
TF-IDF 상위 30개 단어 막대 그래프

 

3. 단어 추가 정리 후, 워드 클라우드 구현

TF-IDF 값이 상위 30개에 속하는 단어들을 검토해보면, "억",  "개"와 같은 한 글자 단어들도 등장하고 있습니다. 두 글자 이상의 단어들만 구현되도록 필터링한 후, 다시 워드 클라우드를 구현하면 다음과 같습니다. 

TF - IDF 상위 단어들을 이용한 워드클라우드 시각화 결과
TF - IDF 상위 단어들을 이용한 워드클라우드 시각화 결과

 

4. R 파일 다운로드 

이번 포스팅에서 설명한 R 파일은 아래와 같이 메모장 파일로 올려두겠습니다. 필요한 분들은 내려 받은 후, 실습해보기 바랍니다. 

R 한글 텍스트 마이닝 (3) TF-IDF_Blog.txt
0.00MB

 

R 한글 텍스트 마이닝 분석 (4) : tidygraph와 ggraph │키워드 네트워크 분석

R을 이용한 한글 텍스트 마이닝 분석 다섯 번째 포스팅 주제는 tidygraph와 ggraph를 이용한 키워드 네트워크 분석입니다. 이전에 활용한 네이버의 생성형 AI 서비스 큐 보도자료를 계속 인용하겠습

e-datanews.tistory.com

다음 포스팅은 tidygraph와 ggraph 패지키를 이용한 키워드 네트워크 분석입니다. 관련 내용은 위의 링크 포스팅을 참고하기 바랍니다