/MoodTracker

2022 NLP Term Project

Primary LanguageJupyter NotebookGNU Lesser General Public License v2.1LGPL-2.1

MoodTracker 😭

Introduction

졜근 μ½”λ‘œλ‚˜λ‘œ μΈν•˜μ—¬ λΉ„λŒ€λ©΄ ν™œλ™μ΄ μ¦κ°€ν•˜λ©΄μ„œ 1인 κ°€κ΅¬μ˜ μ‚¬νšŒμ  고립이 μ‹¬ν™”λ˜κ³  μžˆλ‹€κ³  ν•©λ‹ˆλ‹€. λ˜ν•œ 이둜 인해 μ™Έλ‘œμ›€, 고립감, 우울감과 슀트레슀 λ“±μ˜ μˆ˜μΉ˜κ°€ 맀우 λ†’μ•„μ‘Œλ‹€κ³  ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 증상을 'μ½”λ‘œλ‚˜ 우울증' ν˜Ήμ€ 'μ½”λ‘œλ‚˜ 블루'라고 ν‘œν˜„ν•˜λŠ”λ° 이λ₯Ό μΉ˜λ£Œν•˜κΈ° μœ„ν•œ 방법 쀑 ν•˜λ‚˜κ°€ 일기λ₯Ό μž‘μ„±ν•˜λŠ” 것이라고 ν•©λ‹ˆλ‹€. λ”°λΌμ„œ 이번 ν”„λ‘œμ νŠΈμ—μ„œλŠ” 일기λ₯Ό μž‘μ„±ν•˜κ²Œ 되면 μž‘μ„±μžμ˜ 감성을 λΆ„μ„ν•˜μ—¬ μ•Œλ €μ€„ 수 μžˆλŠ” λͺ¨λΈμ„ μ œμž‘ν•˜κ³  이λ₯Ό 톡해 μžμ‹ λ„ μ•Œ 지 λͺ»ν–ˆλ˜ μžμ‹ μ˜ 감정에 λŒ€ν•΄ 이해할 수 μžˆλ„λ‘ λ•κ³ μž ν•©λ‹ˆλ‹€.

Data

https://aihub.or.kr/aidata/7978

λ°μ΄ν„°λŠ” 'AIhub'μ—μ„œ μ œκ³΅ν•˜λŠ” '감성 λŒ€ν™” λ§λ­‰μΉ˜ μ†Œκ°œ' 데이터λ₯Ό μ‚¬μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

Method

λͺ¨λΈμ€ λ§ˆμ§€λ§‰ μ‹œκ°„μ— λ°°μ› λ˜ Transformer의 μΈμ½”λ”λ§Œμ„ μ‚¬μš©ν•˜λŠ” BERT 기반의 λͺ¨λΈμ„ μ‚¬μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€. ν˜„μž¬ BERT 기반의 λ‹€μ–‘ν•œ λͺ¨λΈλ“€μ΄ μ‘΄μž¬ν•˜λŠ”λ°, 이번 ν”„λ‘œμ νŠΈμ—μ„œλŠ” SK T-Brainμ—μ„œ λ§Œλ“  KoBERTλ₯Ό fine-tuningν•˜μ—¬ μ‚¬μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

SK T-Brain https://github.com/SKTBrain/KoBERT
monologg https://github.com/monologg/KoBERT-Transformers

μ•Œκ³ λ¦¬μ¦˜μ€ μ•„λž˜μ˜ 링크와 μ˜μƒμ„ 보고 κ³΅λΆ€ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

λ”₯ λŸ¬λ‹μ„ μ΄μš©ν•œ μžμ—°μ–΄ 처리 μž…λ¬Έ
02) λ²„νŠΈ(Bidirectional Encoder Representations from Transformers, BERT)
https://wikidocs.net/115055

κ³ λ €λŒ€ν•™κ΅ μ‚°μ—…κ²½μ˜κ³΅ν•™λΆ€ DSBA 연ꡬ싀
08-5: BERT
https://www.youtube.com/watch?v=IwtexRHoWG0

Process

tool은 jupyter notebook을 μ‚¬μš©ν•˜μ˜€κ³ , 각 과정을 ν•˜λ‚˜μ˜ .ipynb 파일둜 μ§„ν–‰ν•˜μ˜€μŠ΅λ‹ˆλ‹€. fine-tuning 과정은 KoBERT κΉƒν—ˆλΈŒλ₯Ό μ°Έκ³ ν•˜μ˜€κ³  BERTλ₯Ό 직접 μ‚¬μš©ν•΄λ³Έλ‹€λŠ” 것에 의의λ₯Ό 두고 μ§„ν–‰ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

Ver. 1

μ²˜μŒμ—λŠ” 원본 λ°μ΄ν„°μ—μ„œ κ°„λ‹¨ν•˜κ²Œ ν•„μš”ν•œ μƒνƒœλ‘œ λ³€ν™˜ν•˜κ³  κ·ΈλŒ€λ‘œ 감정을 μ†ŒλΆ„λ₯˜ κΈ°μ€€μœΌλ‘œ 총 58개의 class둜 λΆ„λ₯˜ν•˜λŠ” λͺ¨λΈμ„ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.
이 λ•Œ, test κΈ°μ€€μœΌλ‘œ 정확도 50% μ •λ„μ˜ μ„±λŠ₯을 λ³΄μ—¬μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.

ver_1_accuracy

Ver. 2

μ„±λŠ₯이 쑰금 λΆ€μ‘±ν•˜λ‹€κ³  νŒλ‹¨ν•˜μ˜€κ³  Confusion Matirxλ₯Ό 기반으둜 잘λͺ» λΆ„λ₯˜ν•œ λ¬Έμž₯듀을 ν™•μΈν•˜μ˜€μŠ΅λ‹ˆλ‹€.

경계가 애맀

λ‹€μŒκ³Ό 같이 μ‚¬λžŒμ΄ λΆ„λ₯˜λ₯Ό ν•˜λ”λΌλ„ μ–΄λ €μšΈ 수 μžˆλŠ” 뢀뢄이라고 νŒλ‹¨ν•˜μ˜€κΈ° λ•Œλ¬Έμ— 이것듀을 λ³‘ν•©ν•˜μ—¬ class의 수λ₯Ό 47개둜 쀄인 후에 μ§„ν–‰ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
이 λ•Œ, test κΈ°μ€€μœΌλ‘œ 정확도 55% μ •λ„μ˜ μ„±λŠ₯을 λ³΄μ—¬μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.

Ver. 3

55%μ—μ„œ 정확도λ₯Ό 더 높이기 μœ„ν•΄ λŒ€λΆ„λ₯˜λ‘œ 1μ°¨ λΆ„λ₯˜λ₯Ό ν•˜κ³ , 이후에 μ†ŒλΆ„λ₯˜λ₯Ό μ‹œλ„ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 즉 λŒ€λΆ„λ₯˜ λͺ¨λΈ 1개, μ†ŒλΆ„λ₯˜ λͺ¨λΈ 6개λ₯Ό ν•™μŠ΅ν•˜μ˜€μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ λŒ€λΆ„λ₯˜ 70%, μ†ŒλΆ„λ₯˜μ—μ„œ 70~80% μ •λ„μ˜ μ„±λŠ₯을 λ³΄μ—¬μ£Όμ—ˆκΈ° λ•Œλ¬Έμ— Ver. 2보닀 μ„±λŠ₯이 μ’‹μ•„μ‘Œλ‹€κ³  νŒλ‹¨ν•˜κΈ°μ—λŠ” 어렀움이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 였히렀 Ver. 2와 μ„±λŠ₯이 μœ μ‚¬ν•˜κ²Œ λ‚˜μ™”κΈ° λ•Œλ¬Έμ— 감정을 labeling ν•˜λŠ” κ³Όμ •μ—μ„œ μ™„λ²½ν•˜κ²Œ 감정이 ν•˜λ‚˜μ— μ†ν•˜κΈ° μ• λ§€ν•˜κΈ° λ•Œλ¬Έμ— λ°œμƒν•˜λŠ” 결과라고 νŒλ‹¨ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

λŒ€λΆ„λ₯˜ μ„±λŠ₯
λŒ€λΆ„λ₯˜ μ„±λŠ₯

μ†ŒλΆ„λ₯˜(기쁨) μ„±λŠ₯
μ†ŒλΆ„λ₯˜ μ„±λŠ₯

Result

image

직접 λ§Œλ“  λΆ„λ₯˜κΈ°λ‘œ ν…ŒμŠ€νŠΈ ν•΄ λ³Έ κ²°κ³Όμž…λ‹ˆλ‹€. 생각보닀 속도도 λΉ λ₯΄κ³  μ„±λŠ₯도 μ’‹λ‹€λŠ” 생각이 λ“€μ—ˆμŠ΅λ‹ˆλ‹€.

Conclusion

μ„±λŠ₯이 55%이기 λ•Œλ¬Έμ— μ–΄λ–»κ²Œ 보면 높은 μ„±λŠ₯이 μ•„λ‹ˆλΌκ³  νŒλ‹¨ν•  수 μžˆμ§€λ§Œ, classκ°€ 47κ°œμ˜€κΈ° λ•Œλ¬Έμ— μ‚¬λžŒμ΄ λΆ„λ₯˜ν•˜λ”라도 μ• λ§€ν•œ κ²½μš°κ°€ λ§Žμ•˜μŠ΅λ‹ˆλ‹€. 즉, μ™„μ „ν•˜κ²Œ λ‹€λ₯Έ 클래슀둜 잘λͺ» λΆ„λ₯˜ν•˜μ˜€λ‹€κΈ° λ³΄λ‹€λŠ” μ• μ΄ˆμ— label이 쑰금 경계가 λͺ¨ν˜Έν•˜λ‹€λŠ” 생각을 ν•˜μ˜€μŠ΅λ‹ˆλ‹€. BERT λͺ¨λΈμ˜ μ„±λŠ₯이 정말 μš°μˆ˜ν•˜λ‹€λŠ” 생각과 ν•¨κ»˜ μ‚¬μš©ν•˜κΈ°μ—λ„ νŽΈλ¦¬ν•˜λ‹€κ³  μƒκ°ν•˜μ˜€μŠ΅λ‹ˆλ‹€.