Wordcloud

Sam (토론 | 기여)님의 2023년 2월 6일 (월) 18:19 판 (→‎사전 준비)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

1 개요편집

단어의 빈도에 따라 구름모양으로 표현한 그래프(워드 클라우드)를 만들어주는 라이브러리.

1.1 사전 준비편집

과정 설명 방법
KoNLPy 설치 필수는 아닌데, 깔끔하게 하려면 필요하다. 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개에 대해서만 막대형 그래프를 그린다.
워드클라우드 만들기 모양으로 사용할 이미지는
  1. 파워포인트 따위를 이용해 배경을 지운 후(그림서식>배경제거),
  2. 검게 만들어 사용하자.(밝기 -100%)

컬러맵의 종류에 대한 것은 링크에서 확인하자.

# 선택사항. 워드클라우드 모양 만들기.
import PIL
back_img = PIL.Image.open('파일경로.png')  # 워드클라우드는 기본적으로 사각형인데, 모양을 지정해줄 수 있다.
import numpy as np
img_array = np.array(back_img)  # 그림을 배열처리.

from wordcloud import WordCloud
# 생성기. 생성에 필요한 옵션을 선언할 때 지정한다.(기본적으로 랜덤생성)
wc = WordCloud(mask = img_array,
                font_path = 'NanumGothic',  # 설치된 글꼴 지정. 속은 .ttf 경로 지정.
                colormap = 'inferno',
                ...) 
img_cloud = wc.generate_from_frequencies(word_dict)  # 사전을 토대로 워드클라우드 생성.
plt.axis('off')  # 테두리선 없애기.
plt.imshow(img_cloud)  # 이미지 출력.