1.개요
카카오톡 대화 내용을 분석하여 가장 많이 사용된 단어를 추출하고, 이를 JSON 파일로 확인할수있다.
2.프로그램 설명
카카오톡 대화 내보내기 기능으로 내보내진 파일을 바탕으로 konlpy를 이용한 한국어 형태소 분리로
대화방 사용자들이 말한 단어의 수를 파악하여 JSON 파일형식으로 확인할수있게한다.
"name": "단호한 포돌이",
"data": {
"사진": 4440,
"나": 2837,
"이모티콘": 2736,
"내": 1843,
"너": 1670,
"난": 1512,
3.코드
한국어 행태소 분리를 위한 konlpy를 사용하였고
JSON 파일 형태로 내보내기 위해 json 모듈을 import 하였다.
import konlpy
from konlpy.tag import Okt
import json
kakao.txt 파일을 읽어서 단어를 분석하는 부분이다.
1줄씩읽으며 첫번째 "," 부분으로 split하여 앞부분 날짜부분을 날리고
" : "으로 split하여 이름, 대화내용으로 분리한다.
이를 Okt.nouns로 단어를 분리하여 각 사용자의 단어수 딕셔너리에 추가한다.
okt = Okt()
kor_dics ={}
human=[]
# 파일 경로 설정
file_path = './kakao.txt'
# 파일 열기 (읽기 모드로)
with open(file_path, 'r', encoding='utf-8') as file:
# 파일의 각 줄에 대해 반복
cnt=0
for line in file:
#앞의 날짜,이름,텍스트 부분 분리, 단어형태소분리
try:
name,txt=line.split(", ", 1)[1].split(" : ")
kor_list=okt.nouns(txt.strip())
except:
print(cnt+"줄 오류")
continue
#등록되지않은 사용자 추가
if(name not in human):
kor_dics[name]={}
human.append(name)
#단어 추가
for voca in kor_list:
try:
kor_dics[name][voca]+=1
except:
kor_dics[name][voca]=1
#몇번째 줄인지 출력
cnt+=1
#if(cnt==100000):break #줄수 제한할때사용
print(cnt)
JSON 파일으로 내보낸다.
#JSON 파일 만들어서 출력하기
for human_name in human:
file_path = human_name+'.json'
with open(file_path, 'w', encoding='utf-8') as f:
sorted_items = sorted(kor_dics[human_name].items(), key=lambda x: x[1], reverse=True)
data = {
"name": human_name,
"data": {name: value for name, value in sorted_items}
}
json.dump(data, f, ensure_ascii=False, indent=4)
https://github.com/asa9874/Kakao_Word_Analysis
'Language > Python' 카테고리의 다른 글
[오류][Python] 가상환경을 활성화해도 적용이 안될때 (0) | 2024.07.12 |
---|---|
[Python]24시간 디스코드 봇 무료 호스팅하기 구글클라우드 (0) | 2024.05.20 |
[Python] Steam api로 내가 쓴돈 알아내기 + discord bot에서 사용 (1) | 2024.05.15 |