emotion-chatbot-app / README.md
hfexample's picture
Deploy clean snapshot of the repository
e221c83
metadata
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


πŸ“Έ Screenshots

(μŠ€ν¬λ¦°μƒ·μ„ 여기에 μΆ”κ°€ν•˜μ„Έμš”. 예: 메인 νŽ˜μ΄μ§€, 일기 μž‘μ„±, κ²°κ³Ό ν™”λ©΄)

Main Page Result Page


πŸš€ 핡심 κΈ°λŠ₯

  • πŸ€– ν…μŠ€νŠΈ 속 감정 탐색: 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. ν”„λ‘œμ νŠΈ 볡제

    git clone https://github.com/kootaeng2/Emotion-Chatbot-App.git
    cd Emotion-Chatbot-App
    
  2. κ°€μƒν™˜κ²½ 생성 및 ν™œμ„±ν™” (Anaconda μ‚¬μš©)

    conda create -n emotion_env python=3.10
    conda activate emotion_env
    
  3. ν•„μˆ˜ 라이브러리 μ„€μΉ˜

    pip install -r requirements.txt
    
  4. ν™˜κ²½ λ³€μˆ˜ μ„€μ • .env νŒŒμΌμ„ μƒμ„±ν•˜κ³  μ•„λž˜ λ‚΄μš©μ„ μΆ”κ°€ν•˜μ„Έμš”. Gemini APIλ₯Ό ν†΅ν•œ μΆ”μ²œ κΈ°λŠ₯에 ν•„μš”ν•©λ‹ˆλ‹€.

    GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
    
  5. μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰

    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              # μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ 슀크립트
Frontend (Templates) ꡬ쑰 상세 (ν΄λ¦­ν•˜μ—¬ 펼치기)

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 νŒŒμΌλ“€μ„ ν¬ν•¨ν•©λ‹ˆλ‹€.

πŸ§—β€β™‚οΈ 개발 κ³Όμ • 및 문제 ν•΄κ²°

ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©° κ²ͺμ—ˆλ˜ μ£Όμš” 기술적 도전과 ν•΄κ²° 과정에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ DEVELOPMENT.md νŒŒμΌμ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.


πŸ“Š λͺ¨λΈ μ„±λŠ₯

Metric Score
Accuracy 0.7905
F1 Score 0.7910
Loss 0.6943

πŸ“œ λΌμ΄μ„ μŠ€

This project is licensed under the MIT License.