Python

Twitter Konlpy wordcloud

Kyle79 2019. 11. 22. 14:24

 

 

#!/usr/bin/env python3

# -*- coding:utf-8 -*-

 

from konlpy.tag import Twitter

from collections import Counter

 

from wordcloud import WordCloud, STOPWORDS # 워드 클라우딩 모듈

import matplotlib.pyplot as plt # 시각화 모듈

from os import path

import re # 텍스트 파일을 불러오기 위한 open, path 하기 위해 os 임포트

 

from databases import *

from sqlalchemy import func

import csv

 

def export():

 

Campaign = Base.classes.review

q = session.query(Campaign)

 

str_list = []

#for record in q.all():

for record in q.order_by(Campaign.id.desc()).limit(50000):

str_list.append(getattr(record, 'content'))

 

nlp = Twitter()

nouns = nlp.nouns(' '.join(str_list))

 

count = dict( (x,y) for x,y in Counter(nouns).most_common(300) )

print(count)

wordcloud = WordCloud(font_path='./NanumGothic.ttf', # 폰트 위치

stopwords=STOPWORDS, background_color='white', # STOPWORDS 옵션은 공백/줄바꾸기 기준으로 단어를 추출해 냅니다

width=1000, # background_color는 워드클라우드 배경색을 나타냅니다. 'black'으로하면 검은색이 됩니다.

height=800, # width와 height는 워드클라우드의 크기를 지정해 줍니다.

colormap='PuRd').fit_words(count) # colormap은 워드 색깔을 지정해주는데 첨부한 색감표를 사용하시면 됩니다. generate() 메소드는

# 워드 클라우드를 생성합니다

plt.figure(figsize=(13,13)) # matplotlib의 pyplot을 figsize로 생성합니다

plt.imshow(wordcloud) # 워드 클라우드 이미지를 pyplot에 띄웁니다

plt.axis("off") # pyplot에 x, y축 표시를 없앱니다.

#plt.show()

 

plt.savefig('report.png', bbox_inches='tight')

plt.close()

 

if __name__ == "__main__":

export()