์ด ํ๋ก์ ํธ๋ ๋จธ์ ๋ฌ๋ ๊ธฐ์ ๊ณผ Gmail API๋ฅผ ํ์ฉํ์ฌ ์ด๋ฉ์ผ์ "์คํธ"๊ณผ "๋น์คํธ"์ผ๋ก ์๋ ๋ถ๋ฅํ๋ ์์คํ ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋๋ค. ์์คํ ์ ์์ ๋๋ ์ด๋ฉ์ผ์ ์ค์๊ฐ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ , ๋ฐ์ ์์ ์ ๋ชฉ์ ๊ธฐ๋ฐ์ผ๋ก ๋ถ๋ฅํ ํ ์ค์ํ ์ด๋ฉ์ผ์ ๋ํ ์๋ฆผ์ ์ ์กํ์ฌ ์คํธ์ ํํฐ๋งํฉ๋๋ค. ์ด ํ๋ก์ ํธ๋ ์๋ ์ด๋ฉ์ผ ์ ๋ ฌ ์์ ์ ์ค์ด๊ณ ์์ฐ์ฑ์ ๋์ด๋ฉฐ, ๋๋์ ์ด๋ฉ์ผ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ๊ฐ๋ฐ๋์์ต๋๋ค.
-
์ด๋ฉ์ผ ์์ง:
- Gmail API๋ฅผ ํตํด ์ฌ์ฉ์์ ๋ฐ์ ํธ์งํจ์์ ์ด๋ฉ์ผ์ ๊ฐ์ ธ์ต๋๋ค.
- ๋ฐ์ ์, ์ด๋ฉ์ผ ์ฃผ์, ์ ๋ชฉ ๋ฑ์ ์ฃผ์ ์ ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค.
-
๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ:
- "Sender"์ "Subject" ํ๋์ ๊ฒฐ์ธก๊ฐ์ ๋น ๋ฌธ์์ด๋ก ๋์ฒดํ์ฌ ์ฒ๋ฆฌํฉ๋๋ค.
- ๋ฐ์ ์์ ์ ๋ชฉ์ ๊ฒฐํฉํด ๋ชจ๋ธ ์ ๋ ฅ์ฉ ํ ์คํธ ํ๋๋ฅผ ์์ฑํฉ๋๋ค.
-
๋จธ์ ๋ฌ๋ ๋ชจ๋ธ:
- ํ ์คํธ ๋ถ๋ฅ์ ์ ํฉํ ๋คํญ ๋์ด๋ธ ๋ฒ ์ด์ฆ(Multinomial Naive Bayes) ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค.
- TF-IDF ๋ฒกํฐํ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฉ์ผ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํน์ง ์ถ์ถํ ํ ๋ชจ๋ธ์ ํ์ตํฉ๋๋ค.
- ์คํธ๊ณผ ๋น์คํธ์ ๋ํด ๋์ ์ ๋ฐ๋์ ์ฌํ์จ์ ์ ๊ณตํ๋ฉฐ ์ฝ 95%์ ์ ํ๋๋ฅผ ๋ฌ์ฑํฉ๋๋ค.
-
์๋ ๋ถ๋ฅ ๋ฐ ์๋ฆผ:
- ํ์ต๋ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์๋ก ์์ ๋ ์ด๋ฉ์ผ์ ์ค์๊ฐ์ผ๋ก ๋ถ๋ฅํฉ๋๋ค.
- ์ด๋ฉ์ผ์ด ๋น์คํธ์ผ๋ก ๋ถ๋ฅ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์์๊ฒ ์๋ฆผ์ Gmail๋ก ์ ์กํฉ๋๋ค.
- ์ฒ๋ฆฌ๋ ์ด๋ฉ์ผ์ ์๋์ผ๋ก "์ฝ์"์ผ๋ก ํ์๋ฉ๋๋ค.
-
์ค์ผ์ค๋ง์ ํตํ ์๋ํ:
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 ๊ณ์ ์ ๋น๋ฐ๋ฒํธ ์ค์ .
-
๋ ํฌ์งํ ๋ฆฌ ํด๋ก :
git clone https://github.com/jihochang03/EmailSnuClassifier.git cd EmailSnuClassifier -
ํ์ํ ํจํค์ง ์ค์น:
pip install -r requirements.txt
-
Gmail API ์ค์ :
- Google Cloud Console์์
credentials.jsonํ์ผ์ ๊ฐ์ ธ์ต๋๋ค. - ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์
credentials.jsonํ์ผ์ ๋ฐฐ์นํฉ๋๋ค.
- Google Cloud Console์์
-
์คํฌ๋ฆฝํธ ์คํ:
- ์ฒซ ์คํ ์ ๋ชจ๋ธ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ
email_snu.csv๋ก ๋ชจ๋ธ์ ํ์ตํฉ๋๋ค. - ์ดํ ์คํฌ๋ฆฝํธ๊ฐ ์๋ก์ด ์ด๋ฉ์ผ์ ๋ชจ๋ํฐ๋งํ๊ณ ๋ถ๋ฅ๋ฅผ ์ํํฉ๋๋ค.
python main.py
- ์ฒซ ์คํ ์ ๋ชจ๋ธ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ
| ๋ฐ์ ์ | ์ด๋ฉ์ผ ์ฃผ์ | ์ ๋ชฉ | ๋ผ๋ฒจ |
|---|---|---|---|
| ๋ฏธ์ ๊ด | [email protected] | [์์ธ๋ํ๊ต๋ฏธ์ ๊ด] ๋์งํธ์ํธ ์ธ๋ฏธ๋ - ๊ณต์กด์ ํฅํ ์ฌ์ | ์คํธ |
| SNU๊ณตํ์ปจ์คํ ์ผํฐ | [email protected] | [SNU์์ฐ์ ๋๋ฒ์ํฐ]2024 ๊ธฐํ๊ธฐ์ ์ฐฝ์ ํ์ ๋์ ๊ฐ์ต ์๋ด_์นด๋๋ด์ค | ์คํธ |
| ์ฐฝ์ ์ง์๋จ(ํ๋ณด) | [email protected] | [๋ฒค์ฒํฌ์ํํ SNAAC] ์คํํธ์ ์ ์๋ํ ์ฌ์ ์ ํฉ๋ฅํ์ธ์. | ์คํธ |
| ๋ฒ์ด๋ก ์ฐ๊ตฌ์ผํฐ | [email protected] | [ํ์ ] ์ถค์ ์ญ์ฌ์ ํ์ฌ๋ฅผ ํตํด ์ดํ ํฉ๋ฒ์ฑ, ์ ๋น์ฑ, ์ ๊ทผ์ฑ | ์คํธ |
| ์๋์ง์ ์ฐ์ ํ์ ์ตํฉ๋ํ์ฌ์ ๋จ | [email protected] | [ํ์ฌ] 'Energy Up! ์๋์ง์ ์ฐ์ ํด์ธ ์ฐ์ ๋๋ง' ์ฐธ๊ฐ์ ๋ชจ์ง | ์คํธ |
-
์ค์๊ฐ ์ด๋ฉ์ผ ๋ชจ๋ํฐ๋ง:
- ์คํฌ๋ฆฝํธ๋ Gmail ๋ฐ์ ํธ์งํจ์์ ๋งค 1๋ถ๋ง๋ค ์๋ก์ด ์ฝ์ง ์์ ์ด๋ฉ์ผ์ ํ์ธํฉ๋๋ค.
- ํ์ต๋ ๋์ด๋ธ ๋ฒ ์ด์ฆ ๋ชจ๋ธ์ ์ฌ์ฉํด ๊ฐ ์ด๋ฉ์ผ์ ๋ถ๋ฅํฉ๋๋ค.
- ์ด๋ฉ์ผ์ ์ฝ์์ผ๋ก ํ์ํ๋ฉฐ, ๋น์คํธ์ผ๋ก ๋ถ๋ฅ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์์๊ฒ ์๋ฆผ์ ๋ณด๋ ๋๋ค.
-
์๋ฆผ:
- ๋น์คํธ ์ด๋ฉ์ผ์ ์ด๋ฉ์ผ์ ์ธ๋ถ ์ ๋ณด์ ํจ๊ป ์ฌ์ฉ์์๊ฒ ์๋ฆผ์ ๋ณด๋ ๋๋ค.
- Gmail์ SMTP ์๋ฒ๋ฅผ ํตํด ์๋ฆผ์ ์ ์กํฉ๋๋ค.
-
์ ํ๋: ์ฝ 95%
-
๋ถ๋ฅ ๋ณด๊ณ ์:
ํด๋์ค ์ ๋ฐ๋(Precision) ์ฌํ์จ(Recall) F1-์ค์ฝ์ด(F1-score) ์คํธ 0.96 0.93 0.94 ๋น์คํธ 0.94 0.96 0.95 -
ํผ๋ ํ๋ ฌ:
์์ธก ์คํธ ์์ธก ๋น์คํธ ์ค์ ์คํธ 548 28 ์ค์ ๋น์คํธ 18 82
- ๊ณ ๊ธ ๋ชจ๋ธ: SVM ๋๋ ์ ๊ฒฝ๋ง๊ณผ ๊ฐ์ ๋ ๊ณ ๊ธ ๋ชจ๋ธ์ ์ฌ์ฉํด ์ ํ๋๋ฅผ ํฅ์์ํค๋ ๊ฒ์ ๊ณ ๋ คํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ผ๋ฒจ๋ง ๊ฐํ: ์คํธ ํ์ง ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ ๋ง์ ๋ผ๋ฒจ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์์งํฉ๋๋ค.
- ๋ค์ค ์ฌ์ฉ์ ์ง์: ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๊ฐ์ธํ๋ ์คํธ ๊ท์น๊ณผ ์๋ฆผ ์ค์ ์ ์ฌ์ฉํ ์ ์๋๋ก ์์คํ ์ ํ์ฅํฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค.
์ด ์์คํ ์ ํตํด ์ฌ์ฉ์๋ ์ด๋ฉ์ผ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ, ์คํธ๊ณผ ์ค์ํ ์ด๋ฉ์ผ์ ๋ถ๋ฅํ์ฌ ์์ฐ์ฑ๊ณผ ์ค์ํ ์ปค๋ฎค๋์ผ์ด์ ์ ์ง์คํ ์ ์์ต๋๋ค.