Spaces:
Running
Running
File size: 6,375 Bytes
e221c83 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
---
title: Emotion Chatbot
emoji: π€
colorFrom: indigo
colorTo: blue
sdk: docker
app_port: 7860
app_file: run.py
pinned: false
---
# Emotion Diary π€
**ν루λ₯Ό λ§λ¬΄λ¦¬νλ©° μ°λ λΉμ μ μΌκΈ°, κ·Έ μμ μ¨κ²¨μ§ μ§μ§ κ°μ μ 무μμΌκΉμ?**
μ΄ νλ‘μ νΈλ AIλ₯Ό ν΅ν΄ λΉμ μ κΈμ μ΄ν΄νκ³ , κ°μ μ λͺ°μ
νκ±°λ νΉμ μλ‘μ΄ νλ ₯μ΄ νμν λ λ§μΆ€ν μ½ν
μΈ λ₯Ό μΆμ²ν΄μ£Όλ λΉμ λ§μ κ°μ± λΉμμ
λλ€.
---
### β¨ Live Demo
π **[https://huggingface.co/spaces/taehoon222/emotion-chatbot-app](https://huggingface.co/spaces/taehoon222/emotion-chatbot-app)**
---
### πΈ Screenshots
*(μ€ν¬λ¦°μ·μ μ¬κΈ°μ μΆκ°νμΈμ. μ: λ©μΈ νμ΄μ§, μΌκΈ° μμ±, κ²°κ³Ό νλ©΄)*


---
## π ν΅μ¬ κΈ°λ₯
- **π€ ν
μ€νΈ μ κ°μ νμ**: `klue/roberta-base` λͺ¨λΈμ κΈ°λ°μΌλ‘, μΌκΈ° μμ λ΄κΈ΄ 볡ν©μ μΈ κ°μ μ 80% μ΄μμ μ νλλ‘ λΆμν©λλ€.
- **π κ°μ± λ§μΆ€ νλ μ΄μ
**: λΆμλ κ°μ μ λ°λΌ 'μμ©'κ³Ό 'μ ν' λ κ°μ§ μλ리μ€μ λ§μΆ° μν, μμ
, μ±
μ μΆμ²ν©λλ€.
- **π λλ§μ κ°μ κΈ°λ‘**: μμ±νλ μΌκΈ°μ AIμ κ°μ λΆμ κ²°κ³Όλ₯Ό λ¬λ ₯ ννλ‘ νμΈνκ³ , κ³Όκ±°μ κ°μ νλ¦μ μΈμ λ μ§ λ€μ λμλ³Ό μ μμ΅λλ€.
- **π¨ 컀μ€ν
ν
λ§**: λ€μν μμκ³Ό λ°°κ²½ μ΄λ―Έμ§λ‘ μ±μ λΆμκΈ°λ₯Ό μ·¨ν₯μ λ§κ² λ³κ²½ν μ μμ΅λλ€.
- **π» μ§κ΄μ μΈ λ°μν UI**: Flaskμ JavaScriptλ‘ κ΅¬μΆλ κ°κ²°νκ³ μ¬μ©νκΈ° μ¬μ΄ μΈν°νμ΄μ€λ₯Ό μ 곡ν©λλ€.
---
## π οΈ κΈ°μ μ€ν
| κ΅¬λΆ | κΈ°μ |
| :--- | :--- |
| **Backend** | Python, Flask, Gunicorn, SQLAlchemy |
| **Frontend**| HTML, CSS, JavaScript |
| **AI / Data**| PyTorch, Hugging Face Transformers, Scikit-learn, Pandas |
| **Database**| Supabase (PostgreSQL) |
| **Deployment**| Docker, GitHub Actions (CI/CD), Hugging Face Spaces |
| **Version Control**| Git, GitHub, Git LFS |
---
## ποΈ μν€ν
μ²
κ°λ²Όμ΄ μ± μ½λμ λ¬΄κ±°μ΄ AI λͺ¨λΈμ λΆλ¦¬νμ¬ ν¨μ¨μ μΈ CI/CD νμ΄νλΌμΈμ ꡬμΆνμ΅λλ€.
```
[Local PC] --(git push)--> [GitHub] --(Action)--> [Hugging Face Spaces]
|
| (App Start)
V
[Hugging Face Hub] <--(Download Model)-- [Spaces Server]
```
---
## π μμνκΈ°
### μ¬μ μꡬμ¬ν
- Python 3.10
- Anaconda (κΆμ₯)
### μ€μΉ λ° μ€ν
1. **νλ‘μ νΈ λ³΅μ **
```bash
git clone https://github.com/kootaeng2/Emotion-Chatbot-App.git
cd Emotion-Chatbot-App
```
2. **κ°μνκ²½ μμ± λ° νμ±ν (Anaconda μ¬μ©)**
```bash
conda create -n emotion_env python=3.10
conda activate emotion_env
```
3. **νμ λΌμ΄λΈλ¬λ¦¬ μ€μΉ**
```bash
pip install -r requirements.txt
```
4. **νκ²½ λ³μ μ€μ **
`.env` νμΌμ μμ±νκ³ μλ λ΄μ©μ μΆκ°νμΈμ. Gemini APIλ₯Ό ν΅ν μΆμ² κΈ°λ₯μ νμν©λλ€.
```
GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
```
5. **μΉ μ ν리μΌμ΄μ
μ€ν**
```bash
python run.py
```
6. **μλ² μ μ**
μΉ λΈλΌμ°μ μμ `http://127.0.0.1:5000` μ£Όμλ‘ μ μνμΈμ.
---
## π νλ‘μ νΈ κ΅¬μ‘°
```
Emotion/
β
βββ .github/ # GitHub Actions μν¬νλ‘μ° (CI/CD)
βββ data/ # AI λͺ¨λΈ νμ΅μ© λ°μ΄ν°
βββ notebooks/ # λ°μ΄ν° νμ λ° μ μ²λ¦¬μ© Jupyter Notebook
βββ results/ # λͺ¨λΈ νμ΅ κ²°κ³Ό
βββ scripts/ # λͺ¨λΈ νλ ¨, νκ°μ© μ€ν¬λ¦½νΈ
βββ src/ # ν΅μ¬ μ ν리μΌμ΄μ
μμ€ μ½λ
β βββ templates/ # HTML ν
νλ¦Ώ
β βββ static/ # CSS, JS νμΌ
β βββ __init__.py # Flask μ± μ΄κΈ°ν (Application Factory)
β βββ auth.py # μΈμ¦ κ΄λ ¨ λ‘μ§
β βββ emotion_engine.py # κ°μ λΆμ λͺ¨λΈ λ‘λ© λ° μμΈ‘
β βββ main.py # λ©μΈ νμ΄μ§, μΌκΈ°/μΆμ² κΈ°λ₯
β βββ models.py # λ°μ΄ν°λ² μ΄μ€ λͺ¨λΈ
β
βββ supabase/ # Supabase DB λ§μ΄κ·Έλ μ΄μ
βββ Dockerfile # λ°°ν¬μ© Docker 컨ν
μ΄λ μ€μ
βββ requirements.txt # Python λΌμ΄λΈλ¬λ¦¬ μ’
μμ±
βββ run.py # μ ν리μΌμ΄μ
μ€ν μ€ν¬λ¦½νΈ
```
<details>
<summary><strong>Frontend (Templates) ꡬ쑰 μμΈ (ν΄λ¦νμ¬ νΌμΉκΈ°)</strong></summary>
`src/templates` ν΄λλ Flaskμ Jinja2 ν
νλ¦Ώ μμ§μ μ¬μ©νμ¬ UIλ₯Ό ꡬμ±ν©λλ€. μν μ λ°λΌ νμΌμ΄ λͺ
ννκ² λΆλ¦¬λμ΄ μμΌλ©°, μμκ³Ό λ§€ν¬λ‘λ₯Ό ν΅ν΄ ν¨μ¨μ μΌλ‘ UIλ₯Ό κ΄λ¦¬ν©λλ€.
- **κΈ°λ³Έ λ μ΄μμ (`base.html`, `base_auth.html`)**: μ 체 νμ΄μ§μ 곡ν΅μ μΈ λΌλ(λ€λΉκ²μ΄μ
λ° λ±)λ₯Ό μ 곡ν©λλ€.
- **κ°λ³ νμ΄μ§ (`main.html`, `diary.html`, `page.html`, `login.html`, `signup.html`)**: κ° κΈ°λ₯μ λ§λ μ€μ νμ΄μ§ UIλ₯Ό λ΄λΉνλ©°, κΈ°λ³Έ λ μ΄μμμ μμλ°μ μ¬μ©ν©λλ€.
- **μ¬μ¬μ© μ»΄ν¬λνΈ (`_macros.html`)**: λ‘κ·ΈμΈ νΌ, μΆμ² ν λ± λ°λ³΅μ μΌλ‘ μ¬μ©λλ UI μ‘°κ°μ λ§€ν¬λ‘ ννλ‘ μ μνμ¬ μ½λ μ€λ³΅μ μ€μ
λλ€.
- **μ μ νμΌ (`static/`)**:
- **`css/`**: κ° νμ΄μ§μ νΉνλ μ€νμΌμνΈμ μ μ μ€νμΌμ ν¬ν¨ν©λλ€.
- **`js/`**: νμ΄μ§λ³ ν΅μ¬ λ‘μ§(API ν΅μ , λ¬λ ₯ κΈ°λ₯), ν
λ§ λ³κ²½, μ¨λ³΄λ© λ± λμ μΈ κΈ°λ₯μ λ΄λΉνλ JavaScript νμΌλ€μ ν¬ν¨ν©λλ€.
</details>
---
## π§ββοΈ κ°λ° κ³Όμ λ° λ¬Έμ ν΄κ²°
νλ‘μ νΈλ₯Ό μ§ννλ©° κ²ͺμλ μ£Όμ κΈ°μ μ λμ κ³Ό ν΄κ²° κ³Όμ μ λν μμΈν λ΄μ©μ **[DEVELOPMENT.md](DEVELOPMENT.md)** νμΌμμ νμΈνμ€ μ μμ΅λλ€.
---
## π λͺ¨λΈ μ±λ₯
| Metric | Score |
| :------- | :----- |
| Accuracy | 0.7905 |
| F1 Score | 0.7910 |
| Loss | 0.6943 |
---
## π λΌμ΄μ μ€
This project is licensed under the MIT License.
|