본문 바로가기
프로그래밍/Python

[Python] WordCloud

by rahites 2022. 4. 3.

 

# wordcloud 아나콘다 설치

: anaconda prompt 관리자권한으로 실행 -> conda install -c conda-forge wordcloud

 

-- wordcloud 예제 1 ( 기본 사각형 ) 

import matplotlib.pyplot as plt
from wordcloud import WordCloud
from wordcloud import STOPWORDS # 불용어 처리

text = open("텍스트 이름.txt").read()
stopwords = set(STOPWORDS)
stopwords.update(['추가할 불용어 입력'])

wordcloud = WordCloud(max_font_size = , # 이미지 내의 최대 font 크기
					  max_words = , # 이미지 안에 넣을 단어의 최대 개수
                      background_color = , # 배경색
                      random_state = ,  # 시드 설정
                      stopwords = stopwords # 불용어 설정
                      )
wc = wordcloud.generate(text) 

plt.figure(figsize = (10,10))
plt.imshow(wc, interpolation = "lanczos")  # interpolation : 보간 , 이미지를 부드럽게 하는 정도
plt.axis("off") # off하지 않으면 축이 나와서 깔끔하게 나오지 않음
plt.show()

 

-- wordcloud 예제 2 ( 원하는 이미지로 만들고 싶을 때 )

 

import matplotlib.pyplot as plt
from wordcloud import WordCloud
from wordcloud import STOPWORDS # 불용어 처리
import numpy as np
from PIL import Image

text = open("텍스트 이름.txt").read()
stopwords = set(STOPWORDS)
stopwords.update(['추가할 불용어 입력'])

img_mask=np.array(Image.open('사용할 그림파일.jpg')) # 그림파일을 불러와서 array배열로 저장
image_colors=ImageColorGenerator(img_mask) # 원본 그림의 색상정보를 가져옴

wordcloud = WordCloud(max_font_size = , # 이미지 내의 최대 font 크기
					  max_words = , # 이미지 안에 넣을 단어의 최대 개수
                      background_color = , # 배경색
                      random_state = ,  # 시드 설정
                      stopwords = stopwords, # 불용어 설정
                      mask = img_mask, # 이미지를 넣음
                      color_func = image_colors # 원본 이미지의 색깔을 사용
                      )
wc = wordcloud.generate(text) 

plt.figure(figsize = (10,10))
plt.imshow(wc, interpolation = "lanczos")  # interpolation : 보간 , 이미지를 부드럽게 하는 정도
plt.axis("off") # off하지 않으면 축이 나와서 깔끔하게 나오지 않음
plt.show()

 

-- wordcloud 예제 3 ( 한글 분석과 wordcloud를 함께 사용할 때 )

import nltk
from konlpy.tag import Okt # 한글 형태소 분석기

import matplotlib.pyplot as plt
from wordcloud import WordCloud
from wordcloud import STOPWORDS # 불용어 처리
import numpy as np
from PIL import Image

okt = Okt()
text = open("텍스트 이름.txt").read()
stopwords = set(STOPWORDS)
stopwords.update(['추가할 불용어 입력'])

img_mask=np.array(Image.open('사용할 그림파일.jpg')) # 그림파일을 불러와서 array배열로 저장
image_colors=ImageColorGenerator(img_mask) # 원본 그림의 색상정보를 가져옴

tokens_text= Okt.nouns(text)
new_text=[] # 1글자를 제외한 단어 리스트
for word in tokens_text:
    if len(word) > 1 and  word != ' ': # 한글자짜리는 제외
        new_text.append(word)
        
ko=nltk.Text(new_text)
ko.vocab() # FreqDist 클래스 : 문서의 사용된 단어의 사용빈도 정보

data = ko.vocab().most_common(100) # 많이 나온 단어 추출
data = dict(data)

FONTPATH='malgunsl.ttf' # 사용할 폰트경로
wordcloud = WordCloud(max_font_size = , # 이미지 내의 최대 font 크기
					  max_words = , # 이미지 안에 넣을 단어의 최대 개수
                      background_color = , # 배경색
                      random_state = ,  # 시드 설정
                      stopwords = stopwords, # 불용어 설정
                      mask = img_mask, # 이미지를 넣음
                      color_func = image_colors, # 원본 이미지의 색깔을 사용
                      font_path = FONTPATH # 사용할 font의 경로
                      )
wc = wordcloud.generate_from_frequencies(data) 
# generate_from_frequencies : Create a word_cloud from words and frequencies.
# generate : Generate wordcloud from text.

plt.figure(figsize = (10,10))
plt.imshow(wc, interpolation = "lanczos")  # interpolation : 보간 , 이미지를 부드럽게 하는 정도
plt.axis("off") # off하지 않으면 축이 나와서 깔끔하게 나오지 않음
plt.show()

 

cf. ) 

1. interpolation엔 여러 종류 존재

2. 한글 wordcloud사용시 한글 폰트 지정 필수

3. 사용자 지정 그림으로 wordcloud진행시 그림의 선이 굵어야함 ( 그림판으로 굵게 그려도 됨 )

댓글