본문 바로가기

파이썬

[Word Cloud] 형태소 분석을 통해 워드 클라우드 생성하기

(2021년 6월 23일 기준) 크롤링을 통해 수집한 csv에서 '일반'/'고유' 명사를 추출하여 워드 클라우드 생성

 

from collections import Counter #데이터의 개수를 정리할 수 있는 모듈

from konlpy.tag import Kkma #형태소 분석기 호출

from konlpy.utils import pprint #유니코드 문자 출력

from selenium import webdriver #브라우저 제어

import pandas as pd #결과값을 데이터프레임 객체로 저장하기 위해 이용

 

new = pd.read_csv('C:/Users/idol.csv')

#csv 파일 불러오기 (위치 임의 지정)

 

kkma = Kkma()

 

nouns_list=[] #nouns_list생성

 

for item in new['text'][:100]: #[ ]안의 숫자에 따라 분석 단어 개수 변화

    sentence_list = kkma.sentences(item)

   

    for sentence in sentence_list:

        nouns = kkma.pos(sentence) #sentence의 형태소 분석

        for pos in nouns:

            if pos[1] == 'NNG' or pos[1] == 'NNP': #일반 명사와 고유 명사일 경우

                nouns_list+=[pos[0]] #nouns_list에 추가

 

count = Counter(nouns_list) #list 내 항목명과 항목별 개수

 

ignore = ['경자년','아이','','','','','','돌이','','정형','기자','','','','','경우','',

          '','설문','','','','','','','','','','','이번','주니어','','사이',

          '','오후','올해','','','돌과','','모습','','','','','','','엑스',’’,

          '','에이','','지금','시대','투비','','지난해','','','이스트','','듀스',

          '','','연지','정도','','','','가운데','','대부분','','','아이즈','슈퍼',

          '','','','','','이후','','','','황지','레드','벨벳','레이션','','','',

          '오늘','','','이하','하다','박지','랜드','','','니트','','반면','드래곤','','','',

          '','','','','','스트로','마무','','만큼','','해당','','이자','요즘','사친',

          '','','과거','','','','','그때','그동안','세윤','키즈','','','','아이오','','','',

          '','','남창','이날','물론','중이','','한편','','진석','','','인피','','','','','',

          '','사가','','','소다','히트','','이즈','','','','제이','','','사의','','인은','',

          '황민','중인','동방','신기','','','라도','양은','내가','보우','','','','','','','예인','',

          '','돈은','','','','','','','','','','하면','','','','정일','','하성','어로','',

          '','참가자','','예전'] #제거할 불필요한 단어 및 표현 리스트

 

for word in ignore:

    if word in count:

        del count[word] #위에서 정한 불필요한 단어 및 표현 리스트에 속한 단어 및 표현을 제거

 

from wordcloud import WordCloud

import matplotlib.pyplot as plt #그래프 그리기

 

font_path = '‪C:\Windows\Fonts\HMKMRHD.TTF' #글꼴 : 휴먼둥근헤드라인체

wordcloud = WordCloud(width = 600,height = 600, font_path = font_path)

wordcloud = wordcloud.generate_from_frequencies(count) #단어 출현 빈도에 따라 크기 변화

array = wordcloud.to_array()

 

fig = plt.figure(figsize=(50, 50))

plt.imshow(array, interpolation="bilinear")

plt.show() #word cloud 도출

 

▲ <class 'numpy.ndarray'> (600, 600, 3)

 

※ 오류 관련 댓글은 환영