일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 에러
- Python
- pipwin
- 오류
- kepler
- OSMnx
- 라이엇api
- map
- kepler.gl
- matplotlib
- Folium
- covid
- 막대그래프
- QGIS라벨링
- r
- 오픈API
- 마커클러스터
- 파이썬
- 라이엇
- 코로나
- 공공데이터포털
- 인코등
- 시각화
- geopnadas
- geopandas설치
- covid19
- 지도
- geopandas에러
- API
- riotapi
- Today
- Total
Nerdy
[Matplotlib] 젤렌스키 대통령 연설문 Wordcloud 만들기 - 2 본문
# 텍스트 데이터
해당 텍스트 파일은 2022년 4월 11일 오후 젤렌스키 우크라이나 대통령이 국회 화상연설에서 러시아의 우크라이나 침공의 참담한 현실을 말한 연설문 텍스트 내용이다.
앞에서 했던 Wordcloud - 1 에서 사용한 형태소 분석과 텍스트 전처리를 다른 조건으로 적용하여 Wordcloud 시각화를 만들어 볼 예정이다.
# 이전 Wordcloud - 1
https://whiplash-bd.tistory.com/32
1. 라이브러리 import
앞서 했던 Wordcloud -1과 동일하게 사용할 라이브러리를 import 해준다.
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from collections import Counter
from konlpy.tag import Okt
from PIL import Image
2. 사용할 텍스트 파일 불러오기
with open('Zelensky_KR2.txt', 'r', encoding = 'utf-8') as f:
text = f.read()
워드클라우드에 사용할 텍스트 파일을 읽고 text 객체에 담는다.
3. 단어 빈도수 산출 전처리
앞전에서 명사 추출 후 단어 길이가 2개 이상인 단어만 추출을 한 형태소 분석과 텍스트 전처리를 했는데 이번에는 단어 출현 빈도수가 2회 이상인 단어들만 산출을 하여 산출된 단어 빈도 수를 구하고 이를 활용한 워드클라우드 시각화를 할 것이다.
# 명사추출
okt = Okt()
nouns = okt.nouns(text)
# 단어 출현 빈도수 산출(빈도수 2회 이상 단어)
dic = dict()
for word in nouns:
try : dic[word] = dic[word] + 1
except : dic[word] = 1
print(dic)
# 결과
# {'존경': 1, '의장': 1, '국회의원': 1, '여러분': 9, '신사': 1, ...}
먼저 텍스트 파일에 명사 단어들만 추출하기 위해 Okt 함수와 okt.nouns를 사용해 nouns 객체에 담는다.
먼저 명사 단어의 빈도수를 구하기 위해 빈 딕셔너리 객체를 생성하고 try와 execpt를 활용한 for문을 만들어 dic이라는 빈 딕셔너리 객체에 담아 결과를 확인한다.
각 명사 단어마다 빈도 수를 담겨져 있는 dic 객체를 이용해 빈도수 2회 이상, 단어 길이가 2~4자리인 단어들을 새로운 딕셔너리 객체에 담는다.
new_word_count = {} # 새로운 딕셔너리 객채 생성
for word, cnt in dic.items():
if cnt >= 2 and len(word) >= 2 and len(word) <= 4:
new_word_count[word] = new_word_count.get(word, cnt)
print(new_word_count)
# 결과
{'존경': 2, '의장': 2, '국회의원': 2, '여러분': 18, '신사': 2, '숙녀': 2, '대한민국': 14,...}
출력된 결과들을 횟수 확인이 가능한 Counter 함수를 사용해 최종결과를 확인한다.
Counter 함수는 collections 라이브러리에 Counter를 import 해줘야 한다.
from collections import Counter
counter = Counter(new_word_count)
print(counter)
# 결과
Counter({'러시아': 104, '우리': 28, '사람': 24, '도시': 22, '전쟁': 20, '여러분': 18,...}
4. 워드클라우드 시각화
워드클라우드 시각화를 만들기 위해 한글깨짐 방지 작업을 해줘야 한다.
Wordcloud -1 에서 봤던 font_path를 미리 설정해준 뒤 WordCloud 함수를 이용해 다양한 옵션들을 적용하여 깔끔한 시각화 처리를 해준다.
# 한글 깨짐 방지
font_path = 'C:\Windows\gulim' # 굴림 글꼴 설정
word_cloud = WordCloud(font_path = font_path, width=800, height=800, scale=4.0,
max_font_size=400, background_color = 'white', colormap = 'spring',
prefer_horizontal=True).generate_from_frequencies(counter)
# prefer_horizontal = True : 글자 수평하게 해주기
# colormap : 옵션 문자열 마다 색상 자동 지정(대표적으로 봄 여름 가을 겨울이 있음)
plt.figure(figsize=(8, 6)) # 가로 8인치 / 세로 6인치
plt.axis('off') # 축 off
plt.title('Word Cloud of Zelensky Address', size = 12)
plt.imshow(word_cloud)
plt.show()
plt.savefig('plot.png') # plot 저장하기
5. 결과
'Python > [Matplotlib]' 카테고리의 다른 글
[Matplotlib] 천단위 콤마(,) 표시와 그래프 레이블 값 표시하기 (0) | 2022.06.25 |
---|---|
[Matplotlib] 코로나 사망자 주간 발생 추이 막대 그래프 그리기 (0) | 2022.06.24 |
[Matplotlib] 젤렌스키 대통령 연설문 Wordcloud 만들기 - 1 (0) | 2022.06.20 |
[Matplotlib] 산점도 그래프(Scatter plot) 그리기 (0) | 2022.06.20 |
[Matplotlib] 파이 차트 그리기 (0) | 2022.06.19 |