Spaces:
Sleeping
Sleeping
| 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. | |