카톡 분석(pandas) - 나의 커뮤니케이션 패턴은?(1탄)

카톡 대화 내용을 가지고 여러가지를 해볼 수 있을 것 같다. 아이디어는 이렇다.

 

아이디어

TXT 원본 파일 데이터 정제

대화 점유율 확인

특정 대화방의 갬성 추출(특정인은 유의미할까?) + 대화방 데이터끼리 합쳐서 나의 갬성 추출?

한글 형태소 분석 -> 텍스트 분석

그리고 시각화

기타 등등

 

효과

친구, 가족끼리 재미용

오카방에서 내쫓을 명분 데이터 확인

 

카톡 원본 대화 추출

카톡 대화 내보내기(.txt)

카톡방 삼바리 메뉴 > 대화 내용 > 대화 내보내기를 누르면 txt 파일로 내보낼 수 있다.

pc와 모바일 카톡 대화의 싱크가 간혹 안 맞을 때가 있는데, 일반적으로 pc 카톡을 많이 쓰기 때문에 pc 카톡 데이터를 쓴다

 

카톡 대화 형식 둘러보기

형식을 보면

1. '[이름] [오전or오후 시간] 내용' 형식을 갖추고 있다.

2. 대화방을 나간경우 '[이름]님이 나가셨습니다.'  형식을 갖추고 있다.

이제 위 내용을 정규화하여 텍스트 파일을 dataframe 형태로 만들자.

 

def katalk_msg_parser(file_path):
    katalk_data= list()
    out_counting = { }
    katalk_msg_pattern = "\[(.*)\] \[(오. [0-9]{1,2}:[0-9]{1,2})\] (.*)"
    outoftalk_pattern = "(.*)님이 나갔습니다."
    for line in open(file_path, encoding='utf-8'):
        if(re.match(katalk_msg_pattern, line)):
            katalk_data.append({'user_name': re.match(katalk_msg_pattern,line).group(1),
                               'date_time': re.match(katalk_msg_pattern,line).group(2),
                               'text': re.match(katalk_msg_pattern,line).group(3)})
    katalk_df = pd.DataFrame(katalk_data)
    return katalk_df

 

우선, 1번과 2번의 패턴을 정규화로 만들었다. 까먹었던 정규화를 다시 보느라 귀차니즘 발동.

 

katalk_data 리스트에 추가할 때 이름, 시간, 내용을 그룹으로 뽑아서 저장할 수 있게 하였다.

방을 나갔을 때 정규화식은 적었는데, 파이썬 어떤 자료형이 적절할지 나중에 생각거리로 냅두었다.

 

파일 입력/출력을 UI 상으로 가능할 수 있게 하려고 하는데, 파일을 열 때 인코딩을 명시해줘야 한다는걸 배웠다.

 

데이터 프레임으로 데이터는 써먹을 수 있게 했으니 다음 공부를 하러 가자.