Upgrade to Pro — share decks privately, control downloads, hide ads and more …

메일 카테고리 분류 모델 개발기

kakao
December 08, 2022

메일 카테고리 분류 모델 개발기

#ML #Mail #Python

카카오에서는 다음 메일과 카카오 메일을 서비스 하고 있습니다.
각 서비스에서는 메일의 유형을 분류하는 모델을 신규로 개발 중에 있습니다.
이 세션에서는 머신러닝에 대해 생소한 백엔드 개발자가 어떻게 분류 모델을 개발하였는지, 그 과정과 진행하며 깨달은 사항들에 대해 공유합니다.

발표자 : laura.0326
카카오에서 다음/카카오 메일 서비스를 개발하고 있는 로라입니다.

kakao

December 08, 2022
Tweet

More Decks by kakao

Other Decks in Programming

Transcript

  1. 메일 카테고리 분류 모델 개발기 이소민 Laura.0326 카카오 Copyright 2022.

    Kakao Corp. All rights reserved. Redistribution or public display is not permitted without written permission from Kakao. if(kakao)2022
  2. DL ML Neural Network 
 feature를 스스로 학습 
 불확실성

    좀 더 넓은 범위 
 feature를 도메인 전문가가 주입
  3. DL ML Neural Network 
 feature를 스스로 학습 
 불확실성

    좀 더 넓은 범위 
 feature를 도메인 전문가가 주입
  4. DL ML Neural Network 
 feature를 스스로 학습 
 불확실성

    좀 더 넓은 범위 
 feature를 도메인 전문가가 주입
  5. DL ML Neural Network 
 feature를 스스로 학습 
 불확실성

    좀 더 넓은 범위 
 feature를 도메인 전문가가 주입
  6. 데이터 전처리 hfrom 메일 원문 
 발송자 주소 subject spf

    메일 제목 메일보안표준 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ
  7. 데이터 전처리 subject hfrom spf 메일 원문 
 발송자 주소

    메일 제목 메일보안표준 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ
  8. 데이터 전처리 subject hfrom spf 메일 원문 
 발송자 주소

    메일 제목 메일보안표준 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ
  9. 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ preprocess =

    make_column_transformer( (TfidfVectorizer(), 'subject'), (OneHotEncoder(handle_unknown='ignore'), ['spf']), (CountVectorizer(tokenizer=lambda text: re.split(r"\@",text)), 'hfrom') )
  10. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명 •

    한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ
  11. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명 •

    한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ
  12. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명 •

    한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ
  13. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명 •

    한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ
  14. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명 •

    한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ 도메인 제한
  15. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명 •

    한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ
  16. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명 •

    한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ XXX XXX
  17. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명 •

    한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ XXX XXX 발송 도메인 + 제목 템플릿메일 제외 - 1차 정적 기준 묶음
  18. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명 •

    한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ XXX XXX 발송 도메인 + 제목 템플릿메일 제외 - 1차 정적 기준 묶음
  19. 템플릿메일 제외 - 2차 →형태소 분석에 오차가 생긴 경우 대비책이

    필요 형태소 분석 X ۽*ۄ X X X 마스킹 처리 숫자 → 전처리 과정 추가 ۽ۄ੄ ੌ࢚੉ঠӝ ଻օ 명사구 묶음 과정 추가 명사를 제외하고 동일 여부 판단
  20. 자카드 유사도 / 코사인 유사도 … 
 → 두 문장간

    유사도를 비교해야함(비교군 / 대조군) 
 → O(n2) 템플릿메일 제외 - 3차 MinHashLsh 
 → 문서 내 문장들을 비교하여 빠르게 유사도 비교가 가능 → ≈ O(n) X XXX X X X X XXX X X X X XXX X X X X XXX 문장 유사도
  21. 1,2,3차 비교 정적 묶음 
 (발송 도메인 + 제목) 형태소

    분석 문장 유사도 방법 제목에 
 가변 정보가 없는 메일을 
 묶어서 보여준다. 형태소 분석 후 명사구를 추출, 
 문장서 이를 제하고 비교하여 
 동일한 경우 묶어서 보여준다. 여러 문장들의 유사도를 계산, 
 유사한 메일들을 묶어서 보여준다. 한계 제목에 
 가변 정보가 있는 메일은 처리하기 어렵다. 형태소 분석 결과가 
 잘못된 경우 
 검수에 어려움이 있음 묶인 메일 중 템플릿 메일 외의 건이 존재한다.
  22. Component 템플릿메일 제외 - 4차 데이터 덤프 정적 묶음 (발송

    도메인) MinHashLsh Chunk tag 
 추가 클러스터링 1,2,3차 MIX
  23. Component 템플릿메일 제외 - 4차 데이터 덤프 정적 묶음 (발송

    도메인) MinHashLsh Chunk tag 
 추가 클러스터링 1,2,3차 MIX
  24. Component 템플릿메일 제외 - 4차 데이터 덤프 정적 묶음 


    (발송 도메인) MinHashLsh Chunk tag 
 추가 클러스터링 1,2,3차 MIX
  25. Component 템플릿메일 제외 - 4차 데이터 덤프 정적 묶음 


    (발송 도메인) MinHashLsh Chunk tag 
 추가 클러스터링 1,2,3차 MIX 템플릿 메일 외에도 
 섞이는 메일이 존재한다. → 추가 작업으로 개선
  26. Component 템플릿메일 제외 - 4차 데이터 덤프 정적 묶음 


    (발송 도메인) MinHashLsh Chunk tag 
 추가 클러스터링 1,2,3차 MIX
  27. Chunk tag 추가 클러스터링  [ X ] X ৔ࣻૐ

    (X֙ Xਘ Xੌ) VX NX [ X ] X ৔ࣻૐ (Y֙ Yਘ Yੌ) VX NX
  28. Component 템플릿메일 제외 - 4차 데이터 덤프 정적 묶음 (발송

    도메인) MinHashLsh Chunk tag 
 추가 클러스터링 1,2,3차 MIX ഋకࣗ য়ର ೲਊ ୶о ੘স ೙ਃ
  29. ୶о ੘স ೙ਃ ഋకࣗ য়ର ೲਊ Component 템플릿메일 제외 -

    4차 데이터 덤프 정적 묶음 (발송 도메인) MinHashLsh Chunk tag 
 추가 클러스터링 1,2,3차 MIX ࢚ഐࠁ৮