"Wordcloud"의 두 판 사이의 차이
둘러보기로 가기
검색하러 가기
(새 문서: == 개요 == 단어의 빈도에 따라 구름모양으로 표현한 그래프(워드 클라우드)를 만들어주는 라이브러리. === 사전 준비 === {| class="wikitable" !...) |
|||
45번째 줄: | 45번째 줄: | ||
|명사만 추출 | |명사만 추출 | ||
|조사를 제거한다. | |조사를 제거한다. | ||
+ | |||
+ | |||
+ | 형태소분석기 종류에 따라 결과가 조금씩 달라지니, 필요에 따라 선택하여 사용. | ||
+ | |||
+ | 분석기에 대해선 [https://konlpy.org/ko/latest/morph/ 링크] 참조 | ||
|<syntaxhighlight lang="python"> | |<syntaxhighlight lang="python"> | ||
import konlpy | import konlpy | ||
− | hannanum = konlpy.tag.Hannanum() # 형태소 분석기 중 하나. | + | hannanum = konlpy.tag.Hannanum() # tag 하위에 제공되는 형태소 분석기 중 하나. |
nouns = hannanum.nouns(text_data) # 명사만 추출한다. 리스트로 반환. | nouns = hannanum.nouns(text_data) # 명사만 추출한다. 리스트로 반환. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
85번째 줄: | 90번째 줄: | ||
# 파워포인트 따위를 이용해 배경을 지운 후(그림서식>배경제거), | # 파워포인트 따위를 이용해 배경을 지운 후(그림서식>배경제거), | ||
# 검게 만들어 사용하자.(밝기 -100%) | # 검게 만들어 사용하자.(밝기 -100%) | ||
+ | 컬러맵의 종류에 대한 것은 [https://matplotlib.org/stable/tutorials/colors/colormaps.html 링크]에서 확인하자. | ||
|<syntaxhighlight lang="python"> | |<syntaxhighlight lang="python"> | ||
# 선택사항. 워드클라우드 모양 만들기. | # 선택사항. 워드클라우드 모양 만들기. | ||
90번째 줄: | 96번째 줄: | ||
back_img = PIL.Image.open('파일경로.png') # 워드클라우드는 기본적으로 사각형인데, 모양을 지정해줄 수 있다. | back_img = PIL.Image.open('파일경로.png') # 워드클라우드는 기본적으로 사각형인데, 모양을 지정해줄 수 있다. | ||
import numpy as np | import numpy as np | ||
− | + | img_array = np.array(back_img) # 그림을 배열처리. | |
− | |||
− | |||
from wordcloud import WordCloud | from wordcloud import WordCloud | ||
# 생성기. 생성에 필요한 옵션을 선언할 때 지정한다.(기본적으로 랜덤생성) | # 생성기. 생성에 필요한 옵션을 선언할 때 지정한다.(기본적으로 랜덤생성) | ||
− | wc = WordCloud(mast = | + | wc = WordCloud(mast = img_array, |
font_path = 'NanumGothic', # 설치된 글꼴 지정. 속은 .ttf 경로 지정. | font_path = 'NanumGothic', # 설치된 글꼴 지정. 속은 .ttf 경로 지정. | ||
− | ) | + | colormap = 'inferno', |
+ | ...) | ||
img_cloud = wc.generate_from_frequencies(word_dict) # 사전을 토대로 워드클라우드 생성. | img_cloud = wc.generate_from_frequencies(word_dict) # 사전을 토대로 워드클라우드 생성. | ||
plt.axis('off') # 테두리선 없애기. | plt.axis('off') # 테두리선 없애기. |
2023년 2월 2일 (목) 05:17 판
1 개요
단어의 빈도에 따라 구름모양으로 표현한 그래프(워드 클라우드)를 만들어주는 라이브러리.
1.1 사전 준비
과정 | 설명 | 방법 | ||||||
---|---|---|---|---|---|---|---|---|
KoNLPy 설치 | 형태소분석에 필요한 것들을 설치한다.
자바도 버전에 맞게 설치하자.(자바필수) |
pip install konlpy | ||||||
wordcloud 설치 | 워드클라우드 패키지 설치. | pip install wordcloud |
2 워드 클라우드 만들기
과정 | 설명 | 방법 |
---|---|---|
불필요한 문자 제거 | 특수문자, 한자, 공백 등을 제거한다. | import re
text_data = re.sub('^[가-힣a-zA-Z]*$', ' ', text_data) # 정규표현식을 이용하여 한글과 알파벳만 남긴다.
|
명사만 추출 | 조사를 제거한다.
분석기에 대해선 링크 참조 |
import konlpy
hannanum = konlpy.tag.Hannanum() # tag 하위에 제공되는 형태소 분석기 중 하나.
nouns = hannanum.nouns(text_data) # 명사만 추출한다. 리스트로 반환.
|
단어 빈도 계산 | 특정 단어가 몇 번 나왔는지 계산한다. | import pandas as pd
df = pd.DataFrame({'word': nouns}) # 리스트로 데이터프레임을 만들고,
# 다음은 선택사항(한글자 버리기)
df['len'] = df['word'].str.len() # 글자의 갯수를 센 후,
df = df.query('len >= 2') # 1글자로 된 데이터는 버린다.
# 단어 빈도 세기
df = df.groupby('word', as_index=False) \ # 단어별 그룹화
.agg(count = ('word', 'count')) \ # 단어별 등장횟수 세기
.sort_values('count', ascending=False) # 내림차순 정렬
|
(선택사항)
데이터 체크 |
해당 단어의 빈도에 대한 그래프를 그린다. | import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams.update({'font.family' : 'NanumGothic', # 나눔 고딕을 지정하는 경우'
}) # 이미지에 대한 필요한 설정.
sns.barplot(data=df.head(20), y='word', x='count') # 상위 20개에 대해서만 막대형 그래프를 그린다.
|
워드클라우드 만들기 | 모양으로 사용할 이미지는
컬러맵의 종류에 대한 것은 링크에서 확인하자. |
# 선택사항. 워드클라우드 모양 만들기.
import PIL
back_img = PIL.Image.open('파일경로.png') # 워드클라우드는 기본적으로 사각형인데, 모양을 지정해줄 수 있다.
import numpy as np
img_array = np.array(back_img) # 그림을 배열처리.
from wordcloud import WordCloud
# 생성기. 생성에 필요한 옵션을 선언할 때 지정한다.(기본적으로 랜덤생성)
wc = WordCloud(mast = img_array,
font_path = 'NanumGothic', # 설치된 글꼴 지정. 속은 .ttf 경로 지정.
colormap = 'inferno',
...)
img_cloud = wc.generate_from_frequencies(word_dict) # 사전을 토대로 워드클라우드 생성.
plt.axis('off') # 테두리선 없애기.
plt.imshow(img_cloud) # 이미지 출력.
|