Nerdy

[Matplotlib] 젤렌스키 대통령 연설문 Wordcloud 만들기 - 1 본문

Python/[Matplotlib]

[Matplotlib] 젤렌스키 대통령 연설문 Wordcloud 만들기 - 1

뚱인데요? 2022. 6. 20. 19:03
728x90

# 텍스트 데이터

젤렌스키_연설문.txt
0.02MB

 

해당 텍스트 파일은 이번 러시아 침공으로 인해 젤렌스키 우크라이나 대통령이 연설한 내용을 담은 파일이다. 연설문 텍스트 파일을 활용해 단어 시각화인 word cloud를 만들어본다.

 

워드클라우드(wordcloud)는 데이터에서 얻은 태그들을 분석하여 중요도 또는 인기도 등을 고려하여 시각적으로 표시하는 방법이며 각 태그들은 중요도에 따라 글자의 굵기와 색상 형태가 변한다.


1. 라이브러리 import

wordcloud를 만들기 위해 사용할 라이브러리를 import 해준다.

from wordcloud import WordCloud
import matplotlib.pyplot as plt
from collections import Counter
from konlpy.tag import Okt
from PIL import Image

 

● from wordcloud import WordCloud : wordcloud 사용을 위한 라이브러리

● import matplotlib.pyplot as plt : wordcloud 시각화

● from collections import Counter : 텍스트와 빈도수 추출

● from konlpy.tag import Okt : 형태소 분석

● from PIL import Image : 원하는 형태로 그리기

 

 

2. 사용할  텍스트 파일 불러오기

with open('젤렌스키_연설문.txt', 'r', encoding = 'utf-8') as f:
    text = f.read()

 

텍스트 파일을 읽고 모든 내요을 text 객체 변수에 담는다.

 

 

3. 형태소 분석과 텍스트 전처리

okt = Okt()
nouns = okt.nouns(text) # 명사 추출

words = [n for n in nouns if len(n) > 2] # 단어 길이가 2개이 이상인 단어만 추출

c = Counter(words) # 단어별 빈도수 형태의 딕셔너리 데이터 구함

형태소 분석을 위해 Okt 객체를 생성을 한 후 okt.nouns 함수를 사용하여 명사 추출 후 nouns 변수에 담는다.

명사 텍스트가 들어가져 있는 nouns 객체에 단어 길이가 2개 이상인 단어들만 추출을 위해 리스트 내포 for문을 사용하여 words 변수에 담는다.

이후 단어별 빈도수 형태의 딕셔너리 데이터를 구하기 위해 Counter 함수를 사용해 c 변수에 넣는다.

 

 

4.  워드클라우드 시각화 - 1

wc = WordCloud(font_path = 'malgun', width = 800, height = 800,
               scale = 4.0, max_font_size = 500)
gen = wc.generate_from_frequencies(c)

워드클라우드 생성을 위해 WordCloud 옵션들을 지정해준 뒤 워드클라우드 빈도수 지정을 위해 .generate_from_requencies() 함수를 사용한다.

 

 

# 사용 옵션

 font_path : 글꼴지정

width : 출력 이미지 가로 길이(기본값 : 400)

height : 출력 이미지 세로 길이(기본값 : 200)

scale : 이미지 크기 결정

max_font_size : 키워드 글꼴 최대 크기(기본값 : None)

 

 

# 이외 옵션

max_words : 워드클라우드 키워드 수 지정

background_color : 배경색(기본값 : black)

min_font_size : 키워드 글꼴 최소 크기(기본값 : 4)

 

 

# 폰트 정보 확인하는 방법(윈도우 기준)

 

C:\Windows\Fonts

 

위 경로를 따라 들어가면 다양한 폰트 정보를 확인할 수 있으며 원하는 폰트 파일을 선택 후 오른쪽 버튼을 누르고 '속성'에 들어가면 폰트의 파일명을 확인할 수 있다.

사용할 폰트 파일명을 확인했으면 font_path 옵션에 폰트 파일명을 문자열로 넣어주면 된다.(무조건 폰트 한글 지원 필요)

 

 

4.  워드클라우드 시각화 - 2

plt.figure(figsize = (8,6))
plt.axis('off')
plt.imshow(gen)
plt.show()

wc.to_file('젤렌스키_워드클라우드.png') # 이미지 파일 저장

 

워드클라우드 시각화 결과를 보기 위해 matplottlib를 이용한다.

그림창 사이즈는 가로 8인치, 세로 6인치로 설정하였으며 축을 지우기 위해 plt.axis() 함수에 'off'를 넣어줬다.

원하는 사이즈의 픽셀을 원하는 색으로 채워서 그림을 만들 수 있는 plt.imshow 함수를 사용해 앞에서 빈도수를 지정하여 객체에 담은 gen을 넣는다.

(plt.imshow 옵션 지정은 따로 안해줬다.)

 

만들어진 워드클라우드를 저장하고 싶으면 .to_file('파일명')을 사용하면 저장이 된다.

 

5. 결과

728x90