Skip to content

Latest commit

ย 

History

History
122 lines (90 loc) ยท 6.71 KB

File metadata and controls

122 lines (90 loc) ยท 6.71 KB

์ŠคํŒธ๋ฉ”์ผ ํƒ์ง€๊ธฐ

์ด ํ”„๋กœ์ ํŠธ๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ๊ธฐ์ˆ ๊ณผ Gmail API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด๋ฉ”์ผ์„ "์ŠคํŒธ"๊ณผ "๋น„์ŠคํŒธ"์œผ๋กœ ์ž๋™ ๋ถ„๋ฅ˜ํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์€ ์ˆ˜์‹ ๋˜๋Š” ์ด๋ฉ”์ผ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ๋ฐœ์‹ ์ž์™€ ์ œ๋ชฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถ„๋ฅ˜ํ•œ ํ›„ ์ค‘์š”ํ•œ ์ด๋ฉ”์ผ์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ์ „์†กํ•˜์—ฌ ์ŠคํŒธ์„ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ์ˆ˜๋™ ์ด๋ฉ”์ผ ์ •๋ ฌ ์ž‘์—…์„ ์ค„์ด๊ณ  ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๋ฉฐ, ๋Œ€๋Ÿ‰์˜ ์ด๋ฉ”์ผ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

์ฃผ์š” ๊ธฐ๋Šฅ:

  1. ์ด๋ฉ”์ผ ์ˆ˜์ง‘:

    • Gmail API๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ๋ฐ›์€ ํŽธ์ง€ํ•จ์—์„œ ์ด๋ฉ”์ผ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
    • ๋ฐœ์‹ ์ž, ์ด๋ฉ”์ผ ์ฃผ์†Œ, ์ œ๋ชฉ ๋“ฑ์˜ ์ฃผ์š” ์ •๋ณด๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ:

    • "Sender"์™€ "Subject" ํ•„๋“œ์˜ ๊ฒฐ์ธก๊ฐ’์„ ๋นˆ ๋ฌธ์ž์—ด๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐœ์‹ ์ž์™€ ์ œ๋ชฉ์„ ๊ฒฐํ•ฉํ•ด ๋ชจ๋ธ ์ž…๋ ฅ์šฉ ํ…์ŠคํŠธ ํ•„๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ:

    • ํ…์ŠคํŠธ ๋ถ„๋ฅ˜์— ์ ํ•ฉํ•œ ๋‹คํ•ญ ๋‚˜์ด๋ธŒ ๋ฒ ์ด์ฆˆ(Multinomial Naive Bayes) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • TF-IDF ๋ฒกํ„ฐํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฉ”์ผ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํŠน์ง• ์ถ”์ถœํ•œ ํ›„ ๋ชจ๋ธ์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.
    • ์ŠคํŒธ๊ณผ ๋น„์ŠคํŒธ์— ๋Œ€ํ•ด ๋†’์€ ์ •๋ฐ€๋„์™€ ์žฌํ˜„์œจ์„ ์ œ๊ณตํ•˜๋ฉฐ ์•ฝ 95%์˜ ์ •ํ™•๋„๋ฅผ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  4. ์ž๋™ ๋ถ„๋ฅ˜ ๋ฐ ์•Œ๋ฆผ:

    • ํ•™์Šต๋œ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ ์ˆ˜์‹ ๋œ ์ด๋ฉ”์ผ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋ฉ”์ผ์ด ๋น„์ŠคํŒธ์œผ๋กœ ๋ถ„๋ฅ˜๋œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆผ์„ Gmail๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
    • ์ฒ˜๋ฆฌ๋œ ์ด๋ฉ”์ผ์€ ์ž๋™์œผ๋กœ "์ฝ์Œ"์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  5. ์Šค์ผ€์ค„๋ง์„ ํ†ตํ•œ ์ž๋™ํ™”:

    • schedule ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„๋ฅ˜ ์ฒดํฌ๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ(๋งค 1๋ถ„๋งˆ๋‹ค) ์‹คํ–‰ํ•˜์—ฌ ์ด๋ฉ”์ผ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ๊ตฌ์กฐ

  • email_snu.csv: Sender, Email, Subject, Label(์ŠคํŒธ/๋น„์ŠคํŒธ) ํ•„๋“œ๊ฐ€ ํฌํ•จ๋œ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ์…‹.
  • emailClassifierModel.joblib ๋ฐ tfidfVectorizer.joblib: ์ƒˆ๋กœ์šด ์ด๋ฉ”์ผ์„ ์žฌํ•™์Šต ์—†์ด ๋ถ„๋ฅ˜ํ•˜๊ธฐ ์œ„ํ•ด ์ €์žฅ๋œ ๋ชจ๋ธ๊ณผ ๋ฒกํ„ฐํ™”๊ธฐ.
  • credentials.json ๋ฐ token.json: Gmail API์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ธ์ฆ ํŒŒ์ผ.
  • ํŒŒ์ด์ฌ ์Šคํฌ๋ฆฝํŠธ:
    • loadData(): ๋ฐ์ดํ„ฐ์…‹์„ ๋กœ๋“œํ•˜๊ณ  ์ „์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • trainModel(): ๋‚˜์ด๋ธŒ ๋ฒ ์ด์ฆˆ ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๊ณ  ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    • gmailAuthenticate(): OAuth2๋กœ Gmail API ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • checkEmail(): ๋ฐ›์€ ํŽธ์ง€ํ•จ์—์„œ ์ƒˆ๋กœ์šด ์ด๋ฉ”์ผ์„ ํ™•์ธํ•˜๊ณ , ๋ถ„๋ฅ˜ ํ›„ ์•Œ๋ฆผ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
    • sendNotification(): ๋ถ„๋ฅ˜๋œ ์ด๋ฉ”์ผ์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆผ ์ด๋ฉ”์ผ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ๊ฐ€์ด๋“œ

์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ:

  • Python 3.x ๋ฐ ํ•„์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: pip install -r requirements.txt๋กœ ์„ค์น˜.
  • Gmail API ์ ‘๊ทผ: Gmail API ์ธ์ฆ ์„ค์ • ํ•„์š”.
  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •: EMAIL_PASSWORD์— Gmail ๊ณ„์ •์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •.

์ดˆ๊ธฐ ์„ค์ •:

  1. ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํด๋ก :

    git clone https://github.com/jihochang03/EmailSnuClassifier.git
    cd EmailSnuClassifier
  2. ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜:

    pip install -r requirements.txt
  3. Gmail API ์„ค์ •:

    • Google Cloud Console์—์„œ credentials.json ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
    • ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— credentials.json ํŒŒ์ผ์„ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  4. ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰:

    • ์ฒซ ์‹คํ–‰ ์‹œ ๋ชจ๋ธ ํŒŒ์ผ์ด ์—†๋Š” ๊ฒฝ์šฐ email_snu.csv๋กœ ๋ชจ๋ธ์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.
    • ์ดํ›„ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ƒˆ๋กœ์šด ์ด๋ฉ”์ผ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ถ„๋ฅ˜๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    python main.py

email_snu.csv ์˜ˆ์ œ ๋ฐ์ดํ„ฐ

๋ฐœ์‹ ์ž ์ด๋ฉ”์ผ ์ฃผ์†Œ ์ œ๋ชฉ ๋ผ๋ฒจ
๋ฏธ์ˆ ๊ด€ [email protected] [์„œ์šธ๋Œ€ํ•™๊ต๋ฏธ์ˆ ๊ด€] ๋””์ง€ํ„ธ์•„ํŠธ ์„ธ๋ฏธ๋‚˜ - ๊ณต์กด์„ ํ–ฅํ•œ ์—ฌ์ • ์ŠคํŒธ
SNU๊ณตํ•™์ปจ์„คํŒ…์„ผํ„ฐ [email protected] [SNU์•„์‚ฐ์œ ๋‹ˆ๋ฒ„์‹œํ‹ฐ]2024 ๊ธฐํ›„๊ธฐ์ˆ ์ฐฝ์—…ํ˜์‹ ๋Œ€์ „ ๊ฐœ์ตœ ์•ˆ๋‚ด_์นด๋“œ๋‰ด์Šค ์ŠคํŒธ
์ฐฝ์—…์ง€์›๋‹จ(ํ™๋ณด) [email protected] [๋ฒค์ฒ˜ํˆฌ์žํ•™ํšŒ SNAAC] ์Šคํƒ€ํŠธ์—…์˜ ์œ„๋Œ€ํ•œ ์—ฌ์ •์— ํ•ฉ๋ฅ˜ํ•˜์„ธ์š”. ์ŠคํŒธ
๋ฒ•์ด๋ก ์—ฐ๊ตฌ์„ผํ„ฐ [email protected] [ํ•™์ˆ ] ์ถค์˜ ์—ญ์‚ฌ์™€ ํ˜„์žฌ๋ฅผ ํ†ตํ•ด ์‚ดํ•€ ํ•ฉ๋ฒ•์„ฑ, ์ •๋‹น์„ฑ, ์ ‘๊ทผ์„ฑ ์ŠคํŒธ
์—๋„ˆ์ง€์‹ ์‚ฐ์—… ํ˜์‹ ์œตํ•ฉ๋Œ€ํ•™์‚ฌ์—…๋‹จ [email protected] [ํ–‰์‚ฌ] 'Energy Up! ์—๋„ˆ์ง€์‹ ์‚ฐ์—… ํ•ด์™ธ ์—ฐ์ˆ˜ ๋Œ€๋งŒ' ์ฐธ๊ฐ€์ž ๋ชจ์ง‘ ์ŠคํŒธ

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  1. ์‹ค์‹œ๊ฐ„ ์ด๋ฉ”์ผ ๋ชจ๋‹ˆํ„ฐ๋ง:

    • ์Šคํฌ๋ฆฝํŠธ๋Š” Gmail ๋ฐ›์€ ํŽธ์ง€ํ•จ์—์„œ ๋งค 1๋ถ„๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์ฝ์ง€ ์•Š์€ ์ด๋ฉ”์ผ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    • ํ•™์Šต๋œ ๋‚˜์ด๋ธŒ ๋ฒ ์ด์ฆˆ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด ๊ฐ ์ด๋ฉ”์ผ์„ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋ฉ”์ผ์„ ์ฝ์Œ์œผ๋กœ ํ‘œ์‹œํ•˜๋ฉฐ, ๋น„์ŠคํŒธ์œผ๋กœ ๋ถ„๋ฅ˜๋œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  2. ์•Œ๋ฆผ:

    • ๋น„์ŠคํŒธ ์ด๋ฉ”์ผ์€ ์ด๋ฉ”์ผ์˜ ์„ธ๋ถ€ ์ •๋ณด์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
    • Gmail์˜ SMTP ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์•Œ๋ฆผ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ธ ์„ฑ๋Šฅ

  • ์ •ํ™•๋„: ์•ฝ 95%

  • ๋ถ„๋ฅ˜ ๋ณด๊ณ ์„œ:

    ํด๋ž˜์Šค ์ •๋ฐ€๋„(Precision) ์žฌํ˜„์œจ(Recall) F1-์Šค์ฝ”์–ด(F1-score)
    ์ŠคํŒธ 0.96 0.93 0.94
    ๋น„์ŠคํŒธ 0.94 0.96 0.95
  • ํ˜ผ๋™ ํ–‰๋ ฌ:

    ์˜ˆ์ธก ์ŠคํŒธ ์˜ˆ์ธก ๋น„์ŠคํŒธ
    ์‹ค์ œ ์ŠคํŒธ 548 28
    ์‹ค์ œ ๋น„์ŠคํŒธ 18 82

ํ–ฅํ›„ ๊ฐœ์„  ์‚ฌํ•ญ

  1. ๊ณ ๊ธ‰ ๋ชจ๋ธ: SVM ๋˜๋Š” ์‹ ๊ฒฝ๋ง๊ณผ ๊ฐ™์€ ๋” ๊ณ ๊ธ‰ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด ์ •ํ™•๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ๋ผ๋ฒจ๋ง ๊ฐ•ํ™”: ์ŠคํŒธ ํƒ์ง€ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ๋ผ๋ฒจ๋ง๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‹ค์ค‘ ์‚ฌ์šฉ์ž ์ง€์›: ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ์ธํ™”๋œ ์ŠคํŒธ ๊ทœ์น™๊ณผ ์•Œ๋ฆผ ์„ค์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹œ์Šคํ…œ์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.


์ด ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์ด๋ฉ”์ผ์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ŠคํŒธ๊ณผ ์ค‘์š”ํ•œ ์ด๋ฉ”์ผ์„ ๋ถ„๋ฅ˜ํ•˜์—ฌ ์ƒ์‚ฐ์„ฑ๊ณผ ์ค‘์š”ํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.