반응형

파이썬으로 워드 클라우드 만들기

 

먼저 파이썬으로 워드 클라우드를 만들기 위해서는 아래의 과정이 필요합니다.

  • 워드클라우드를 설치해 줘야 합니다.(pip install wordcloud)
  • Konlpy 설치
  • Collection 설치

워드 클라우드란?

태그 클라우드라고도 불리우며 단어의 빈도수를 체크하여 시각적으로 표현하는 방식을 말합니다.

단어 구름이라는 뜻처럼 각각의 태그를 분석하여 중요도나 인기도를 고려하여 웹사이트에 표시합니다.

플리커에서 가장 먼저 사용되었다고 하네요.

태그 클라우드(영어: tag cloud) 또는 워드 클라우드(word cloud)는 메타 데이터에서 얻어진 태그들을 분석하여 중요도나 인기도 등을 고려하여 시각적으로 늘어 놓아 웹 사이트에 표시하는 것이다. 보통은 2차원의 표와 같은 형태로 태그들이 배치되며 이때 순서는 알파벳/가나다 순으로 배치 된다. 시각적인 중요도를 강조를 위해 각 태그들은 그 중요도(혹은 인기도)에 따라 글자의 색상이나 굵기등 형태가 변한다. 사용자는 이렇게 표시된 태그 중 마음에 드는 키워드를 발견하고 그것을 선택하여 그 메타 데이터에 원래 연결된 웹 페이지로 이동하게 된다.

워드 클라우드 패키지 설치

아래와 같이 pip install을 통해서 설치가 가능하구요.

numpy, pillow, matplotlib 등 다양한 관련된 패키지가 같이 설치됩니다.

그리고 워드 클라우드는 비주얼 C++ 설치가 필요하므로

(Error : Microsoft Visual C++ 14.0 Is Required)

아래의 링크에서 설치하시기 바랍니다.

 

Microsoft C++ Build Tools - Visual Studio

Microsoft C++ Build Tools는 Visual Studio 없이 스크립트 가능한 독립 실행형 설치 관리자를 통해 MSVC 도구 집합을 제공합니다. 명령줄에서 Windows를 대상으로 하는 C++ 라이브러리 및 애플리케이션을 빌드

visualstudio.microsoft.com

 

그냥 기본만 설치해도 6기가가 넘어가네요 ㅠㅠ

KoNLPy 패키지 설치

이후에는 Konlpy를 설치해야 하는데요.

konlpy로 한글 형태소 분리

 

KoNLPy: 파이썬 한국어 NLP — KoNLPy 0.6.0 documentation

KoNLPy: 파이썬 한국어 NLP KoNLPy(“코엔엘파이”라고 읽습니다)는 한국어 정보처리를 위한 파이썬 패키지입니다. 설치법은 이 곳을 참고해주세요. NLP를 처음 시작하시는 분들은 시작하기 에서 가

konlpy.org

링크에서 파일을 다운로드 받아서 설치하시면 됩니다.

설치는 whl파일을 다운로드 받고 해당 파일을 pip 명령어로 설치하시면 됩니다.

기존 pip 설치는 서버에 있는 것을 설치하기 대문에 whl까지 쓰지 않는데요.

다운로드한 패키지 설치시에는 정확한 파일명을 명시해줘야 합니다.

collentions : 리스트에서 갯수 카운트 하는 것 필요

실제로 간단하게 코드를 자보면 아래와 같습니다.

인터넷에서 코드가 많이 나와있어서 참고하여 작성하였습니다.

from wordcloud import WordCloud
from konlpy.tag import Komoran
from collections import Counter
import numpy as np
from PIL import Image

# open으로 txt파일을 열고 read()를 이용하여 utf-8 읽는다.
text = open('test.txt', encoding='utf-8').read() 


# Komoran 함수를 이용해 형태소 분석
komoran = Komoran()
line =[]

line = komoran.pos(text)

n_adj =[]

# 명사와 동사 만  n_adj에 넣어주기
for word, tag in line:
    if tag in ['NNG','NNP','NNB','VV','VA']:
        n_adj.append(word)

#제외할 단어 추가(를과 의를 삭제함)
stop_words = "를 의 " #추가할 때 띄어쓰기로 추가해주기
stop_words = set(stop_words.split(' '))
# 불용어를 제외한 단어만 남기기
n_adj = [word for word in n_adj if not word in stop_words]


#가장 많이 나온 단어 50개 저장
counts = Counter(n_adj)
tags = counts.most_common(50)
print(tags)

# WordCloud를 생성한다.
# 마스크 이미지로

mask = Image.new("RGBA",(424,369), (255,255,255)) #(424,369)는 사진 크기, (255,255,255)는 색을의미
image = Image.open('heart.png').convert("RGBA")
x,y = image.size
mask.paste(image,(0,0,x,y),image)
mask = np.array(mask)

# 한글을 분석하기위해 font를 한글로 지정해주어야 된다. macOS는 .otf , window는 .ttf 파일의 위치를
# 지정해준다. (ex. 'C:\Windows\Fonts\malgunbd.ttf')
wc = WordCloud(font_path='C:\Windows\Fonts\malgunbd.ttf',background_color='white',  mask=mask,colormap='prism',max_font_size=100)
cloud = wc.generate_from_frequencies(dict(tags))

import matplotlib.pyplot as plt
plt.figure(figsize=(10,8))
plt.imshow(cloud)
plt.axis('off')

#cloud.to_file('fontcloud.png') 또는
plt.savefig('fontcloud.png', bbox_inches='tight')
plt.show()

각종 형태소 분석 알고리즘의 품사표에서 원하는 부분만 추출할수 있는데요.

Okt가 가장 많이 사용한다고 합니다.

각 싸이트에서 품사표를 검토하여 원하는 품사만 빼서 확인이 가능합니다.

물론 파이썬을 잘 사용하시지 못하더라도 요즘에는 인터넷 웹사이트에서 간단하게 생성을 해줍니다.

http://wordcloud.kr/

 

워드클라우드

워드클라우드 워클생성기 워클 단어구름 한글 워드클라우드 구름단어 글자구름 구름글자 태그클라우드 워드클라우드 태그구름 랜덤이미지 블로그이미지 페이스북이미지

wordcloud.kr

요즘 핫한 나의 해방일지 기사를 통해서 만들어보면 아래처럼 나옵니다.

추앙해요. 해방일지 등등 단어가 나오네요.

다만 품사는 조금 맞지 않아서 번도라던지 미정의 이런 것들도 조금 보입니다.

한국어보다는 좀더 품사가 명확한 영어의 경우에는 보다 이쁘게 나오기도 합니다.

그럼 잘 사용하시기 바랍니다.

반응형

복사했습니다!