[힙한취미코딩] 내가 많이 쓰는 말 분석하기 (feat. 카톡)
#스파르타코딩클럽후기 #코딩교육 #파이썬혼자놀기패키지 #코딩 #비전공자 #전공자 #코딩시작
#스파르타 #sparta
파이썬으로 텍스트 파일 쓰기
open으로 파일을 열어준다. test.txt가 없으면 새로 생긴다.
파이썬으로 텍스트 파일 읽기
파일을 가지고 읽어라
워드 클라우드
이제는 카카오톡에서 내가 어떤 말을 많이 쓰는지 분석해볼 것이다!!!
대화방에 들어가서 대화내용 내보내기를 해준다.
카카오 대화내용이 텍스트 파일로 저장이 되는데 프로젝트 파일에 저장해준다.
kakao라고 이름을 지었다.
text = ''
with open("kakao.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
for line in lines:
text += line
print(text)
패키지
file > settings > python interpreter > wordcloud 설치!
파이썬에서 그림을 그릴 때 기본으로 사용하는 폰트가 한글을 지원하지 않는 경우가 많다.
폰트파일이 저장되어있는 경로를 찾아서 넣어주어야한다.
코드를 작성하고 실행하면 아래처럼 출력이 되는데 튜터님께서 NanumGothic를 추천하셔서 이 폰트를 써볼 것이다.
경로 복사!
이 경로를 확인하는 코드는 경로를 확인하고 난 후에는 지워주자!
워드클라우드 활용할 차례!
내가 어떤 단어를 많이 쓰는지 분석하고 result.png로 알려준다.
from wordcloud import WordCloud
text = ''
with open("kakao.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
for line in lines:
text += line
wc = WordCloud(font_path='C:/WINDOWS/Fonts/NanumGothic.ttf', background_color="white", width=600, height=400)
wc.generate(text)
wc.to_file("result.png")
근데!!! 이대로 실행하니까 친구이름이랑 내 이름, 오전, 오후가 제일 크게 나왔다!
데이터클렌징을 해주어야 한다
데이터클렌징
- 전처리(preprossessing) 과정의 하나로, 자료에서 불완전하거나, 비정확하거나, 관련 없는 부분을 찾아 삭제하거나 수정하는 것을 말합니다. 테이블에 빈 칸이 있거나, 단위가 잘못되었거나, 오타가 있거나 등등의 경우에 원하는 결과를 얻을 수 없기 때문에 분석하기 전에 미리 처리를 해주는 것이죠.
우리의 경우에는 내보내기한 카카오톡을 열어보면 날짜, 시간, 프로필 이름 등의 무의미한 부분이 반복적으로 나타나기 때문에 이것들을 지워주어야 더 흥미로운, 실제로 사람들이 사용한 단어를 강조할 수 있습니다.
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[2:]:
if '] [' in line:
# 카톡에서 쓴 이모티콘은 텍스트파일에서 이모티콘으로 표시된다.
# 텍스트로 쓴 이모티콘과 진짜 이모티콘은 \n로 구별한다.
text += line.split('] ')[2].replace('ㅋ', '').replace('ㅠ', '').replace('ㅜ', '').replace('사진\n', '').replace(
'이모티콘\n', '').replace('삭제된 메시지입니다', '')
print(text)
# wc = WordCloud(font_path='C:/WINDOWS/Fonts/NanumGothic.ttf', background_color="white", width=600, height=400)
# wc.generate(text)
# wc.to_file("result2.png")
mask = np.array(Image.open('kakaotalk.png'))
wc = WordCloud(font_path='C:/WINDOWS/Fonts/NanumGothic.ttf', background_color="white", mask=mask)
wc.generate(text)
wc.to_file("result_masked.png")
주석처리된 부분 말고도 아래 코드로 원하는 모양으로 결과를 만들 수 있다.
결과 구름 모양으로 만들기