"Wordcloud"의 두 판 사이의 차이

(새 문서: == 개요 == 단어의 빈도에 따라 구름모양으로 표현한 그래프(워드 클라우드)를 만들어주는 라이브러리. === 사전 준비 === {| class="wikitable" !...)
 
 
(같은 사용자의 중간 판 하나는 보이지 않습니다)
9번째 줄: 9번째 줄:
 
|-
 
|-
 
|KoNLPy 설치
 
|KoNLPy 설치
|형태소분석에 필요한 것들을 설치한다.
+
|필수는 아닌데, 깔끔하게 하려면 필요하다.
자바도 버전에 맞게 설치하자.(자바필수)
+
|[[KoNLPy]] 문서 참고.
|
 
{| class="wikitable"
 
!설명
 
!방법
 
|-
 
|리눅스(apt)
 
|apt-get install g++ python-dev python3-dev openjdk-8-jdk
 
|-
 
|윈도우
 
|운영체제에 따라 다음 링크에서 설치. [http://abit.ly/easypy_101 abit.ly/easypy_101]
 
|}
 
pip install konlpy
 
 
|-
 
|-
 
|wordcloud 설치
 
|wordcloud 설치
45번째 줄: 33번째 줄:
 
|명사만 추출
 
|명사만 추출
 
|조사를 제거한다.
 
|조사를 제거한다.
 +
 +
 +
형태소분석기 종류에 따라 결과가 조금씩 달라지니, 필요에 따라 선택하여 사용.
 +
 +
분석기에 대해선 [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>
62번째 줄: 55번째 줄:
 
df = df.query('len >= 2')  # 1글자로 된 데이터는 버린다.
 
df = df.query('len >= 2')  # 1글자로 된 데이터는 버린다.
  
# 단어 빈도 세기
+
# 단어 빈도 세기. # 실제로 사용할 땐 \ 뒤에 주석을 넣으면 안된다.
 
df = df.groupby('word', as_index=False) \  # 단어별 그룹화
 
df = df.groupby('word', as_index=False) \  # 단어별 그룹화
 
         .agg(count = ('word', 'count')) \  # 단어별 등장횟수 세기
 
         .agg(count = ('word', 'count')) \  # 단어별 등장횟수 세기
85번째 줄: 78번째 줄:
 
# 파워포인트 따위를 이용해 배경을 지운 후(그림서식>배경제거),
 
# 파워포인트 따위를 이용해 배경을 지운 후(그림서식>배경제거),
 
# 검게 만들어 사용하자.(밝기 -100%)
 
# 검게 만들어 사용하자.(밝기 -100%)
 +
컬러맵의 종류에 대한 것은 [https://matplotlib.org/stable/tutorials/colors/colormaps.html 링크]에서 확인하자.
 
|<syntaxhighlight lang="python">
 
|<syntaxhighlight lang="python">
 
# 선택사항. 워드클라우드 모양 만들기.
 
# 선택사항. 워드클라우드 모양 만들기.
90번째 줄: 84번째 줄:
 
back_img = PIL.Image.open('파일경로.png')  # 워드클라우드는 기본적으로 사각형인데, 모양을 지정해줄 수 있다.
 
back_img = PIL.Image.open('파일경로.png')  # 워드클라우드는 기본적으로 사각형인데, 모양을 지정해줄 수 있다.
 
import numpy as np
 
import numpy as np
img = PIL.Image.net('RGB', back_img.size, (255,255,255))
+
img_array = np.array(back_img)  # 그림을 배열처리.
img.paste(back_img, back_img)
 
img = np.array(img)  # 그림을 배열처리.
 
  
 
from wordcloud import WordCloud
 
from wordcloud import WordCloud
 
# 생성기. 생성에 필요한 옵션을 선언할 때 지정한다.(기본적으로 랜덤생성)
 
# 생성기. 생성에 필요한 옵션을 선언할 때 지정한다.(기본적으로 랜덤생성)
wc = WordCloud(mast = img,
+
wc = WordCloud(mask = 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월 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)  # 이미지 출력.