지난번에 크롤링한 기사를 가지고 워드클라우드를 구현 해 보겠다.
워드 클라우드의 기능
워드 클라우드를 사용한 시각화
빈도 분석예제
감정분석,문서 요약(딥러닝) 도 가능
데이터의 구조적 관점 3가지
- 정형 데이터: 정형화된 스키마 구조, dbms에 저장 될 수 있는 구조
예: oracle의 emp 테이블- 비정형 데이터 : 웹스크롤링 기술로 수집해서 모은 데이터
텍스트 데이터, 이미지 ,동영상- 반정형 데이터: 데이터 내부에 데이터 구조에 대한 메타정보가 포홤된 데이터
html . xml 문서
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 # 이미지 시각화를 위한 모듈
# 워드 클라우드의 배경이 되는 이미지 모양을 결정
#미국 사진 넘파이arrray로 변경
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="utf-8").read()
# 너무 공통적으로 자주 나오는 단어를 제거하기 위한 작업
#해당 파일에 있는 단어 re.sub로 제거
file = open('c:/project/word.txt', 'r', encoding = 'utf-8')
word = file.read().split(' ') # 어절별로 분류
for i in word:
text = re.sub(i,'',text)
# 워드 클라우드를 그린다.
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")