WordCloud(핵심 단어 시각화) 라이브러리 활용 + STOPWORDS(불용어), Mask(이미지의 모양으로 시각화)

# WordCloud (핵심 단어 시각화)

  • 문서의 문구와 단어를 분석하여 중요도나 사용빈도를 직관적으로 파악할 수 있도록 시각화하는 표현 기법
  • 장점 : 사용자가 문서의 주요 키워드나 중요도를 한 눈에 파악
  • 단어 : 단어 간 관계를 표현할 수 없고 정보가 편향될 수 있음

 

# WordCloud 설치하기

  • 저는 아나콘다 네비게이터에서 주피터 노트북을 사용하였습니다.
  • 주피터 노트북이나 아나콘다 프롬프트에서 아래의 명령어 입력
    • conda install -c conda-forge wordcloud

 

# WordCloud 라이브러리 호출

from wordcloud import WordCloud, STOPWORDS
# 핵심 단어 시각화 함수
# 불용어 함수

import pandas
# 데이터프레임을 사용하기 위한 라이브러리

 

# 예시에서 쓰일 데이터프레임 

amazon_alexa.tsv
0.49MB

  • 아마존 알렉사 제품에 대한 3천개의 리뷰를 통해 감성 분석(핵심 단어 시각화) 해보기
  • 확장자가 tsv입니다. csv는 콤마로 구분하지만 tsv는 탭으로 구분합니다.
    때문에 구분자를 탭으로 변경하여 파일을 로드해야합니다.

 

# 핵심 단어 시각화 하기 전에, 하나의 문자열로 변경

  • word cloud 함수를 사용하기 위해서는 통합된 하나의 문자열 필요
  • 리뷰(verified_reviews) 칼럼의 문자열을 하나의 문자열로 변경

 

1. 하나의 리스트로 변경

reviews_list = df_alexa['verified_reviews'].to_list()

 

2. 변환된 리스트를 하나의 문자열로 변경

  • ' '.join을 사용하여 문자열 합치기
  • '구분자' 안에 들어갈 구분자의 값을 넣어주면 해당 문자열로 연결하여 병합
# 하나의 문자열로 정리
reviews = ' '.join(reviews_list)

 

# 핵심 단어 시각화하기 (Word Cloud)

  • WordCloud() : 핵심 단어 시각화 함수 호출
    • background_color : 배경색 지정 가능
  • generate( var ) : 문자열 변수를 넣어 시각화 진행
wc = WordCloud(background_color= 'white')
wc.generate(reviews)
# 하나의 문자열로 변경한 reviews 변수를 시각화

 

  • matplotlib(plt) 옵션
    • imshow : im(Image) show, 이미지로 시각화
    • axis : on/off 각 축의 정보를 보여줄지 말지 설정
plt.imshow(wc)
plt.axis('off')
plt.show()

 

# 불용어 (STOPWORDS)

  • from wordcloud import STOPWORDS 호출
    • 반드시 대문자로 사용
  • 특정 단어를 시각화 단어에서 제거
  • 불용어 추가하기
    • STOPWORDS.add("문자열")
    • 예시로 Alexa를 불용어로 지정해보자
my_stopwords = STOPWORDS # 불용어 변수 선언
my_stopwords # 불용어 목록 확인
>>> {'a',
 'about',
 'above',
 'after',
 'again',
 'against',
 'all', .... 등등
 
 my_stopwords.add('Alexa') # 불용어 목록에 알렉사 추가

plt.imshow(wc)
plt.axis('off')
plt.show()

 

  • 불용어 Alexa 사용 전/후 비교

 

  • 다른 옵션 변경에 따른 전/후 비교
  • background_color / axis

 

# 특정 이미지의 형태로 핵심 단어 시각화

이미지를 불러오기 위해서는 이미지를 불러 올 수 있는 모듈이 필요하다.

from PIL import Image
# Python Image Library

 

  • 이미지 호출
    • Image.open('파일명')
    • 주의 : 투명 배경이 존재하는 png 확장자의 이미지 파일을 사용하여야 모양대로 시각화 할 수 있음
img = Image.open('pa22.png')

<저작권 문제가 될 수 있어서 혹시 몰라서 블러처리 하였습니다>

 

  • 이미지 마스크화
    • numpy.array(이미지파일저장변수) : 이미지 파일이 저장되어 있는 변수를 배열로 변환
    • 각 좌표별로 RGB값이 저장
img_mask = numpy.array(img)
img_mask

 

  • Word Cloud로 핵심단어를 이미지 마스크를 이용하여 모양대로 시각화
    • WordCloud(mask= 마스크의 정보가 담겨있는 변수명)
    • generate(핵심 단어 시각화 할 문자열 변수)
wc = WordCloud(background_color='white', mask=img_mask, stopwords=my_stopwords)
wc.generate(reviews)

plt.figure(figsize=(15,10))
plt.imshow(wc)
plt.axis('off')
plt.show()