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

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

kakao
PRO
December 08, 2022

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

#ML #Mail #Python

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

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

kakao
PRO

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. ! 이 모델은 아직 개발중입니다

  3. 프로젝트 개발배경 딥러닝/머신러닝 모델 개발 과정 느낀점

  4. 프로젝트 개발배경 딥러닝/머신러닝 모델 개발 과정 느낀점

  5. 프로젝트 개발배경 딥러닝/머신러닝 모델 개발 과정 느낀점

  6. 프로젝트 개발배경: 개요 자동분류 스마트분류

  7. 프로젝트 개발배경: 스마트분류 미분류 청구서 쇼핑 프로모션 소셜

  8. 프로젝트 개발배경: 스마트분류 미분류 청구서 쇼핑 프로모션 소셜

  9. 프로젝트 개발배경: 스마트분류 미분류 청구서 쇼핑 프로모션 소셜

  10. 프로젝트 개발배경: 스마트분류 미분류 청구서 쇼핑 프로모션 소셜

  11. 프로젝트 개발배경: 스마트분류 미분류 청구서 쇼핑 프로모션 소셜 트래픽 ↑

  12. 프로젝트 개발배경: 스마트분류 미분류 청구서 쇼핑 프로모션 소셜 실시간 트래픽

  13. 프로젝트 개발배경: 스마트분류 미분류 청구서 쇼핑 프로모션 소셜 실시간 트래픽

  14. 프로젝트 개발배경: 예시 미분류 청구서 쇼핑 프로모션 소셜

  15. 프로젝트 개발배경: 예시 미분류 청구서 쇼핑 프로모션 소셜 ? ?

  16. 프로젝트 개발배경: 예시 미분류 청구서 쇼핑 프로모션 소셜 ? ?

  17. 프로젝트 개발배경: 예시 미분류 청구서 쇼핑 프로모션 소셜 ? ?

    Light
  18. 미분류 청구서 쇼핑 프로모션 소셜 ? ? Ligh t 프로젝트

    개발배경: 예시 ML
  19. 프로젝트 배경/요구사항 딥러닝/머신러닝 모델 개발 과정 느낀점

  20. DL ML Neural Network 
 feature를 스스로 학습 
 불확실성

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

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

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

    좀 더 넓은 범위 
 feature를 도메인 전문가가 주입
  24. 프로젝트 배경/요구사항 딥러닝/머신러닝 모델 개발 과정 느낀점

  25. 데이터 전처리 Component 모델 개발 모델 서빙 검증 프로젝트 개발과정

  26. 데이터 전처리 Component 모델 개발 모델 서빙 검증 프로젝트 개발과정

  27. 데이터 전처리 Component 모델 개발 모델 서빙 검증

  28. 데이터 전처리 Component 모델 개발 모델 서빙 검증

  29. 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ

  30. 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ

  31. 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ

  32. 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ

  33. 데이터 전처리 hfrom 메일 원문 
 발송자 주소 subject spf

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

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

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

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

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

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

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

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

    한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제 데이터 전처리 ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ 도메인 제한
  42. 데이터 전처리 Component 모델 개발 모델 서빙 검증

  43. AB 테스트 모델 분류 기존 스마트분류

  44. AB 테스트 기존 스마트분류 모델 분류

  45. AB 테스트 기존 스마트분류 모델 분류

  46. AB 테스트 기존 스마트분류 모델 분류 ӝઓ <೧׼ হ਺> 


    25%
  47. AB 테스트 기존 스마트분류 모델 분류

  48. AB 테스트 기존 스마트분류 모델 분류 laura.0326 ஠஠য় laura.0326 laura.0326

    laura.0326 XX XX XX XX
  49. 검증 이슈 ಴ࠄ૘ױ ୶୹ ߑߨ True/False

  50. 검증 이슈 ಴ࠄ૘ױ ୶୹ ߑߨ True/False

  51. 검증 ؘ੉ఠо ݆਺ 이슈 문제 ಴ࠄ૘ױ ୶୹ ߑߨ True/False

  52. 검증 ؘ੉ఠܳ ઴੉੗ 해결 이슈 문제 ؘ੉ఠо ݆਺ ಴ࠄ૘ױ ୶୹

    ߑߨ True/False
  53. 검증 ؘ੉ఠܳ ઴੉੗
 → మ೒݁ݫੌ ઁ৻ 해결 이슈 문제 ؘ੉ఠо

    ݆਺ ಴ࠄ૘ױ ୶୹ ߑߨ True/False
  54. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명 •

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

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

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

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

    필요 형태소 분석 X ۽*ۄ X X X 마스킹 처리 숫자 → 전처리 과정 추가 ۽ۄ੄ ੌ࢚੉ঠӝ ଻օ 명사구 묶음 과정 추가 명사를 제외하고 동일 여부 판단
  59. 템플릿메일 제외 - 3차 문장 유사도 ۽ۄ ݫӒ ಏ ץ

  60. 자카드 유사도 / 코사인 유사도 … 
 → 두 문장간

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

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

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

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


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


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


    (발송 도메인) MinHashLsh Chunk tag 
 추가 클러스터링 1,2,3차 MIX
  67. Chunk tag 추가 클러스터링 X XXX XXX X X X

    X …
  68. Chunk tag 추가 클러스터링  [ X ] X ৔ࣻૐ

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

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

    4차 데이터 덤프 정적 묶음 (발송 도메인) MinHashLsh Chunk tag 
 추가 클러스터링 1,2,3차 MIX ࢚ഐࠁ৮
  71. 프로젝트 배경/요구사항 딥러닝/머신러닝 모델 개발 과정 느낀점

  72. 느낀점 데이터를 많이 봐야 한다

  73. 느낀점 각 테스크는 가능한 가볍게 수행해라.

  74. 느낀점 모든 과정을 기록하라.

  75. 느낀점 믿음과 용기를 가져라.

  76. Just DO it. 100% 알고가는것이 아니라 모든 과정이 가설의 검증

    과정