본문 바로가기

기타/python

파이썬 워드 클라우드 환경설정부터 기본 사용법까지

728x90

워드 클라우드란 문서의 키워드나 개념 등에서 핵심 단어를 시각적으로 돋보이게 하는 방법입니다.

단어의 크기가 클수록 많이 언급된 단어이고 작을수록 적게 언급된 단어입니다.

오늘은 파이썬에서 워드 클라우드를 해보도록 하겠습니다.

우선 관련 패키지인 konlpy를 다운로드 해주세요.

pip install konlpy 다음 명령어를 cmd에서 실행하면 다운로드됩니다.

konlpy는 자연어를 처리할 수 있는 패키지입니다.

텍스트를 컴퓨터가 연산할 수 있는 형태로 변경해주지요.

다음으로는 JAVA JDK를 설치해주셔야 합니다.

www.oracle.com/java/technologies/

페이지에 방문해 조금만 내리면 다음과 같은 메뉴가 나옵니다.

우측에 있는 JAVA SE 15.0.1을 클릭해주세요.

그러면 아래와 같은 페이지가 나옵니다.

우측에 있는 JDK DOWNLOAD를 클릭해주세요.

그러면 운영체제별로 다운로드할 수 있는 페이지가 나옵니다.

자신의 운영체제에 맞게 다운로드해주세요.

 

다운로드한 후 환경변수에 등록해줄 것입니다.

시스템 환경변수에 다음과 같이 등록해주세요.

윈도를 기준으로는 제어판-> 시스템 및 보안 - >시스템 -> 고급-> 환경변수

아래와 같이 나오고 새로 만들기를 클릭해주세요.

 

이제 변수 이름과 변수 값을 다음과 같이 등록해주세요.

환경 세팅이 끝났으니 이제 본격적으로 진행해보도록 하겠습니다.

 

import를 해주겠습니다.

hannanum은 카이스트에서 개발한 것입니다.

서울대에서 개발한 Kkma,

Komoran 등 다양한 패키지가 있습니다.

빠른 속도와 보통의 정확도를 원하면 Komoran or Hannanum

정확도를 원한다면 Kkma

띄어쓰기되어있는 텍스트를 처리할 때는 Okt를 추천합니다.

위의 패키지들은 대부분 문자의 개수가 늘어나면 시간이 기하급수적으로 늘어나니 주의해주세요.

from konlpy.tag import Hannanum
from konlpy.tag import Komoran
from konlpy.tag import Okt
from konlpy.tag import Kkma
from konlpy.tag import Mecab

 

Hannanum을 사용해보도록 하겠습니다.

from konlpy.tag import Hannanum
hannanum = Hannanum()
print(hannanum.nouns('안녕나는 사람이야'))
print(hannanum.morphs('안녕나는 사람이야'))
print(hannanum.pos('안녕나는 사람이야'))

첫 번째 명령어는 명사를 추출하는 것이고 두 번째는 형태소 세 번째는 품사를 확인하는 함수입니다.

n은 명사 j는 조사입니다.

 

텍스트를 분석했다면 이제 빈도수를 세고 그것을 이미지로 표현해주어야겠지요.

특징적인 부분은 wordcloud안에 font_path가 있다는 것입니다.

이것을 넣은 이유는 이게 없으면 한글이 깨지기 때문입니다.

from konlpy.tag import Hannanum
from collections import Counter
import matplotlib.pyplot as plt
from wordcloud import WordCloud
hannanum = Hannanum()
text = open('C:/Users/limyohan/Desktop/mytext.txt','r', encoding='UTF-8').read()

#명사만 가져오기.
nouns=hannanum.nouns(text)

#길이가 1이상인 명사만 남기기.
nouns =[n for n in nouns if len(n)>1]

#명사별 개수 구하기.
count = Counter(nouns)

#top10만 남기기.
tags = count.most_common(10)

#wordcloud로 만들어주기.
wordcloud = WordCloud(font_path='C:/font/HoonWhitecatR.ttf',background_color='white',width=1200,height=800).generate_from_frequencies(dict(tags))


fig = plt.figure(figsize=(12,12))
plt.axis('off')
plt.imshow(wordcloud)
plt.show()

 

폰트가 설정되어 있지 않으면 이렇게 나옵니다.

폰트를 넣어주면 제대로 나옵니다.

폰트는 다운로드하신 후 해당 파일의 path를 넣어주시면 바꿔줄 수 있습니다.

 

728x90