본문 바로가기

데이터 분석 학습

10장 텍스트 마이닝 (2)

반응형

10-1 대통령 연설문 텍스트 마이닝

워드 클라우드 만들기

워드 클라우드(word cloud): 단어의 빈도를 구름 모양으로 표현한 그래프

1. wordcloud 패키지 설치하기

!pip install wordcloud

 

2. 한글 폰트 설정하기

font = 'DoHyeon-Regular.ttf'

 

3. 단어와 빈도를 담은 딕셔너리 만들기

# 데이터 프레임을 딕셔너리로 변환
dic_word = df_word.set_index('word').to_dict()['n']
dic_word

"""
{'나라': 19,
 '일자리': 19,
 '국민': 18,
 '우리': 17,
 '대통령': 12,
 '대한민국': 11,
 '확대': 11,
 '정치': 10,
 '우리나라': 10,
 '사회': 9,
 '사람': 9,
 '성장': 9,
 '평화': 8,
 '복지국가': 8,
 '복지': 8,
 '산업': 7,
 '정부': 7,
 '추진': 7,
 '교육': 6,
 '세상': 6,
 '경쟁': 6,
 '보통사람들': 5,
 '공평': 5,
 '경제': 5,
 '대통령의': 5,
 '상생': 5,
 '정규직': 5,
 '정의': 4,
 '결과': 4,
 '사회적': 4,
 '투자': 4,
 '주인': 4,
 '전환': 4,
 '때문': 4,
 '모델': 4,
 '요구': 4,
 '희망': 4,
 '창출': 4,
 '역사': 4,
 '기회': 4,
 '여성': 4,
 '담쟁': 4,
 '강화': 4,
 '아래': 4,
 '고통': 4,
 '약자': 4,
 '아이들': 4,
 '중소기업': 4,
 '공정': 3,
 '문재인': 3,
 '특권': 3,
 '국가': 3,
 '사람들': 3,
 '노인': 3,
 '변화': 3,
 '비중': 3,
 '교육혁신': 3,
 '관계': 3,
 '질서': 3,
 '군대': 3,
 '지원': 3,
 '과도한': 3,
 '권력': 3,
 '부담': 3,
 '그것': 3,
 '지방': 3,
 '국민들': 3,
 '채택': 3,
 '소수': 3,
 '세계': 3,
 '신산업': 3,
 '시민': 3,
 '개선': 3,
 '혁신': 3,
 '혁명': 3,
 '양극화': 3,
 '원칙': 3,
 '활용': 3,
 '행복': 3,
 '원전': 3,
 '에너지': 3,
 '경제성장': 3,
 '세금': 3,
 '이명박': 3,
 '성장전략': 3,
 '가치': 3,
 '가지': 3,
 '여러분': 3,
 '강자': 3,
 '진정한': 2,
 '노동자들': 2,
 '마음속': 2,
 '노력': 2,
 '만큼': 2,
 '육성': 2,
 '모두': 2,
 '의료': 2,
 '참여': 2,
 '지금': 2,
 '의지': 2,
 '중심': 2,
 '역동적': 2,
 '마련': 2,
 '마음': 2,
 '대기업': 2,
 '위로': 2,
 '따뜻한': 2,
 '도종환': 2,
 '참가율': 2,
 '여성들': 2,
 '차별': 2,
 '담대': 2,
 '아이': 2,
 '원리': 2,
 '대책': 2,
 '대접': 2,
 '대부분': 2,
 '재생': 2,
 '바탕': 2,
 '중산층': 2,
 '실현': 2,
 '자영업': 2,
 '북한': 2,
 '분배': 2,
 '분열': 2,
 '정권': 2,
 '젊은이들': 2,
 '불안': 2,
 '남쪽': 2,
 '성장동력': 2,
 '자회담': 2,
 '선언': 2,
 '적극적': 2,
 '선순환': 2,
 '사회서비스': 2,
 '서민들': 2,
 '재개': 2,
 '재벌': 2,
 '자리': 2,
 '부문': 2,
 '부당': 2,
 '시대': 2,
 '이상': 2,
 '중국': 2,
 '새누리당': 2,
 '신뢰': 2,
 '시장만능주의': 2,
 '반영': 2,
 '존경': 2,
 '제안': 2,
 '정책': 2,
 '승자독식': 2,
 '보육': 2,
 '일대': 2,
 '복원': 2,
 '일부': 2,
 '수준': 2,
 '수명': 2,
 '희생': 2,
 '동안': 2,
 '오늘': 2,
 '기반': 2,
 '금강산': 2,
 '근본적': 2,
 '거대': 2,
 '협력': 2,
 '근간': 2,
 '극복': 2,
 '균형': 2,
 '결심': 2,
 '토대': 2,
 '겸손': 2,
 '향상': 2,
 '국가비전': 2,
 '특권층': 2,
 '경제민주화': 2,
 '구조': 2,
 '해결': 2,
 '한번': 2,
 '한반도': 2,
 '한반': 2,
 '학습': 2,
 '과실': 2,
 '학교': 2,
 '평생학습체제': 2,
 '공유': 2,
 '필요': 2,
 '평화체제': 2,
 '포용적': 2,
 '추구': 2,
 '공동번영': 2,
 '남녀': 2,
 '남북': 2,
 '가슴': 2,
 '강력': 2,
 '강자지배': 2,
 '기존': 2,
 '나뭇가지': 2,
 '촉진': 2,
 '환경': 2,
 '기업': 2,
 '유효수요': 1,
 '자율성': 1,
 '운명': 1,
 '자체': 1,
 '한반도평화': 1,
 '잠자리': 1,
 '우위': 1,
 '휴전선': 1,
 '훗날': 1,
 '자영업자들': 1,
 '자원': 1,
 '잠재력': 1,
 '한숨': 1,
 '한편': 1,
 '후분배': 1,
 '해방': 1,
 '자신': 1,
 '자식': 1,
 '자본주': 1,
 '자본': 1,
 '학생들': 1,
 '장기요양보험': 1,
 '잠재적': 1,
 '재촉': 1,
 '적용': 1,
 '적극': 1,
 '요양': 1,
 '포퓰리즘': 1,
 '표정': 1,
 '저하': 1,
 '풍요': 1,
 '용인': 1,
 '저것': 1,
 '재편': 1,
 '하나': 1,
 '학생': 1,
 '재정지출': 1,
 '재생에너지': 1,
 '하늘': 1,
 '흡수': 1,
 '재분배': 1,
 '재벌집단': 1,
 '학교폭력': 1,
 '학부모': 1,
 '자녀들': 1,
 '잣대': 1,
 '효도': 1,
 '입시부담': 1,
 '해소': 1,
 '이득': 1,
 '이익': 1,
 '이유': 1,
 '이외': 1,
 '협동조합': 1,
 '위정자': 1,
 '이불': 1,
 '협력적': 1,
 '협상': 1,
 '형성': 1,
 '유능': 1,
 '이념': 1,
 '협동': 1,
 '호혜협력': 1,
 '의무': 1,
 '유럽': 1,
 '확고': 1,
 '의견': 1,
 '유산': 1,
 '유아': 1,
 '육아': 1,
 '확립': 1,
 '확산': 1,
 '협동생태계': 1,
 '월세': 1,
 '입장': 1,
 '활성화': 1,
 '확장': 1,
 '효과': 1,
 '입시': 1,
 '일할': 1,
 '일자리점검': 1,
 '행세': 1,
 '획기적': 1,
 '황금': 1,
 '헌법상': 1,
 '일본': 1,
 '헌신': 1,
 '이행': 1,
 '인터넷': 1,
 '전기자동차': 1,
 '인정': 1,
 '인식': 1,
 '현실': 1,
 '인력': 1,
 '인도': 1,
 '인간답': 1,
 '인간': 1,
 '현장': 1,
 '혁신도시': 1,
 '철학': 1,
 '포기': 1,
 '출발': 1,
 '진단': 1,
 '직속': 1,
 '출마선언': 1,
 '지역우대': 1,
 '지역사회': 1,
 '출마선언문': 1,
 '지역균형발전': 1,
 '지역경제': 1,
 '외면': 1,
 '지속가능성': 1,
 '지속가능': 1,
 '지배구조': 1,
 '지배': 1,
 '탁월': 1,
 '지방채용': 1,
 '지방대학': 1,
 '출발선': 1,
 '출산율': 1,
 '취약': 1,
 '취업': 1,
 '취업불안': 1,
 '측근세력들': 1,
 '지구상': 1,
 '중지': 1,
 '중요': 1,
 '침해': 1,
 '출마': 1,
 '진보': 1,
 '진보세력만': 1,
 '진심어린': 1,
 '천지': 1,
 '첫째': 1,
 '척결': 1,
 '채용': 1,
 '창조적': 1,
 '창조성': 1,
 '청산': 1,
 '청산해': 1,
 '창의성': 1,
 '창고': 1,
 '참여정부': 1,
 '초등단계': 1,
 '초라한': 1,
 '차원': 1,
 '차별철폐': 1,
 '집중': 1,
 '집안': 1,
 '집단협업': 1,
 '최상위': 1,
 '집단': 1,
 '진출': 1,
 '최우선': 1,
 '최저': 1,
 '최저임금': 1,
 '진정성': 1,
 '콘텐츠산업': 1,
 '중상모략': 1,
 '전반': 1,
 '평생학습': 1,
 '패자부활': 1,
 '편가르지': 1,
 '정조대왕': 1,
 '평가': 1,
 '정의로운': 1,
 '평등': 1,
 '정부구조': 1,
 '평범': 1,
 '정보통신': 1,
 '평생': 1,
 '정도': 1,
 '정당한': 1,
 '평창': 1,
 '토건사업': 1,
 '정권교체': 1,
 '점검': 1,
 '평화경제': 1,
 '절실': 1,
 '절박한': 1,
 '철저': 1,
 '평화로운': 1,
 '평화적': 1,
 '전진': 1,
 '전쟁': 1,
 '전장': 1,
 '전세계': 1,
 '패자': 1,
 '패배주의': 1,
 '파탄': 1,
 '정책과정': 1,
 '중단': 1,
 '토건세력': 1,
 '주요': 1,
 '주변국들': 1,
 '주도적': 1,
 '주거불안': 1,
 '주거복지': 1,
 '종사': 1,
 '종말': 1,
 '종류': 1,
 '존재해': 1,
 '존립': 1,
 '특기적성': 1,
 '조의': 1,
 '조세정의': 1,
 '제조': 1,
 '특별': 1,
 '제공': 1,
 '정치인': 1,
 '정치민주화': 1,
 '정치교체': 1,
 '튼튼': 1,
 '파괴': 1,
 '정책수단': 1,
 '파동': 1,
 '절박': 1,
 '가동': 1,
 '영혼들': 1,
 '과잉': 1,
 '권익': 1,
 '권한': 1,
 '균등': 1,
 '그들': 1,
 '극심한': 1,
 '근로능력': 1,
 '근로시간': 1,
 '급격': 1,
 '급급': 1,
 '기득권': 1,
 '기본방향': 1,
 '기술': 1,
 '기술혁신': 1,
 '기업지원': 1,
 '기초노령연금': 1,
 '군사대결지대': 1,
 '군림': 1,
 '국토방위': 1,
 '구축': 1,
 '관광': 1,
 '관대': 1,
 '관심': 1,
 '교사': 1,
 '구매력': 1,
 '구조도': 1,
 '구축작업': 1,
 '국토': 1,
 '국가권력': 1,
 '국가발전': 1,
 '국가일자리위원회': 1,
 '국경': 1,
 '국방력': 1,
 '국제관광특구': 1,
 '김대중': 1,
 '나노': 1,
 '낙수효과': 1,
 '대대적': 1,
 '눈물': 1,
 '다수': 1,
 '담보': 1,
 '담쟁이': 1,
 '당당': 1,
 '대결': 1,
 '대비': 1,
 '농림': 1,
 '대선출마': 1,
 '대외의존형': 1,
 '대외정책': 1,
 '대통령선거': 1,
 '대표': 1,
 '대화': 1,
 '누구': 1,
 '녹색': 1,
 '낙후': 1,
 '냉소거리': 1,
 '남북관계': 1,
 '남북정상선언': 1,
 '남북한': 1,
 '남북협력': 1,
 '낭비': 1,
 '내용': 1,
 '네트워크': 1,
 '노후불안': 1,
 '넷째': 1,
 '노동시장': 1,
 '노무현': 1,
 '노사': 1,
 '노인들': 1,
 '노후대비': 1,
 '과잉인력': 1,
 '과오': 1,
 '도입': 1,
 '과도': 1,
 '거대기업': 1,
 '거리': 1,
 '거부': 1,
 '거시구조적': 1,
 '거점': 1,
 '거창': 1,
 '걱정거리': 1,
 '건강': 1,
 '건강불안': 1,
 '건강지원': 1,
 '건곤': 1,
 '건설': 1,
 '겨를': 1,
 '결연': 1,
 '경감': 1,
 '거기': 1,
 '개혁': 1,
 '개최': 1,
 '강점': 1,
 '가족': 1,
 '가족구조': 1,
 '각종': 1,
 '감당': 1,
 '강력한': 1,
 '강요': 1,
 '강조': 1,
 '개천': 1,
 '개념': 1,
 '개발독재': 1,
 '개발사업': 1,
 '개방': 1,
 '개방형': 1,
 '개성공단': 1,
 '경영': 1,
 '경쟁력': 1,
 '경제력': 1,
 '공부': 1,
 '공공임대주택': 1,
 '공기업': 1,
 '공동선언': 1,
 '공동운명체': 1,
 '공동이익': 1,
 '공무원': 1,
 '공생': 1,
 '곳곳': 1,
 '공적서비스': 1,
 '공정거래질서': 1,
 '공정사회': 1,
 '공정한': 1,
 '공존': 1,
 '과거': 1,
 '공공성': 1,
 '곤란': 1,
 '경제위': 1,
 '고등학교': 1,
 '경제지': 1,
 '경제활동': 1,
 '경험': 1,
 '계층': 1,
 '고개': 1,
 '고단': 1,
 '고령자들': 1,
 '고조': 1,
 '고민': 1,
 '고사': 1,
 '고용': 1,
 '고용불안': 1,
 '고용영향평가제도': 1,
 '고용증진': 1,
 '덕분': 1,
 '독려': 1,
 '영역': 1,
 '상식': 1,
 '소득재분배': 1,
 '소박한': 1,
 '소비': 1,
 '소비생활': 1,
 '소외': 1,
 '소중': 1,
 '소통': 1,
 '손해': 1,
 '수립': 1,
 '가사': 1,
 '숙제': 1,
 '순국선열': 1,
 '승복해': 1,
 '승진기회': 1,
 '시대교체': 1,
 '소득': 1,
 '셋째': 1,
 '세종시': 1,
 '서민경제': 1,
 '상처': 1,
 '상황': 1,
 '생각': 1,
 '생태적': 1,
 '생활임금': 1,
 '서로': 1,
 '석유시대': 1,
 '성적스트레스': 1,
 '선성장': 1,
 '선진국': 1,
 '설악산': 1,
 '설치': 1,
 '성과': 1,
 '성장잠재력': 1,
 '시대착오적': 1,
 '시민들': 1,
 '시인': 1,
 '엄격': 1,
 '어디': 1,
 '어려움': 1,
 '어르신들': 1,
 '억울': 1,
 '억제': 1,
 '언덕': 1,
 '엄중하기': 1,
 '양측': 1,
 '에너지기술': 1,
 '역할': 1,
 '연결': 1,
 '연계': 1,
 '연동제': 1,
 '연륜': 1,
 '어깨': 1,
 '약화': 1,
 '시장경제': 1,
 '실효성': 1,
 '시장독재': 1,
 '신규고용': 1,
 '실력': 1,
 '실업자': 1,
 '실종': 1,
 '실질적': 1,
 '악순환': 1,
 '약속드': 1,
 '안가': 1,
 '안보': 1,
 '안보환경': 1,
 '안심': 1,
 '암울한': 1,
 '애국': 1,
 '상식적': 1,
 '살벌한': 1,
 '동북아시아': 1,
 '산업혁신': 1,
 '미래': 1,
 '미안': 1,
 '민주': 1,
 '민주영령': 1,
 '민주적': 1,
 '바이오산업': 1,
 '반칙': 1,
 '발걸음': 1,
 '발전': 1,
 '방법': 1,
 '방식': 1,
 '방안': 1,
 '방해': 1,
 '범정부회': 1,
 '병역': 1,
 '미국과': 1,
 '미국': 1,
 '문화혁신': 1,
 '막중': 1,
 '동행': 1,
 '둘째': 1,
 '뒷받침': 1,
 '뚜벅뚜벅': 1,
 '러시아': 1,
 '마을': 1,
 '모습': 1,
 '문화산업': 1,
 '목소리': 1,
 '목표': 1,
 '무궁무진한': 1,
 '무분별한': 1,
 '무엇': 1,
 '문제들': 1,
 '병행': 1,
 '보고': 1,
 '보상': 1,
 '빈부격차': 1,
 '불로소득': 1,
 '불비불명': 1,
 '불평등': 1,
 '붕괴': 1,
 '비례': 1,
 '비전': 1,
 '사교육': 1,
 '불구': 1,
 '사병': 1,
 '사상': 1,
 '사업': 1,
 '사유화': 1,
 '사회안전망': 1,
 '산업혁명': 1,
 '불균형': 1,
 '불공평': 1,
 '보수': 1,
 '부자': 1,
 '보완관계': 1,
 '보장하': 1,
 '보편적': 1,
 '복지투자': 1,
 '부모들': 1,
 '부유층': 1,
 '부자감세': 1,
 '불가능': 1,
 '부정부패': 1,
 '부처': 1,
 '북핵문제': 1,
 '분단': 1,
 '분야': 1,
 '분쟁': 1,
 '수천': 1}
"""

 

4. 워드 클라우드 만들기

# wc 만들기
from wordcloud import WordCloud
wc = WordCloud(random_state = 1234,         # 난수 고정
               font_path = font,            # 폰트 설정
               width = 400,                 # 가로 크기
               height = 400,                # 세로 크기
               background_color = 'white')  # 배경색
               
# 워드 클라우드 만들기
img_wordcloud = wc.generate_from_frequencies(dic_word)

# 워드 클라우드 출력하기
plt.figure(figsize = (10, 10))  # 가로, 세로 크기 설정
plt.axis('off')                 # 테두리 선 없애기
plt.imshow(img_wordcloud)       # 워드 클라우드 출력

워드 클라우드 모양 바꾸기

1. mask 만들기

2. 워드 클라우드 만들기

import PIL
icon = PIL.Image.open('cloud.png')

import numpy as np
img = PIL.Image.new('RGB', icon.size, (255, 255, 255))
img.paste(icon, icon)
img = np.array(img)
# wc 만들기
wc = WordCloud(random_state = 1234,         # 난수 고정
               font_path = font,            # 폰트 설정
               width = 400,                 # 가로 크기
               height = 400,                # 세로 크기
               background_color = 'white',  # 배경색
               mask = img)                  # mask 설정
               
# 워드 클라우드 만들기
img_wordcloud = wc.generate_from_frequencies(dic_word)

# 워드 클라우드 출력하기
plt.figure(figsize = (10, 10))  # 가로, 세로 크기 설정
plt.axis('off')                 # 테두리 선 없애기
plt.imshow(img_wordcloud)       # 워드 클라우드 출력

워드 클라우드 색깔 바꾸기

# wc 만들기
wc = WordCloud(random_state = 1234,         # 난수 고정
               font_path = font,            # 폰트 설정
               width = 400,                 # 가로 크기
               height = 400,                # 세로 크기
               background_color = 'white',  # 배경색
               mask = img,                  # mask 설정
               colormap = 'inferno')        # 컬러맵 설정
               
# 워드 클라우드 만들기
img_wordcloud = wc.generate_from_frequencies(dic_word)

# 워드 클라우드 출력하기
plt.figure(figsize = (10, 10))  # 가로, 세로 크기 설정
plt.axis('off')                 # 테두리 선 없애기
plt.imshow(img_wordcloud)       # 워드 클라우드 출력

  • 워드 클라우드는 디자인이 아름다워서 자주 사용되지만 분석결과를 정확하게 표현하는 그래프는 아니다.
  • 분석 결과를 정확하게 표현하려면 워드 클라우드보다 막대 그래프를 이용하는 게 좋다.

 

 

 

 

※ 해당 내용은 <Do it! 파이썬 데이터 분석>의 내용을 토대로 학습하며 정리한 내용입니다.

반응형