[개발일지]3일차 스파르타코딩클럽 파이썬 혼자놀기 - 워드클라우드 만들기 [힙한취미코딩]

오늘 생성된 결과물

파이썬으로 텍스트파일 읽고 쓰는방법

읽기

with open("test.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()
    for line in lines:
        print(line)

쓰기

with open("test.txt", "w", encoding="utf-8") as f:
    f.write("각 줄마다 번호를 적은 파일입니다.\n")
    for i in [1,2,3,4,5]:
        f.write(f"이것은 {i}번째 줄입니다.\n")
        
with open("test.txt", "w", encoding="utf-8") as f:
    f.write("안녕, 스파르타!")

워드클라우드 만들기

텍스트파일 준비하기

PC카톡에서 채팅방을 열고 메뉴 -> 대화내용 -> 대화내용 내보내기로 TXT 파일 준비

텍스트파일 읽기

각 라인을 읽어 text 변수에 저장하기

text = ""
# 파일 이름은 맞게 바꿔주세요!
with open("kakaotalk.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()
    for line in lines:
        text+=line

print(text)

워드클라우드 설치 및 코딩

ㅇ패키지 설치

wordcloud 패키지 설치하기.

ㅇ한글폰트 고르기

font_path = 'C:\Windows\Fonts\malgunbd.ttf'

워드클라우드로 이미지 만들기

from wordcloud import WordCloud

text = ""

with open("kakaotalk.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()
    for line in lines:
            text += line

font_path = 'C:/Windows/Fonts/CoreGTM3.otf'

wc = WordCloud(font_path=font_path, background_color="white", width=600, height=400)
wc.generate(text)
wc.to_file("result.png")

데이터 클렌징

데이터 클렌징이란?

  • 전처리(preprossessing) 과정의 하나로, 자료에서 불완전하거나, 비정확하거나, 관련 없는 부분을 찾아 삭제하거나 수정하는 것을 말합니다. 테이블에 빈 칸이 있거나, 단위가 잘못되었거나, 오타가 있거나 등등의 경우에 원하는 결과를 얻을 수 없기 때문에 분석하기 전에 미리 처리를 해주는 것이죠. 우리의 경우에는 내보내기한 카카오톡을 열어보면 날짜, 시간, 프로필 이름 등의 무의미한 부분이 반복적으로 나타나기 때문에 이것들을 지워주어야 더 흥미로운, 실제로 사람들이 사용한 단어를 강조할 수 있습니다.

기본 데이터 클렌징

from wordcloud import WordCloud

text = ""
# 파일 이름은 맞게 바꿔주세요!
with open("kakaotalk.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()
    for line in lines:
        text += line

print(text)

# font_path = 'C:/Windows/Fonts/CoreGTM3.otf'
#
# wc = WordCloud(font_path=font_path, background_color="white", width=600, height=400)
# wc.generate(text)
# wc.to_file("result.png")

워드클라우드 플랫폼 클렌징

from wordcloud import WordCloud

text = ""
# 파일 이름은 맞게 바꿔주세요!
with open("kakaotalk.txt", "r", encoding="utf-8") as file:
    lines = file.readlines()
    for line in lines:
        if '] [' in line:
            text += line.split('] ')[2].replace('ㅋ','').replace('ㅠ','').replace('ㅜ','').replace('사진\n','').replace('이모티콘\n','').replace('삭제된 메시지입니다','')

font_path = 'C:/Windows/Fonts/CoreGTM3.otf'

wc = WordCloud(font_path=font_path, background_color="white", width=600, height=400)
wc.generate(text)
wc.to_file("result.png")

원하는 모양으로 만들기

MASK 이미지를 준비해서 만든다.

from PIL import Image
import numpy as np

mask = np.array(Image.open('cloud.png'))
wc = WordCloud(font_path=font_path, background_color="white", mask=mask)
wc.generate(text)
wc.to_file("result_masked.png")

좋은 웹페이지 즐겨찾기