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

    View Slide

  2. !
    이 모델은 아직 개발중입니다

    View Slide

  3. 프로젝트 개발배경


    딥러닝/머신러닝


    모델 개발 과정


    느낀점

    View Slide

  4. 프로젝트 개발배경


    딥러닝/머신러닝


    모델 개발 과정


    느낀점

    View Slide

  5. 프로젝트 개발배경


    딥러닝/머신러닝


    모델 개발 과정


    느낀점

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. 프로젝트 배경/요구사항


    딥러닝/머신러닝


    모델 개발 과정


    느낀점

    View Slide

  20. DL ML
    Neural Network

    feature를 스스로 학습

    불확실성
    좀 더 넓은 범위

    feature를 도메인 전문가가 주입

    View Slide

  21. DL ML
    Neural Network

    feature를 스스로 학습

    불확실성
    좀 더 넓은 범위

    feature를 도메인 전문가가 주입

    View Slide

  22. DL ML
    Neural Network

    feature를 스스로 학습

    불확실성
    좀 더 넓은 범위

    feature를 도메인 전문가가 주입

    View Slide

  23. DL ML
    Neural Network

    feature를 스스로 학습

    불확실성
    좀 더 넓은 범위

    feature를 도메인 전문가가 주입

    View Slide

  24. 프로젝트 배경/요구사항


    딥러닝/머신러닝


    모델 개발 과정


    느낀점

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  33. 데이터 전처리
    hfrom
    메일 원문

    발송자 주소
    subject spf
    메일 제목 메일보안표준
    ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ

    View Slide

  34. 데이터 전처리
    subject
    hfrom spf
    메일 원문

    발송자 주소
    메일 제목 메일보안표준
    ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ

    View Slide

  35. 데이터 전처리
    subject
    hfrom spf
    메일 원문

    발송자 주소
    메일 제목 메일보안표준
    ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ

    View Slide

  36. 데이터 전처리
    ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ
    preprocess = make_column_transformer(


    (TfidfVectorizer(), 'subject'),


    (OneHotEncoder(handle_unknown='ignore'), ['spf']),


    (CountVectorizer(tokenizer=lambda text:


    re.split(r"\@",text)), 'hfrom')


    )


    View Slide

  37. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명


    • 한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제
    데이터 전처리
    ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ

    View Slide

  38. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명


    • 한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제
    데이터 전처리
    ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ

    View Slide

  39. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명


    • 한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제
    데이터 전처리
    ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ

    View Slide

  40. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명


    • 한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제
    데이터 전처리
    ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ

    View Slide

  41. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명


    • 한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제
    데이터 전처리
    ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ
    도메인 제한

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    25%

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  53. 검증
    ؘ੉ఠܳ ઴੉੗

    → మ೒݁ݫੌ ઁ৻
    해결
    이슈
    문제 ؘ੉ఠо ݆਺
    ಴ࠄ૘ױ ୶୹ ߑߨ True/False

    View Slide

  54. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명


    • 한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제
    데이터 전처리
    ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ

    View Slide

  55. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명


    • 한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제
    데이터 전처리
    ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ
    XXX
    XXX

    View Slide

  56. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명


    • 한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제
    데이터 전처리
    ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ
    XXX
    XXX
    발송 도메인 + 제목
    템플릿메일 제외 - 1차
    정적 기준 묶음

    View Slide

  57. • 각 카테고리별로 동일한 양을 넣어주어야 하는 것은 자명


    • 한 카테고리 내에서 균형있는 메일의 양 또한 중요한 문제
    데이터 전처리
    ೖ୛ ࢶఖ ߭ఠച ߑߨ ೟ण Ӑഋ
    XXX
    XXX
    발송 도메인 + 제목
    템플릿메일 제외 - 1차
    정적 기준 묶음

    View Slide

  58. 템플릿메일 제외 - 2차
    →형태소 분석에 오차가 생긴 경우 대비책이 필요
    형태소 분석
    X ۽*ۄ X X X
    마스킹 처리 숫자 → 전처리 과정 추가
    ۽ۄ੄ ੌ࢚੉ঠӝ ଻օ
    명사구 묶음 과정 추가
    명사를 제외하고 동일 여부 판단

    View Slide

  59. 템플릿메일 제외 - 3차
    문장 유사도
    ۽ۄ
    ݫӒ

    ץ

    View Slide

  60. 자카드 유사도 / 코사인 유사도 …

    → 두 문장간 유사도를 비교해야함(비교군 / 대조군)

    → O(n2)
    템플릿메일 제외 - 3차
    MinHashLsh

    → 문서 내 문장들을 비교하여 빠르게 유사도 비교가 가능


    → ≈ O(n)
    X XXX X X X
    X XXX X X X
    X XXX X X X
    X XXX
    문장 유사도

    View Slide

  61. 1,2,3차 비교
    정적 묶음

    (발송 도메인 + 제목)
    형태소 분석 문장 유사도
    방법
    제목에

    가변 정보가 없는 메일을

    묶어서 보여준다.
    형태소 분석 후 명사구를 추출,

    문장서 이를 제하고 비교하여

    동일한 경우 묶어서 보여준다.
    여러 문장들의 유사도를 계산,

    유사한 메일들을 묶어서 보여준다.
    한계
    제목에

    가변 정보가 있는 메일은


    처리하기 어렵다.
    형태소 분석 결과가

    잘못된 경우

    검수에 어려움이 있음
    묶인 메일 중


    템플릿 메일 외의


    건이 존재한다.

    View Slide

  62. Component
    템플릿메일 제외 - 4차
    데이터 덤프
    정적 묶음


    (발송 도메인)
    MinHashLsh
    Chunk tag

    추가 클러스터링
    1,2,3차 MIX

    View Slide

  63. Component
    템플릿메일 제외 - 4차
    데이터 덤프
    정적 묶음


    (발송 도메인)
    MinHashLsh
    Chunk tag

    추가 클러스터링
    1,2,3차 MIX

    View Slide

  64. Component
    템플릿메일 제외 - 4차
    데이터 덤프
    정적 묶음

    (발송 도메인)
    MinHashLsh
    Chunk tag

    추가 클러스터링
    1,2,3차 MIX

    View Slide

  65. Component
    템플릿메일 제외 - 4차
    데이터 덤프
    정적 묶음

    (발송 도메인)
    MinHashLsh
    Chunk tag

    추가 클러스터링
    1,2,3차 MIX
    템플릿 메일 외에도

    섞이는 메일이 존재한다.
    → 추가 작업으로 개선

    View Slide

  66. Component
    템플릿메일 제외 - 4차
    데이터 덤프
    정적 묶음

    (발송 도메인)
    MinHashLsh
    Chunk tag

    추가 클러스터링
    1,2,3차 MIX

    View Slide

  67. Chunk tag 추가 클러스터링
    X XXX
    XXX
    X X X X
    …

    View Slide

  68. Chunk tag 추가 클러스터링

    [ X ] X ৔ࣻૐ (X֙ Xਘ Xੌ)
    VX NX
    [ X ] X ৔ࣻૐ (Y֙ Yਘ Yੌ)
    VX NX

    View Slide

  69. Component
    템플릿메일 제외 - 4차
    데이터 덤프
    정적 묶음


    (발송 도메인)
    MinHashLsh
    Chunk tag

    추가 클러스터링
    1,2,3차 MIX
    ഋకࣗ য়ର ೲਊ
    ୶о ੘স ೙ਃ

    View Slide

  70. ୶о ੘স ೙ਃ

    ഋకࣗ য়ର ೲਊ
    Component
    템플릿메일 제외 - 4차
    데이터 덤프
    정적 묶음


    (발송 도메인)
    MinHashLsh
    Chunk tag

    추가 클러스터링
    1,2,3차 MIX
    ࢚ഐࠁ৮

    View Slide

  71. 프로젝트 배경/요구사항


    딥러닝/머신러닝


    모델 개발 과정


    느낀점

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide