본문 바로가기

나 취준생/파이썬

워드 클라우드 그리기

320x100

# 파이썬에서 워드 클라우드 그리기 


1. 아나콘다 프롬프트 창을 열고  wordcloud 패키지 설치


# 검색 - anaconda prompt


conda  install  wordcloud 또는 pip  install  wordcloud 후 엔터




나는 전자의 경우 오류가 발생해서

후자로 하니까 성공적으로 설치가 되었다.



2. c 드라이브 밑에 project 폴더를 생성 


3. project 폴더 밑에  4가지 파일을 둔다.


   -  usa_im.png

   -  s_korea.png

   -  word.txt

   -  중앙일보 스크롤링했던 기사 파일 my_text21.txt 



■  텍스트마이닝 데이터 정제


from wordcloud import WordCloud, STOPWORDS # 구두점(쉼표,마침표) 데이터 정제

import matplotlib.pyplot as plt  # 그래프 그리는 모듈

from os import path     #  os 에 있는 파일을 파이썬에서 인식하기 위해서

import re   #  데이터 정제를 위해서 필요한 모듈 

import numpy as np  

from PIL import Image  # 이미지 시각화를 위한 모듈 


# 워드 클라우드의 배경이 되는 이미지 모양을 결정

usa_mask = np.array(Image.open("c:/project/usa_im.png"))


# 워드 클라우드를 그릴 스크립트 이름을 물어본다. 

script = input( 'input file name : ')


# 워드 클라우드 그림이 저장될 작업 디렉토리를 설정 


d = path.dirname("c:\\project\\")


# 기사 스크립트와 os 의 위치를 연결하여 utf8로 인코딩해서 한글 텍스트를


# text 변수로 리턴한다.


text = open(path.join(d, "%s"%script), mode="r", encoding="cp949").read()




# 파이썬이 인식할 수 있는 한글 단어 개수를 늘리기 위한 작업 


file = open('c:\\project\\word.txt', 'r', encoding = 'utf-8')


word = file.read().split(' ') # 어절 별로 분리해서 word에 담아 리스트로 구성


# word에는 '있다' '했다' '하지만' 처럼 분석에 쓸모없는데, 자주 나오는 용어들이 담겨있다.

# word txt를 직접 열어서 단어를 추가하면 함께 거를 수도 있다.


for i in word:


    text = re.sub(i,'',text) # text 내용 중 word에 담긴 이런 쓸모없는 말은, ''로 대체하겠다



# 워드 클라우드를 그린다. 


wordcloud = WordCloud(font_path='C://Windows//Fonts//gulim', # 글씨체


                      stopwords=STOPWORDS,   # 마침표, 느낌표,싱글 쿼테이션 등을 정제


                      max_words=1000, # 워드 클라우드에 그릴 최대 단어 개수


                      background_color='white', # 배경색깔


                      max_font_size = 100, # 최대 글씨 크기 


                      min_font_size = 1, # 최소 글씨 


                      mask = usa_mask, # 배경 모양 


                      colormap='jet').generate(text).to_file('c:/project/cnn_cloud.png')


                  # c 드라이브 밑에 project 폴더 밑에 생성되는 워드 클라우드 이미지 이름


  


plt.figure(figsize=(15,15))  # 가로 세로 사이즈


plt.imshow(wordcloud, interpolation='bilinear')  # 글씨가 퍼지는 스타일 


plt.axis("off") # 축 표시 없음








반응형