카톡 대화로 워드 클라우드 만들기

zero_0·2021년 9월 14일
0

토이프로젝트

목록 보기
3/3
post-thumbnail

완성 모습

하트모양

별모양

카톡 대화 내용 준비

카톡방에 들어가서 대화 내용-> 대화 내보내기로 텍스트 파일을 파이썬 폴더에 옮긴다.

  • 카카오톡 텍스트 파일 읽기 코드
text = ""

with open("파일이름.text", "r", encoding="utf-8") as f:
    lines = f.readlines()
    for line in lines:
        text+=line

print(text)

wordcloud 패키지 설치

  • wordcloud를 설치하면 되는데 파이썬 3.9 버전에서는 아무리 구글링해도 error가 떴다.. 그래서 결국 한단계 낮은 3.8 버전을 추가로 설치했다. 그 이후에도 venv가 안떠서 고생했지만 여차저차 해서 3.8 로 실행했다.

    3.9 ver에서 오류 뜬 모습

  • 파이썬에서 한글을 지원하는 폰트로 바꿔줘야 한다.
    아래를 복사해서 실행한 후 나온 폰트 중 마음에 드는 폰트 경로를 복사한다. (윈도우에서는 백슬레시를 \-> 포워드 슬래시 /로 바꿔준다.)

import matplotlib.font_manager as fm

# 이용 가능한 폰트 중 '고딕'만 선별
for font in fm.fontManager.ttflist:
    if 'Gothic' in font.name:
        print(font.name, font.fname)

데이터 클렌징

데이터 클렌징(Data Cleansing)은 전처리(preprossessing) 과정의 하나로, 자료에서 불완전하거나, 비정확하거나, 관련 없는 부분을 찾아 삭제하거나 수정하는 것을 말함.

  • .split(' ')[i] 과 .replace('어쩌구','') 이런 방식으로 카톡 데이터를 깔끔스 하게 정리했다.

원하는 모양 잡기

원하는 png를 다운 받고 ,이미지를 스텐실(컴퓨팅에서는 mask라는 표현을 사용한다)로 사용해서 검은 부분에만 글씨를 채워놓도록 하기


완성된 코드

from wordcloud import WordCloud
from PIL import Image
import numpy as np

text = ''
with open("kakao.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()
    for line in lines[5:]:
        if '] [' in line:
            text += line.split('] ')[2].replace('ㅋ','').replace('이모티콘\n','').replace('사진','').replace('ㅋㄷ','').replace('넘','').replace('나','')

mask = np.array(Image.open('heart.png'))
wc = WordCloud(font_path='C:/Windows/Fonts/Hancom Gothic Bold.ttf', background_color="white", mask=mask)
wc.generate(text)
wc.to_file("result_masked.png")

완성한 뒤 소감🎈

솔직히 너무 재밌었다. 스파르타 문서
만들면서 알고리즘 코테에 대한 스트레스도 풀리고 (회피하고 있는 거지만)
따라하기만 했는데 뚝딱 만들 수 있다는 게 좋았다.
그러면서 한편으로는 앞으로 이런 코딩은 스스로 만들어야 할텐데
얼마나 더 해야하나 막막한 생각도 들었다.
스스로 만들 수 없다면 도루묵이라는 생각이 슬프게 했다.
그래도 응용하고 반복해서 사용하다보면 잘 할 수 있을거라 믿고 킵고잉한다.

진로에 대해 막막한 생각이 들때 따라 만들어보는 걸 추천한다! 일단 재밌음ㅋㅋㅋ

profile
차근차근 채워가는 it일지

0개의 댓글