Notice
Recent Posts
Recent Comments
Link
터칭 데이터
워드클라우드(Wordcloud) 본문
In [2]:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
4-4. 뭉게뭉게 단어구름, Wordcloud¶
- wordcloud를 이용해서 텍스트 구름을 만들어봅시다.
wordcloud 라이브러리¶
wordcloud
는 파이썬의 텍스트 클라우드 라이브러리입니다. 이를 기반으로 텍스트 구름을 그릴 수 있습니다. konlpy
는 한국어 형태소 분석기 라이브러리로, 주어진 문장에서 명사 등을 뽑아 내는 데에 사용할 수 있습니다.
우선, 이들을 사용하기 위해서 pip
를 사용해 다운로드를 받아봅시다.
Tip:
%
를 이용해서 노트북(.ipynb) 환경에서 터미널 코드를 실행할 수 있습니다.
In [1]:
%pip install wordcloud
%pip install konlpy
Collecting wordcloud
Downloading wordcloud-1.9.2-cp310-cp310-win_amd64.whl (152 kB)
-------------------------------------- 152.1/152.1 kB 9.5 MB/s eta 0:00:00
Requirement already satisfied: numpy>=1.6.1 in d:\python\anaconda3\lib\site-packages (from wordcloud) (1.23.5)
Requirement already satisfied: matplotlib in d:\python\anaconda3\lib\site-packages (from wordcloud) (3.7.0)
Requirement already satisfied: pillow in d:\python\anaconda3\lib\site-packages (from wordcloud) (9.4.0)
Requirement already satisfied: packaging>=20.0 in d:\python\anaconda3\lib\site-packages (from matplotlib->wordcloud) (22.0)
Requirement already satisfied: cycler>=0.10 in d:\python\anaconda3\lib\site-packages (from matplotlib->wordcloud) (0.11.0)
Requirement already satisfied: pyparsing>=2.3.1 in d:\python\anaconda3\lib\site-packages (from matplotlib->wordcloud) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7 in d:\python\anaconda3\lib\site-packages (from matplotlib->wordcloud) (2.8.2)
Requirement already satisfied: contourpy>=1.0.1 in d:\python\anaconda3\lib\site-packages (from matplotlib->wordcloud) (1.0.5)
Requirement already satisfied: kiwisolver>=1.0.1 in d:\python\anaconda3\lib\site-packages (from matplotlib->wordcloud) (1.4.4)
Requirement already satisfied: fonttools>=4.22.0 in d:\python\anaconda3\lib\site-packages (from matplotlib->wordcloud) (4.25.0)
Requirement already satisfied: six>=1.5 in d:\python\anaconda3\lib\site-packages (from python-dateutil>=2.7->matplotlib->wordcloud) (1.16.0)
Installing collected packages: wordcloud
Successfully installed wordcloud-1.9.2
Note: you may need to restart the kernel to use updated packages.
Collecting konlpy
Downloading konlpy-0.6.0-py2.py3-none-any.whl (19.4 MB)
---------------------------------------- 19.4/19.4 MB 9.8 MB/s eta 0:00:00
Requirement already satisfied: numpy>=1.6 in d:\python\anaconda3\lib\site-packages (from konlpy) (1.23.5)
Requirement already satisfied: lxml>=4.1.0 in d:\python\anaconda3\lib\site-packages (from konlpy) (4.9.1)
Collecting JPype1>=0.7.0
Downloading JPype1-1.4.1-cp310-cp310-win_amd64.whl (345 kB)
------------------------------------- 345.1/345.1 kB 10.5 MB/s eta 0:00:00
Requirement already satisfied: packaging in d:\python\anaconda3\lib\site-packages (from JPype1>=0.7.0->konlpy) (22.0)
Installing collected packages: JPype1, konlpy
Successfully installed JPype1-1.4.1 konlpy-0.6.0
Note: you may need to restart the kernel to use updated packages.
설치를 다 진행했다면, 이제 wordcloud
라이브러리를 사용할 준비가 되었습니다.
Wordcloud 만들기¶
WordCloud를 만드는 방법은 다음과 같습니다.
- KoNLPy 라이브러리로 한국어 문장을 전처리
- Counter를 이용해 빈도수 측정
- WordCloud를 이용해 시각화
이 흐름대로 시각화를 진행해보도록 하겠습니다.
In [3]:
# 텍스트 구름을 그리기 위해 필요한 라이브러리를 불러와봅시다.
# 시각화에 쓰이는 라이브러리
import matplotlib.pyplot as plt
from wordcloud import WordCloud
# 횟수를 기반으로 딕셔너리 생성
from collections import Counter
# 문장에서 명사를 추출하는 형태소 분석 라이브러리
from konlpy.tag import Hannanum
In [4]:
# 워드클라우드를 만드는 데 사용할 애국가 가사입니다.
national_anthem = """
동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려 강산
대한 사람 대한으로 길이 보전하세
남산 위에 저 소나무 철갑을 두른 듯
바람 서리 불변함은 우리 기상일세
무궁화 삼천리 화려 강산
대한 사람 대한으로 길이 보전하세
가을 하늘 공활한데 높고 구름 없이
밝은 달은 우리 가슴 일편단심일세
무궁화 삼천리 화려 강산
대한 사람 대한으로 길이 보전하세
이 기상과 이 맘으로 충성을 다하여
괴로우나 즐거우나 나라 사랑하세
무궁화 삼천리 화려 강산
대한 사람 대한으로 길이 보전하세
"""
형태소 분석기 객체를 사용해서 주어진 문자열에서 명사를 추출해봅시다.
In [5]:
# Hannanum 객체를 생성한 후, .nouns()를 통해 명사를 추출합니다.
hannanum = Hannanum()
nouns = hannanum.nouns(national_anthem)
words = [noun for noun in nouns if len(noun) > 1]
words[:10]
Out[5]:
['동해물', '백두산', '하느님', '보우하사', '우리나라', '무궁화', '삼천리', '강산', '사람', '대한']
Java가 설치되어있지 않은 경우, 실행 중 오류가 발생할 수 있습니다.
이 링크에서 여러분의 환경에 맞는 Java를 설치하신 후, 이후 과정을 따라와주세요.
In [7]:
# counter를 이용해 각 단어의 개수를 세줍니다.
counter = Counter(words)
counter
Out[7]:
Counter({'동해물': 1,
'백두산': 1,
'하느님': 1,
'보우하사': 1,
'우리나라': 1,
'무궁화': 4,
'삼천리': 4,
'강산': 4,
'사람': 4,
'대한': 4,
'보전하세': 4,
'남산': 1,
'소나무': 1,
'철갑': 1,
'불변': 1,
'우리': 2,
'기상일세': 1,
'하늘': 1,
'공활한데': 1,
'구름': 1,
'가슴': 1,
'일편단심일세': 1,
'기상': 1,
'충성': 1,
'사랑하세': 1})
In [17]:
# WordCloud를 이용해 텍스트 구름을 만들어봅시다.
wordcloud = WordCloud(
font_path="C:\Windows\Fonts\malgun.ttf",
background_color="white",
width=1000,
height=1000
)
img = wordcloud.generate_from_frequencies(counter)
plt.imshow(img)
Out[17]:
<matplotlib.image.AxesImage at 0x21d931785b0>
간단한 사용법을 확인했으니, 이제 이를 활용해서 스크래핑과 함께 사용해봅시다!
'데이터 시각화(Data Visualization)' 카테고리의 다른 글
스크래핑 결과 시각화 - 해시코드 + 워드클라우드 (0) | 2023.10.27 |
---|---|
스크래핑 결과 시각화 - Hashcode (0) | 2023.10.27 |
스크래핑 결과 시각화 - 기상청 데이터 (0) | 2023.10.27 |
시각화 라이브러리 Seaborn (0) | 2023.10.27 |