연말이 다가오고 이제 지인 혹은 연인과의 대화 내용을 한번 곱씹어도 좋을 것 같아서 매해마다 재미로 해본다. 예전에는 몇년이고 모든 대화를 다 내보낼 수 있어서 좋았는데, 지금은 최근 3개월만 내보내지는 듯해서 아쉽다. 하지만 최근 3개월이라 기억이 더욱 잘나서 그런가 공감도 더 잘되고 더 재밌는듯 하기도 하다.
아무튼 간단한 코드로 pc카톡을 통해서 내보낸 대화내용을 가지고 2글자 이상!인 단어들로 하여금 빈도를 쭉 뽑아보았다.
위처럼 pc카톡에서 쉽게 대화를 내보낼 수 있다. 내보내진 대화 파일은 text파일로 저장이 되서 쉽게 열어볼 수 있다.
이제 파이썬을 열고!
현재 디렉토리! 내보낸 대화 파일명! 이 두가지만 가지고 한번 결과를 내보자 !
코드에 함수를 사용하기 위해서 아래의 매개변수에 대한 설명을 읽고 수행하자.
file: 파일이름 형식. 예 : ("파일이름.txt")
path와 file 모두 문자형식으로 입력.
추가하고 싶은 단어가 있을 경우 함수 안에서 입력. (add_dictionary 사용)
!pip install customized_konlpy # ckonlpy 패키지 설치
이제 이 함수만 실행시키면 된다.
def conversation(path, file):
# 모듈
import os
import re
import operator
import pandas as pd
from datetime import datetime
from ckonlpy.tag import Twitter
#0 현재 경로 설정
os.chdir(path)
#1 시간 체크
start = datetime.now()
#2 파일 불러오기
kakao=[]
with open(file, "r", encoding='utf-8') as f:
for i in f.readlines():
kakao.append(i)
###3 추가하고 싶은 단어를 추가하는 곳.
twitter=Twitter() # Twitter 생성자 호출
twitter.add_dictionary('학식', 'Noun') #예시
twitter.add_dictionary(['학식','학생식당'], 'Noun') #예시
###4 형태소 추출 및 전처리
kakao_morphs=[]
for i in kakao:
i = re.sub("[0-9]"," ",i)
i = re.sub("[\n:-~]"," ",i)
i = re.sub("[ㄱ-ㅎ]"," ",i)
i = re.sub("[오전]"," ",i)
i = re.sub("[이모티콘]"," ",i)
kakao_morphs.append(twitter.pos(i))
###5 명사, 동사만 추출
kakao_words=[]
for i in kakao_morphs:
tmp=[list(j)[0] for j in i if list(j)[1] in ['Noun','Verb']]
tmp=[i for i in tmp if len(i) > 1]
kakao_words.extend(tmp)
###6 빈도순으로 추출
words_freq={}
for i in kakao_words:
if i not in list(words_freq.keys()):
words_freq[i]=1
else:
words_freq[i]=words_freq[i]+1
sorted_words = sorted(words_freq.items(), key=operator.itemgetter(1), reverse=True)
###7 엑셀 저장
df=pd.DataFrame(sorted_words)
df.to_excel("conversation.xlsx")
print("걸린시간: ", datetime.now()-start)
## 혹시 경로(path) 설정시 unicode에러가 나면 아래 예시처럼 앞에 r을 붙여본다.
아래에 입력해야할 것만 잘 입력하면 아무 문제없이 엑셀파일까지 잘 나온다 !
conversation(r"C:\Users\Anaconda3","정.txt")
실행 후에는 설정한 path 에 엑셀파일이 아래와 같이 저장이 된다.
파일을 열어보면 아래와 같은 결과물을 얻을 수 있다. 그리고 지인 혹은 연인과 이 결과물에 대하여 연말 피드백을 해본다.
reference: https://github.com/lovit/customized_konlpy
'기타' 카테고리의 다른 글
줌인터넷 투자 콘텐츠 서비스 (0) | 2022.05.24 |
---|---|
텐서플로우 설치 (0) | 2020.04.20 |
카카오톡 대화 내용 빈도 분석2 (0) | 2019.12.26 |
댓글