computer_study

[ Word Cloud ] 파이썬으로 Word Cloud 사용하기 본문

기타

[ Word Cloud ] 파이썬으로 Word Cloud 사용하기

knowable 2020. 7. 20. 03:11

1. Word Cloud란?

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

Word Cloud 예시.

 

2. 개발 환경

  사용 소프트웨어 : PyCharm CE

  사용 언어 : Python 3.7.0

 

3. 필요 모듈 import 

  한글 Word Cloud를 사용하기 위해서 3개의 모듈을 가져온다.

from wordcloud import WordCloud
from konlpy.tag import Twitter
from collections import Counter

 

  • wordcloud

           파이썬에선 word cloud 모듈을 제공한다.(pypi.org/project/wordcloud/)

           이 모듈을 사용하여 간편하게 word cloud를 사용할 수 있다.      

pip install wordcloud

           pip를 사용한다면 다음 명령어를 통해 설치할 수 있다.

 

 

  • konlpy

         konlpy 모듈을 통해 형태소를 분석할 수 있다.

         설치 방법은 우분투, macOS, window 별로 다르다. (konlpy-ko.readthedocs.io/ko/v0.4.3/install/ 참고) 

         사용법은 https://konlpy.org/en/latest/에서 확인할 수 있다.

 

 

  • collentions

         컨테이너에 동일한 값의 자료가 몇 개인지를 파악하는 데 사용하는 모듈. (docs.python.org 참고)

 

 

 

4. 전체 코드

from wordcloud import WordCloud
from konlpy.tag import Twitter
from collections import Counter

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


twitter = Twitter()

# twitter함수를 통해 읽어들인 내용의 형태소를 분석한다.
sentences_tag = []
sentences_tag = twitter.pos(text) 

noun_adj_list = []


# tag가 명사이거나 형용사인 단어들만 noun_adj_list에 넣어준다.
for word, tag in sentences_tag:
    if tag in ['Noun' , 'Adjective']: 
        noun_adj_list.append(word)


# 가장 많이 나온 단어부터 40개를 저장한다.
counts = Counter(noun_adj_list)
tags = counts.most_common(40) 


# WordCloud를 생성한다.
# 한글을 분석하기위해 font를 한글로 지정해주어야 된다. macOS는 .otf , window는 .ttf 파일의 위치를
# 지정해준다. (ex. '/Font/GodoM.otf')
wc = WordCloud(font_path=[otf 파일의 위치],background_color="white", max_font_size=60)
cloud = wc.generate_from_frequencies(dict(tags))


# 생성된 WordCloud를 test.jpg로 보낸다.
cloud.to_file('test.jpg')

 

 

생성된 WordCloud를 파일로 생성하지 않고 화면에 띄우고 싶을 땐

import matplotlib.pyplot as plt

matplotlib 모듈을 import 후 코드의 마지막 cloud.to_file('test.jpg') 대신

plt.figure(figsize=(10, 8))
plt.axis('off')
plt.imshow(cloud)
plt.show()

이를 사용하여 화면에 출력할 수 있다.

 

 

 

5. 참고자료

위키백과: word cloud  ko.wikipedia.org/wiki/태그_클라우드
 

태그 클라우드 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 태그 클라우드(영어: tag cloud) 또는 워드 클라우드(word cloud)는 메타 데이터에서 얻어진 태그들을 분석하여 중요도나 인기도 등을 고려하여 시각적으로 늘어 놓��

ko.wikipedia.org

collection 모듈 excelsior-cjh.tistory.com/94
 

collections 모듈 - Counter

collections.Counter() 컨테이너에 동일한 값의 자료가 몇개인지를 파악하는데 사용하는 객체이다. docs.python.org에서 Counter함수에 대해 자세히 알아볼 수 있다. A Counter is a dict subclass for counting h..

excelsior-cjh.tistory.com

wordcloud 사용법 :myjamong.tistory.com/48
 

[Python] 파이썬 간단한 워드클라우드 생성 :: 마이자몽

네이버 뉴스 워드클라우드 이전글에서 작성했던 네이버 뉴스 제목크롤링한 내용을 이용해서 형태소분석을 하여 간단한 워드 클라우드를 만들려고한다. 주요 모듈 -BeautifulSoup : 크롤링 -requests :

myjamong.tistory.com

 

Comments