데이터 분석/키워드 분석

[이론] 텍스트 시각화 - 워드 클라우드

toraa 2025. 1. 22. 11:25

워드클라우드 라이브러리 설치

!pip install wordcloud

https://github.com/amueller/word_cloud

 

GitHub - amueller/word_cloud: A little word cloud generator in Python

A little word cloud generator in Python. Contribute to amueller/word_cloud development by creating an account on GitHub.

github.com

 

 

워드 클라우드 생성

빈도값에 따라 단어 크기를 다르게 표현

from wordcloud import WordCloud
import numpy as np

# WordCloud 모델 생성

wc = WordCloud(font_path='./gulim.ttc',  # 폰트입력
               background_color="white", # 배경색
               collocations=False,     #내가 만들어놓은 단어 그대로 나오게
               width=800,                # 넓이
               height=800,               # 높이
               scale=1)                  # 스케일 (기본값1)


wc.generate(' '.join(store_df['text_tag'])) # 모델에 텍스트 뭉치 입력


<wordcloud.wordcloud.WordCloud at 0x1e99d6c18d0>

 

하나의 텍스트 뭉치를 넣어줘야 함

토큰화에 대한 클렌징이 이루어져있어야 wordcloud를 이용할 수 있음

 

 

이미지로 워드클라우드 출력 - matpolib이용

import matplotlib.pyplot as plt

plt.figure(figsize=(5,5))

ax = plt.subplot()
ax.imshow(wc) # 이미지를 표에 입력
ax.set_title('워드클라우드', fontsize=20)

for i in 'top bottom right left'.split():
    ax.spines[i].set_visible(False)

ax.tick_params(left=False, right=False, labelleft=False,
               labelbottom=False, bottom=False)
plt.show()

imshow()함수에 워드클라우드(wc)를 넣어줌

 

 

마스크 설정 - 모양 변경

Pillow설치가 필요 : !pip install pillow

from PIL import Image

mask = np.array(Image.open("./img/wcmask.png"))  #mask로 특정이미지 가져옴
#이미지는 배열 타입으로 바꿔서 넣어줘야 함 (이미지 배열화)

wc = WordCloud(mask = mask,              # 마스크 입력
               font_path='./gulim.ttc', background_color="white", 
               collocations=False, width=800, height=800, scale=1)                

wc.generate(' '.join(store_df['text_tag'].to_numpy())) # 모델에 텍스트 뭉치 입력

plt.figure(figsize=(5,5))
ax = plt.subplot()
ax.imshow(wc) # 이미지를 표에 입력
ax.set_title('워드클라우드', fontsize=20)

for i in 'top bottom right left'.split():
    ax.spines[i].set_visible(False)
    
ax.tick_params(left=False, right=False, labelleft=False,
               labelbottom=False, bottom=False)
plt.show()

 

가져오는 이미지는 명확하게 검정/흰색 구분되어있는 이미지면 좋음