Python

[Python] Wordcloud 이미지를 만들어보자!

IT-PAPA 2023. 3. 14. 22:03
반응형

워드클라우드(Word Cloud)는 텍스트 데이터에서 빈도수가 높은 단어들을 시각적으로 표현한 이미지입니다. 빈도수가 높은 단어일수록 이미지 상에서 크게 표시되며, 빈도수가 적은 단어일수록 작게 표시됩니다. 워드클라우드는 데이터 시각화의 한 방법으로 많이 사용됩니다.

워드클라우드 이미지를 만들기 위해서는 텍스트 데이터를 전처리하여 단어별로 빈도수를 계산한 후, 이를 시각화하는 과정이 필요합니다. 워드클라우드 생성을 위한 다양한 라이브러리와 툴이 있으며, 대표적으로 Python에서는 wordcloud, R에서는 wordcloud 등이 있습니다

워드클라우드를 만들기 위해 파이썬의 wordcloud 패키지를 설치해야 합니다. 다음 명령어를 이용해 설치할 수 있습니다.

pip install wordcloud

wordcloud 패키지 설치
wordcloud 패키지 설치

 

무료 폰트 사이트

눈누 (noonnu.cc)

 

눈누

상업용 무료한글폰트 사이트

noonnu.cc

반응형

 

위 사이트에서 원하는 폰트를 무료로 다운로드할 수 있으니, 워드클라우드 만들 때 마음에 드는 글씨체로 다운로드하여서 적용해 보자! 

그러고 나서, 워드클라우드를 만들고자 하는 텍스트 데이터를 불러와서 전처리합니다. 이를 위해서는 re 패키지를 사용하여 특수문자나 숫자 등을 제거해야 합니다.

다음은 간단한 예시 코드입니다. 텍스트 파일 대신, 샘플로 텍스트를 붙여서 테스트해 보았습니다.

from wordcloud import WordCloud
import matplotlib.pyplot as plt
import re

# 텍스트 데이터 불러오기
#with open('data.txt', 'r', encoding='utf-8') as f:
#    text = f.read()

# 전처리
text = text + '인공지능(Artificial Intelligence)은 인간의 지능을 모방하여 만든 컴퓨터 프로그램을 의미합니다. 인공지능은 다양한 분야에서 응용되고 있으며, 머신러닝(Machine Learning)과 딥러닝(Deep Learning) 등의 기술이 발전함에 따라 그 활용 범위는 더욱 확대되고 있습니다.'
text = text + '인공지능은 이미 우리 생활 속에 많이 적용되어 있습니다. 예를 들어, 검색 엔진, 음성 인식 어시스턴트, 자율주행 자동차 등에서 사용되고 있습니다. 이외에도 의료 진단, 금융 분석, 이미지 인식 등에서도 인공지능 기술이 활용됩니다.'
text = text + '인공지능은 이제부터 더욱 발전할 것으로 예상됩니다. 예측 분석, 자연어 처리, 감성 분석 등의 분야에서도 인공지능 기술이 적용될 가능성이 큽니다. 또한, 인공지능은 기업 경영에서도 활용되고 있습니다. 예를 들어, 고객 선호도 분석, 마케팅 자동화 등에서 인공지능이 활용되고 있습니다.'
text = re.sub('[^가-힣\s]', '', text)  # 한글과 공백을 제외한 모든 문자 제거


# 워드클라우드 생성
wordcloud = WordCloud(font_path='test.ttf', background_color='white').generate(text)

# 이미지 출력
plt.figure(figsize=(10, 10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

# 이미지 저장
wordcloud.to_file("wordcloud.png")

 

짜잔!! 위 코드로 작성 후 실행하면, 아래와 같이 워드클라우드 이미지를 생성하였습니다.

멋지지 않나요? 요즘 많이 활용하고 있고, 보고서 작성할 때 아주 유용하게 사용되는 이미지일 듯싶습니다.

어느 회사든 부서든 개인이든, 모두 원하는 바를 도출하고, 원하는 바를 얻게 되길 바라며, 재미로 한번 구현해 보길 바랍니다. 

 

MySQL을 이용한 워드클라우드 이미지 생성 코드

import MySQLdb
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# MySQL DB 연결
db = MySQLdb.connect(
    host="localhost",
    user="username",
    passwd="password",
    db="database_name"
)

# 데이터 추출
cursor = db.cursor()
cursor.execute("SELECT column_name FROM table_name")
rows = cursor.fetchall()

# 전처리
text = ''
for row in rows:
    text += row[0] + ' '

# WordCloud 객체 생성
wordcloud = WordCloud(width=800, height=800, background_color='white').generate(text)

# 이미지 출력
plt.figure(figsize=(8, 8), facecolor=None)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.tight_layout(pad=0)

plt.show()
728x90
반응형
LIST