WorldCloud 시각화분석

2024. 11. 7. 21:53python study/sw와 ai 데이터 분석

WorldCloud란?

  • string 문자열에서 단어들의 빈도를 활용하여서 글자의 크기 또는 굵기에 변화를 주어서 시각적 이미지로 표현하는 것을 의미
설치하기
pip install wordcloud (colab은 따로 설치할 필요 없음)

라이브러리 선언
from wordcloud import WordCloud
import matplotlib.pyplot as plt (matplotlib라이브러리를 기반으로 함께 선언해 준다.)

WordCloud 기초

  • 제일 먼저 위키피디아를 활용하여서 영어 텍스트를 수집해 준다.
wikipedia python 검색
텍스트 복사하기
텍스트를 메모장에 붙여넣기
이름 변경 후 UTF-8로 저장해주기
  • 이제 colab에서 파일을 불러오고 업로드해준다.
  • open('파일 경로', encoding='UTF-8')로 지정해 준다.
file=open("/content/wikipedia_pyton.txt",'r',encoding="utf-8")
text=file.read()
text
From Wikipedia, the free encyclopedia\nThis article is about the python programming language. For the animal, see Python (genus).\nPython\n\nParadigm\tMulti-paradigm: object-oriented,[1] procedural (imperative), functional, structured, reflective\nDesigned by\tGuido van Rossum\nDeveloper\tPython Software Foundation\nFirst appeared\t20 February 1991; 33 years ago[2]\nStable release\t\n3.13.0 Edit this on Wikidata / 7 October 2024; 30 days ago\nTyping discipline\tduck, dynamic, strong;[3] optional type annotations (since 3.5, but those hints are ignored, except with unofficial tools)[4]\nOS\t\nTier 1: 64-bit Linux, macOS; 64- and 32-bit Windows 10+[5]\nTier 2: E.g. 32-bit WebAssembly (WASI)\nTier 3: 64-bit Android,[6] iOS, FreeBSD, and (32-bit) Raspberry Pi OS\nUnofficial (or has been known to work): Other Unix-like/BSD variants) and a few other platforms[7][8][9]\nLicense\tPython Software Foundation License\nFilename extensions\t.py, .pyw, .pyz,[10]\n.pyi, .pyc, .pyd\nWebsite\tpython.or...
  • text에 file에서 가져온 내용들을 지정해 주었다면 다음 단계를 적용해 준다.
변수명=WordCloud(). generate(텍스트 변수명): 텍스트 기반으로 wordcloud생성
plt.imshow(변수명): 문자열 기반의 데이터를 시각화해서 출력해 준다.
from wordcloud import WordCloud
import matplotlib.pyplot as plt

wc_output=WordCloud().generate(text)
plt.imshow(wc_output)
plt.show()

WordCloud 속성

  • width, heigth: 이미지의 크기 지정
from wordcloud import WordCloud
import matplotlib.pyplot as plt

wc_output=WordCloud(width=500, height=500).generate(text)
plt.imshow(wc_output)
plt.show()
500*500사이즈

 

  • 불용어 처리
불용어는 문장에서 은,는, 이, 가 같은 조사와 제외해도 상관없는 단어를 의미한다.

불용어 처리 라이브러리
from wordcloud import STOPWORDS

불용어 처리하기
변수명=STOPWORDS.union({'단어'})
=> stopwords=변수명 (속성 지정)
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from wordcloud import STOPWORDS

stopwords=STOPWORDS.union({"version","type","one","include","e","many","example"})

wc_output=WordCloud(width=500, height=500,stopwords=stopwords).generate(text)
plt.imshow(wc_output)
plt.show()
  • background_color='': 배경색상을 지정해 준다.
from wordcloud import WordCloud
import matplotlib.pyplot as plt

wc_output=WordCloud(width=500, height=500,background_color='red').generate(text)
plt.imshow(wc_output)
plt.show()
  • plt.axis('off'): xy축의 눈금을 지워준다.
from wordcloud import WordCloud
import matplotlib.pyplot as plt

wc_output=WordCloud(width=500, height=500,background_color='white').generate(text)
plt.imshow(wc_output)
plt.axis("off")
plt.show()

이미지 마스크

  • 원하는 형태로 워드 클라우드를 형성해 준다.
  • 어떤 도형을 검은색으로 표현하여서 검은 부분에 글자가 나타나게 한다.
마스크 처리를 위한 라이브러리 선언
from PIL import Image: 이미지를 읽고 쉽게 분석 및 처리할 수 있는 라이브러리
import numpy as np:  array 자료형으로 데이터를 쉽게 연산해 주는 라이브러리

1. 마스크변수명=np.array(Image.open('마스크이미지파일명'))
2. 속성: mask=마스크변수명
heart_mask.jpg
0.01MB

하트 모양 마스크이미지파일

from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np

mask=np.array(Image.open("/content/heart_mask.jpg"))

wc_output=WordCloud(width=500, height=500,
                    background_color='white',
                    mask=mask).generate(text)
plt.imshow(wc_output)
plt.axis("off")
plt.show()
  • 이미지 마스크 결과는 변수명. to_file('화 일명')으로 저장할 수 있다.

한글 텍스트를 활용한 워드 클라우드

  • 데이터를 준비하는 과정은 영어 텍스트와 비슷한 과정으로 해주면 된다.
file=open("/content/wiipedia_한글.txt")
text=file.read()
text
2024년 위키백과 아시아의 달이 11월 1일부터 한달 동안 진행됩니다.\n 한국 - 일본 우호 에디터톤 오프라인 모임이 11월 9일 진행됩니다.\n목차 숨기기\n처음 위치\n개요\n역사\n역사 하위섹션 토글하기\n파이썬 2\n파이썬 3\n인기\n기능과 철학\n기능과 철학 하위섹션 토글하기\n라이브러리\n문법\n자료형\n동작하는 플랫폼\n한글 다루기\n사용 현황\n사용 현황 하위섹션 토글하기\n파이썬으로 작성된 자유-오픈 소스 소프트웨어\n파이썬을 내부적으로 사용하는 소프트웨어\n파이썬을 이용하고 있는 기업·정부 기관\n실행 속도 향상 관련\nIDE 목록\n비평\n빌드\n같이 보기\n각주\n외부 링크\n파이썬\n\n문서\n토론\n읽기\n편집\n역사 보기\n\n도구\n보이기 숨기기\n텍스트\n\n작음\n\n표준\n\n큼\n너비\n\n표준\n\n넓게\n위키백과, 우리 모두의 백과사전.\n\n 이 문서는 프로그래밍 언어에 관한 것입니다. 그리스 신화의 괴물에 대해서는 피톤 문서를, 미사일에 대해서는 파이톤 5 미사일 문서를 참고하십시오.\n파이썬\nPython\n\n패러다임\t프로그래밍 패러다임: 객체 지향 프로그래밍, 명령형 프로그래밍, 함수형 프로그래밍, 절차적 프로그래밍....
  • 하지만 이를 시각화하면 텍스트가 제대로 나오지 않는 문제가 발생한다.
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np

mask=np.array(Image.open("/content/heart_mask.jpg"))

wc_output=WordCloud(width=500, height=500,
                    background_color='white',
                    mask=mask).generate(text)
plt.imshow(wc_output)
plt.axis("off")
plt.show()
  • 이를 해결하기 위해서는 한글 폰트(nanum)를 설치해주어야 한다.
!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib –rf
  • font_path= :설치한 한글 폰트의 경로를 붙여 넣어준다.
한글 폰트 경로 찾기

1. 파일 창으로 들어가서 멘 위에 있는.. 파일을 클릭해 준다.

2. 하위 폴더에서 user파일을 찾아서 클릭해 준다.

3.  하위 폴더에서 share파일을 찾아서 클릭해준다.
4. 마지막으로 fonts => truetype => nanum를 차례대로 들어가준다.
5. 여기에 있는 한글 폰트 파일 아무거나 선택해서 경로를 복사해주고 font_path="경로" 에 붙여넣어준다.
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np

mask=np.array(Image.open("/content/heart_mask.jpg"))

wc_output=WordCloud(width=500, height=500,
                    background_color='white',
                    mask=mask,
                    font_path='/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf').generate(text)
plt.imshow(wc_output)
plt.axis("off")
plt.show()

'python study > sw와 ai 데이터 분석' 카테고리의 다른 글

지도 시각화  (1) 2024.11.08
WordCloud 더 나아가기  (0) 2024.11.07
데이터 시각화2  (0) 2024.11.06
넘파이 활용하기  (0) 2024.11.04
numpy이해와 자료구조  (0) 2024.11.04