kootaeng2 commited on
Commit
39c894a
ยท
1 Parent(s): bc92fbf

Fix: Relocate templates directory into src for Flask

Browse files
Files changed (1) hide show
  1. README.md +81 -76
README.md CHANGED
@@ -7,114 +7,119 @@ sdk: docker
7
  app_port: 7860
8
  pinned: false
9
  ---
10
- # ๐Ÿค– ์ผ๊ธฐ ๊ธฐ๋ฐ˜ ๊ฐ์ • ๋ถ„์„ ๋ฐ ์ฝ˜ํ…์ธ  ์ถ”์ฒœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
 
 
11
 
12
- > ์‚ฌ์šฉ์ž์˜ ์ผ๊ธฐ ํ…์ŠคํŠธ๋ฅผ AI๋กœ ๋ถ„์„ํ•˜์—ฌ ๊ฐ์ •์„ ํŒŒ์•…ํ•˜๊ณ , '๊ฐ์ • ์ˆ˜์šฉ' ๋˜๋Š” '๊ธฐ๋ถ„ ์ „ํ™˜'์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์„ ํƒ์ง€์— ๋”ฐ๋ผ ๋งž์ถคํ˜• ์ฝ˜ํ…์ธ (์˜ํ™”, ์Œ์•…, ์ฑ…)๋ฅผ ์ถ”์ฒœํ•ด์ฃผ๋Š” ์›น ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
13
 
14
  <br>
15
 
16
- ![Python](https://img.shields.io/badge/Python-3.10-3776AB?style=for-the-badge&logo=python)
17
- ![PyTorch](https://img.shields.io/badge/PyTorch-%23EE4C2C.svg?style=for-the-badge&logo=PyTorch&logoColor=white)
18
- ![Flask](https://img.shields.io/badge/Flask-000000?style=for-the-badge&logo=flask&logoColor=white)
19
- ![Hugging Face](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Transformers-yellow?style=for-the-badge)
20
 
21
  <br>
22
 
23
- ## โœจ ์ฃผ์š” ๊ธฐ๋Šฅ (Key Features)
24
-
25
- * **AI ๊ธฐ๋ฐ˜ ๊ฐ์ • ๋ถ„์„:** Hugging Face์˜ `klue/roberta-base` ๋ชจ๋ธ์„ AI Hub์˜ '๊ฐ์„ฑ๋Œ€ํ™” ๋ง๋ญ‰์น˜' ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ๋ฏธ์„ธ ์กฐ์ •(Fine-tuning)ํ•˜์—ฌ, ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ์— ๋Œ€ํ•œ ๋†’์€ ์ •ํ™•๋„์˜ ๊ฐ์ • ์˜ˆ์ธก์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
26
- * **์ƒํ™ฉ๋ณ„ ๋งž์ถค ์ถ”์ฒœ:** ๋ถ„์„๋œ ๊ฐ์ •์— ๋Œ€ํ•ด '๊ฐ์ •์„ ๊นŠ์ด ๋А๋ผ๊ณ  ์‹ถ์„ ๋•Œ(์ˆ˜์šฉ)'์™€ '๊ฐ์ •์—์„œ ๋ฒ—์–ด๋‚˜๊ณ  ์‹ถ์„ ๋•Œ(์ „ํ™˜)'๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์„ ํƒ์ง€๋ฅผ ์ œ๊ณตํ•˜์—ฌ, ์‚ฌ์šฉ์ž์˜ ํ˜„์žฌ ๋‹ˆ์ฆˆ์— ๋งž๋Š” ์ฐจ๋ณ„ํ™”๋œ ์ฝ˜ํ…์ธ ๋ฅผ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
27
- * **๋‹ค์ด์–ด๋ฆฌ ํžˆ์Šคํ† ๋ฆฌ:** ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ผ๊ธฐ์™€ AI์˜ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์›น ๋ธŒ๋ผ์šฐ์ €์˜ `localStorage`์— ์ €์žฅํ•˜์—ฌ, ์–ธ์ œ๋“  ๊ณผ๊ฑฐ์˜ ๊ธฐ๋ก์„ ๋‹ค์‹œ ํ™•์ธํ•˜๊ณ  ๊ฐ์ •์˜ ํ๋ฆ„์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
28
- * **์‚ฌ์šฉ์ž ์นœํ™”์  ์›น ์ธํ„ฐํŽ˜์ด์Šค:** Flask ๊ธฐ๋ฐ˜์˜ ์›น ์„œ๋ฒ„์™€ ๋™์ ์ธ JavaScript๋ฅผ ํ†ตํ•ด, ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ์ž์‹ ์˜ ๊ฐ์ •์„ ๊ธฐ๋กํ•˜๊ณ  ์ถ”์ฒœ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ง๊ด€์ ์ธ UI/UX๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
29
 
30
  <br>
31
 
32
- ## ๐Ÿ–ฅ๏ธ ํ”„๋กœ์ ํŠธ ๋ฐ๋ชจ (Demo)
 
33
 
34
- ์ž„์‹œ ํ™ˆํŽ˜์ด์ง€(https://kootaeng2.github.io/Emotion_Chatbot_project/templates/emotion_homepage.html)
35
 
36
- <br>
 
 
37
 
38
- ## โš™๏ธ ๊ธฐ์ˆ  ์Šคํƒ (Tech Stack)
39
 
40
- | ๊ตฌ๋ถ„ | ๊ธฐ์ˆ  |
41
- | :--- | :--- |
42
- | **Backend** | Flask |
43
- | **Frontend**| HTML, CSS, JavaScript |
44
- | **AI / Data**| Python 3.10, PyTorch, Hugging Face Transformers, Scikit-learn, Pandas |
45
- | **AI Model**| `klue/roberta-base` (Fine-tuned) |
 
46
 
 
47
  <br>
48
 
49
- ## ๐Ÿ“‚ ํด๋” ๊ตฌ์กฐ (Folder Structure)
50
-
51
- ```
52
- sentiment_analysis_project/
53
- โ”œโ”€โ”€ src/
54
- โ”‚ โ”œโ”€โ”€ app.py # ์›น ์„œ๋ฒ„ ์‹คํ–‰ ํŒŒ์ผ
55
- โ”‚ โ”œโ”€โ”€ chatbot.py # ํ„ฐ๋ฏธ๋„ ์ฑ—๋ด‡ ์‹คํ–‰ ํŒŒ์ผ
56
- โ”‚ โ”œโ”€โ”€ emotion_engine.py # ๊ฐ์ • ๋ถ„์„ ์—”์ง„ ๋ชจ๋“ˆ
57
- โ”‚ โ””โ”€โ”€ recommender.py # ์ถ”์ฒœ ๋กœ์ง ๋ชจ๋“ˆ
58
- โ”œโ”€โ”€ scripts/
59
- โ”‚ โ””โ”€โ”€ train_model.py # AI ๋ชจ๋ธ ํ›ˆ๋ จ ์Šคํฌ๋ฆฝํŠธ
60
- โ”œโ”€โ”€ notebooks/
61
- โ”‚ โ””โ”€โ”€ 1_explore_data.py # ๋ฐ์ดํ„ฐ ํƒ์ƒ‰ ๋ฐ ์‹œ๊ฐํ™”์šฉ ๋…ธํŠธ๋ถ
62
- โ”œโ”€โ”€ data/ # ์›๋ณธ ๋ฐ์ดํ„ฐ์…‹
63
- โ”œโ”€โ”€ results/ # ํ›ˆ๋ จ๋œ ๋ชจ๋ธ ํŒŒ์ผ (Git ๋ฏธํฌํ•จ)
64
- โ”œโ”€โ”€ templates/ # HTML ํŒŒ์ผ
65
- โ”œโ”€โ”€ static/ # CSS, ํด๋ผ์ด์–ธํŠธ JS ํŒŒ์ผ
66
- โ”œโ”€โ”€ .gitignore # Git ๋ฌด์‹œ ํŒŒ์ผ ๋ชฉ๋ก
67
- โ”œโ”€โ”€ README.md # ํ”„๋กœ์ ํŠธ ์„ค๋ช…์„œ
68
- โ””โ”€โ”€ requirements.txt # ํ•„์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชฉ๋ก
69
- ```
70
  <br>
71
 
72
- ## ๐Ÿš€ ์„ค์น˜ ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ• (Installation & Run)
 
 
 
 
 
 
 
73
 
74
- **1. ํ”„๋กœ์ ํŠธ ๋ณต์ œ (Clone)**
75
- ```bash
76
- git clone [https://github.com/kootaeng2/Emotion_Chatbot_project.git](https://github.com/kootaeng2/Emotion_Chatbot_project.git)
77
- cd Emotion_Chatbot_project
78
- ```
79
 
80
- **2. ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํ™œ์„ฑํ™” (Python 3.10 ๊ธฐ์ค€)**
81
- ```bash
82
- # Python 3.10 ๋ฒ„์ „์„ ์ง€์ •ํ•˜์—ฌ ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ
 
83
  py -3.10 -m venv venv
84
- # ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™”
85
  .\venv\Scripts\Activate
86
- ```
87
 
88
- **3. ํ•„์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜**
89
- ```bash
90
- # PyTorch (CUDA 11.8 ๋ฒ„์ „)๋ฅผ ๋จผ์ € ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
91
- pip install torch torchvision torchaudio --index-url [https://download.pytorch.org/whl/cu118](https://download.pytorch.org/whl/cu118)
92
- # ๋‚˜๋จธ์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
93
  pip install -r requirements.txt
94
- ```
 
 
 
95
 
96
- **4. AI ๋ชจ๋ธ ํ›ˆ๋ จ (์ตœ์ดˆ 1ํšŒ ํ•„์ˆ˜)**
97
- > **์ฃผ์˜:** ์ด ๊ณผ์ •์€ AI Hub์—์„œ '๊ฐ์„ฑ๋Œ€ํ™” ๋ง๋ญ‰์น˜' ์›๋ณธ ๋ฐ์ดํ„ฐ์…‹์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ `data` ํด๋”์— ์œ„์น˜์‹œํ‚จ ํ›„ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ›ˆ๋ จ์—๋Š” RTX 4060 GPU ๊ธฐ์ค€ ์•ฝ 30-40๋ถ„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.
 
98
 
99
- ```bash
100
- python train_model.py
101
- ```
102
 
103
- **5. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰**
104
- ```bash
105
- python app.py
106
- ```
107
- * ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋˜๋ฉด, ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์—ด๊ณ  ์ฃผ์†Œ์ฐฝ์— `http://127.0.0.1:5000` ์„ ์ž…๋ ฅํ•˜์„ธ์š”.
108
 
 
 
 
 
 
 
 
 
 
 
 
109
  <br>
110
 
111
- ## ๐Ÿ“Š ๋ชจ๋ธ ์„ฑ๋Šฅ (Model Performance)
 
 
 
 
 
 
 
 
 
 
 
112
 
113
- '๊ฐ์„ฑ๋Œ€ํ™” ๋ง๋ญ‰์น˜' ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ์…‹(Validation Set)์œผ๋กœ ํ‰๊ฐ€ํ•œ ์ตœ์ข… ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
114
 
115
- | ํ‰๊ฐ€์ง€ํ‘œ (Metric) | ์ ์ˆ˜ (Score) |
116
- | :--- | :---: |
117
- | **Accuracy** (์ •ํ™•๋„) | **85.3%** |
118
- | **F1-Score** (Weighted)| **0.852** |
119
 
 
120
 
 
 
7
  app_port: 7860
8
  pinned: false
9
  ---
10
+ ๐Ÿค– ์ผ๊ธฐ ๊ธฐ๋ฐ˜ ๊ฐ์ • ๋ถ„์„ ๋ฐ ์ฝ˜ํ…์ธ  ์ถ”์ฒœ ์›น
11
+ ํ•˜๋ฃจ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ ์“ฐ๋Š” ๋‹น์‹ ์˜ ์ผ๊ธฐ, ๊ทธ ์†์— ์ˆจ๊ฒจ์ง„ ์ง„์งœ ๊ฐ์ •์€ ๋ฌด์—‡์ผ๊นŒ์š”?
12
+ ์ด ํ”„๋กœ์ ํŠธ๋Š” AI๋ฅผ ํ†ตํ•ด ๋‹น์‹ ์˜ ๊ธ€์„ ์ดํ•ดํ•˜๊ณ , ๊ฐ์ •์— ๋ชฐ์ž…ํ•˜๊ฑฐ๋‚˜ ํ˜น์€ ์ƒˆ๋กœ์šด ํ™œ๋ ฅ์ด ํ•„์š”ํ•  ๋•Œ ๋งž์ถคํ˜• ์ฝ˜ํ…์ธ ๋ฅผ ์ถ”์ฒœํ•ด์ฃผ๋Š” ๋‹น์‹ ๋งŒ์˜ ๊ฐ์„ฑ ๋น„์„œ์ž…๋‹ˆ๋‹ค.
13
 
14
+ <br>
15
 
16
  <br>
17
 
18
+ ๐Ÿš€ ๋ผ์ด๋ธŒ ๋ฐ๋ชจ (Live Demo)
19
+ ๐Ÿ‘‰ https://huggingface.co/spaces/koons/emotion-chatbot
20
+ (์œ„ ์ฃผ์†Œ๋Š” ์ด์ „์— ํ™•์ธ๋œ Space ID ๊ธฐ์ค€์ด๋ฉฐ, ์‹ค์ œ ์ตœ์ข… ๋ฐฐํฌ๋œ ์ฃผ์†Œ๋กœ ์ˆ˜์ •ํ•ด์ฃผ์„ธ์š”.)
 
21
 
22
  <br>
23
 
24
+ [์—ฌ๊ธฐ์— ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹ค์ œ ์ž‘๋™ ์Šคํฌ๋ฆฐ์ƒท์ด๋‚˜ GIF๋ฅผ ์‚ฝ์ž…ํ•˜์„ธ์š”]
 
 
 
 
 
25
 
26
  <br>
27
 
28
+ โœจ ํ•ต์‹ฌ ๊ธฐ๋Šฅ
29
+ ๐Ÿค– ํ…์ŠคํŠธ ์† ๊ฐ์ • ํƒ์ƒ‰: klue/roberta-base ๋ชจ๋ธ์„ ํ•œ๊ตญ์–ด '๊ฐ์„ฑ๋Œ€ํ™” ๋ง๋ญ‰์น˜' ๋ฐ์ดํ„ฐ๋กœ ๋ฏธ์„ธ์กฐ์ •ํ•˜์—ฌ, ์ผ๊ธฐ ์†์— ๋‹ด๊ธด ๋ณตํ•ฉ์ ์ธ ๊ฐ์ •์„ 85% ์ด์ƒ์˜ ์ •ํ™•๋„๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.
30
 
31
+ ๐ŸŽญ ๊ฐ์„ฑ ๋งž์ถค ํ๋ ˆ์ด์…˜: ๋ถ„์„๋œ ๊ฐ์ •์„ ๋” ๊นŠ์ด ์Œ๋ฏธํ•˜๊ณ  ์‹ถ์„ ๋•Œ(์ˆ˜์šฉ)์™€ ์ƒˆ๋กœ์šด ๊ธฐ๋ถ„์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  ์‹ถ์„ ๋•Œ(์ „ํ™˜), ๋‘ ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋งž์ถฐ ์˜ํ™”, ์Œ์•…, ์ฑ…์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
32
 
33
+ ๐Ÿ“” ๋‚˜๋งŒ์˜ ๊ฐ์ • ๊ธฐ๋ก ๋ณด๊ด€: ์ž‘์„ฑํ–ˆ๋˜ ์ผ๊ธฐ์™€ AI์˜ ๊ฐ์ • ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ๋ธŒ๋ผ์šฐ์ €(localStorage)์— ์ €์žฅํ•˜์—ฌ, ๊ณผ๊ฑฐ์˜ ๊ฐ์ • ํ๋ฆ„์„ ์–ธ์ œ๋“ ์ง€ ๋‹ค์‹œ ๋Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
34
+
35
+ ๐Ÿ’ป ์ง๊ด€์ ์ธ ๋ฐ˜์‘ํ˜• UI: Flask์™€ JavaScript๋กœ ๊ตฌ์ถ•๋œ ๊ฐ„๊ฒฐํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜์—ฌ, ์–ด๋–ค ๊ธฐ๊ธฐ์—์„œ๋„ ํŽธ์•ˆํ•˜๊ฒŒ ๊ฐ์ •์„ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
36
 
37
+ <br>
38
 
39
+ โš™๏ธ ๊ธฐ์ˆ  ์Šคํƒ ๋ฐ ์•„ํ‚คํ…์ฒ˜
40
+ ๊ตฌ๋ถ„ ๊ธฐ์ˆ 
41
+ Backend Python 3.10, Flask, Gunicorn
42
+ Frontend HTML, CSS, JavaScript
43
+ AI / Data PyTorch, Hugging Face Transformers, Scikit-learn, Pandas
44
+ Deployment Docker, GitHub Actions, Hugging Face Spaces
45
+ Version Control Git, GitHub, Git LFS
46
 
47
+ Sheets๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ
48
  <br>
49
 
50
+ ๋ฐฐํฌ ์•„ํ‚คํ…์ฒ˜ (CI/CD Pipeline)
51
+ ์ด ํ”„๋กœ์ ํŠธ๋Š” GitHub Actions๋ฅผ ์ด์šฉํ•œ ์ž๋™ํ™”๋œ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.
52
+ Git Push (main ๋ธŒ๋žœ์น˜) โ†’ GitHub Actions (CI/CD ํŠธ๋ฆฌ๊ฑฐ) โ†’ Dockerfile ๋นŒ๋“œ โ†’ Hugging Face Spaces (์ž๋™ ๋ฐฐํฌ ๋ฐ ์„œ๋น™)
53
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  <br>
55
 
56
+ ๐Ÿ› ๏ธ ์‹œ์ž‘ํ•˜๊ธฐ: ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰
57
+ ์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ
58
+ Python 3.10
59
+
60
+ Git
61
+
62
+ 1. ํ”„๋กœ์ ํŠธ ๋ณต์ œ (Clone)
63
+ Bash
64
 
65
+ git clone https://github.com/kootaeng2/Emotion-Chatbot-App.git
66
+ cd Emotion-Chatbot-App
67
+ (์ €์žฅ์†Œ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๋ฉด, ์œ„ ์ฃผ์†Œ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“œ์‹  ์ฃผ์†Œ๋กœ ์ˆ˜์ •ํ•ด์ฃผ์„ธ์š”.)
 
 
68
 
69
+ 2. ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜
70
+ Bash
71
+
72
+ # Python 3.10 ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํ™œ์„ฑํ™”
73
  py -3.10 -m venv venv
 
74
  .\venv\Scripts\Activate
 
75
 
76
+ # PyTorch ๋ฐ ๊ธฐํƒ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜
77
+ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
 
 
 
78
  pip install -r requirements.txt
79
+ 3. AI ๋ชจ๋ธ ์ง์ ‘ ํ›ˆ๋ จํ•˜๊ธฐ (์ตœ์ดˆ 1ํšŒ ํ•„์ˆ˜)
80
+ โš ๏ธ ์ฃผ์˜: ์ด ํ”„๋กœ์ ํŠธ๋Š” ํ›ˆ๋ จ๋œ ๋ชจ๋ธ ํŒŒ์ผ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AI Hub '๊ฐ์„ฑ๋Œ€ํ™” ๋ง๋ญ‰์น˜' ๋ฐ์ดํ„ฐ์…‹์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ data/ ํด๋”์— ์œ„์น˜์‹œํ‚จ ํ›„, ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
81
+
82
+ Bash
83
 
84
+ python scripts/train_model.py
85
+ 4. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
86
+ Bash
87
 
88
+ python src/app.py
89
+ ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋˜๋ฉด, ์›น ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— http://127.0.0.1:5000 ์„ ์ž…๋ ฅํ•˜์—ฌ ์ ‘์†ํ•˜์„ธ์š”.
 
90
 
91
+ <br>
 
 
 
 
92
 
93
+ ๐Ÿ“‚ ์ตœ์ข… ํด๋” ๊ตฌ์กฐ
94
+ ํ”„๋กœ์ ํŠธ์˜ ๊ฐ€๋…์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ์œ„ํ•ด Flask ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ‘œ์ค€ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
95
+
96
+ Emotion-Chatbot-App/
97
+ โ””โ”€โ”€ src/
98
+ โ”œโ”€โ”€ app.py # Flask ์›น ์„œ๋ฒ„ ์‹คํ–‰ ํŒŒ์ผ
99
+ โ”œโ”€โ”€ emotion_engine.py # ๊ฐ์ • ๋ถ„์„ ์—”์ง„ ๋ชจ๋“ˆ
100
+ โ”œโ”€โ”€ recommender.py # ์ถ”์ฒœ ๋กœ์ง ๋ชจ๋“ˆ
101
+ โ”œโ”€โ”€ static/ # CSS, ํด๋ผ์ด์–ธํŠธ JS ํŒŒ์ผ
102
+ โ””โ”€โ”€ templates/ # HTML ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ
103
+ ... (๊ธฐํƒ€ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ๋ฐ ํด๋”) ...
104
  <br>
105
 
106
+ ๐Ÿง—โ€โ™‚๏ธ ์ฃผ์š” ๊ฐœ๋ฐœ ๋„์ „ ๊ณผ์ œ ๋ฐ ํ•ด๊ฒฐ ๊ณผ์ •
107
+ ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹จ์ˆœ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ๋„˜์–ด, ์‹ค์ œ ์„œ๋น„์Šค ๋ฐฐํฌ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ณต์žกํ•œ ๋ฌธ์ œ๋“ค์„ ์ฒด๊ณ„์ ์œผ๋กœ ํ•ด๊ฒฐํ•œ ๊ฒฝํ—˜์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
108
+
109
+ Git LFS ๋ฐ ํžˆ์Šคํ† ๋ฆฌ ๋ฌธ์ œ ํ•ด๊ฒฐ:
110
+
111
+ ๋ฌธ์ œ: 1GB๊ฐ€ ๋„˜๋Š” AI ๋ชจ๋ธ ํŒŒ์ผ๋กœ ์ธํ•ด git push ์‹œ ํƒ€์ž„์•„์›ƒ ๋ฐ ์šฉ๋Ÿ‰ ์ œํ•œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ.
112
+
113
+ ํ•ด๊ฒฐ: Git LFS๋ฅผ ๋„์ž…ํ•˜๊ณ , ๊ณผ๊ฑฐ ํžˆ์Šคํ† ๋ฆฌ์— ๋‚จ์€ ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์˜ ํ”์ ์„ git filter-repo ๋ช…๋ น์–ด๋กœ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜์—ฌ ์ €์žฅ์†Œ๋ฅผ ๋ฐฐํฌ์— ์ตœ์ ํ™”. ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์ž ์ €์žฅ์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ณผ๊ฐํ•œ ๊ฒฐ์ •์„ ํ†ตํ•ด ๊ทผ๋ณธ ์›์ธ์„ ํ•ด๊ฒฐ.
114
+
115
+ Hugging Face ๋ฐฐํฌ ์ž๋™ํ™” (CI/CD):
116
+
117
+ ๋ฌธ์ œ: ์ˆ˜๋™ ๋ฐฐํฌ์˜ ๋น„ํšจ์œจ์„ฑ์„ ๊ฐœ์„ ํ•˜๊ณ , GitHub์™€ ๋ฐฐํฌ ์„œ๋ฒ„ ๊ฐ„์˜ ์ธ์ฆ ๋ฐ ๋™๊ธฐํ™” ์˜ค๋ฅ˜ ๋ฐœ์ƒ.
118
 
119
+ ํ•ด๊ฒฐ: Dockerfile๋กœ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ํ‘œ์ค€ํ™”ํ•˜๊ณ , GitHub Actions ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ main ๋ธŒ๋žœ์น˜์— push ํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ Hugging Face Spaces์— ๋ฐฐํฌ๋˜๋„๋ก CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ์™„์„ฑ.
120
 
121
+ Flask ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ ๋ฌธ์ œ:
 
 
 
122
 
123
+ ๋ฌธ์ œ: ๋กœ์ปฌ์—์„œ๋Š” ์ •์ƒ ์ž‘๋™ํ•˜๋˜ ์•ฑ์ด, Docker ๋ฐ Gunicorn ํ™˜๊ฒฝ์˜ ์„œ๋ฒ„์— ๋ฐฐํฌ๋˜์ž ModuleNotFoundError, TemplateNotFound ๋“ฑ ๊ฒฝ๋กœ ๊ด€๋ จ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜ ๋ฐœ์ƒ.
124
 
125
+ ํ•ด๊ฒฐ: gunicorn์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๊ณ , Python์˜ **์ƒ๋Œ€ ๊ฒฝ๋กœ ์ž„ํฌํŠธ(relative import)**๋ฅผ ์ ์šฉํ•˜์—ฌ ๋ชจ๋“ˆ ๏ฟฝ๏ฟฝ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ. ๋˜ํ•œ Flask์˜ ๊ธฐ๋ณธ ๊ทœ์น™์— ๋งž๊ฒŒ templates ๋ฐ static ํด๋”๋ฅผ app.py๊ฐ€ ์žˆ๋Š” src ํด๋” ๋‚ด๋ถ€๋กœ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์ข… ํ•ด๊ฒฐ.