Spaces:
Runtime error
Runtime error
| title: Emotion Chatbot | |
| emoji: π€ | |
| colorFrom: indigo | |
| colorTo: blue | |
| sdk: docker | |
| app_port: 7860 | |
| pinned: false | |
| # π€ μΌκΈ° κΈ°λ° κ°μ λΆμ λ° μ½ν μΈ μΆμ² μΉ | |
| > ν루λ₯Ό λ§λ¬΄λ¦¬νλ©° μ°λ λΉμ μ μΌκΈ°, κ·Έ μμ μ¨κ²¨μ§ μ§μ§ κ°μ μ 무μμΌκΉμ? | |
| > μ΄ νλ‘μ νΈλ AIλ₯Ό ν΅ν΄ λΉμ μ κΈμ μ΄ν΄νκ³ , κ°μ μ λͺ°μ νκ±°λ νΉμ μλ‘μ΄ νλ ₯μ΄ νμν λ λ§μΆ€ν μ½ν μΈ λ₯Ό μΆμ²ν΄μ£Όλ λΉμ λ§μ κ°μ± λΉμμ λλ€. | |
| <br> | |
| <br> | |
| ## π λΌμ΄λΈ λ°λͺ¨ (Live Demo) | |
| π https://huggingface.co/spaces/koons/emotion-chatbot | |
| (μ μ£Όμλ μ€μ λ°°ν¬λ Space ID κΈ°μ€μ λλ€.) | |
| <br> | |
| # β¨ ν΅μ¬ κΈ°λ₯ | |
| π€ ν μ€νΈ μ κ°μ νμ: klue/roberta-base λͺ¨λΈμ νκ΅μ΄ 'κ°μ±λν λ§λμΉ' λ°μ΄ν°λ‘ λ―ΈμΈμ‘°μ νμ¬, μΌκΈ° μμ λ΄κΈ΄ 볡ν©μ μΈ κ°μ μ 85% μ΄μμ μ νλλ‘ λΆμν©λλ€. | |
| π κ°μ± λ§μΆ€ νλ μ΄μ : λΆμλ κ°μ μ λ κΉμ΄ μλ―Ένκ³ μΆμ λ(μμ©)μ μλ‘μ΄ κΈ°λΆμΌλ‘ μ ννκ³ μΆμ λ(μ ν), λ κ°μ§ μλ리μ€μ λ§μΆ° μν, μμ , μ± μ μΆμ²ν©λλ€. | |
| π λλ§μ κ°μ κΈ°λ‘ λ³΄κ΄: μμ±νλ μΌκΈ°μ AIμ κ°μ λΆμ κ²°κ³Όλ₯Ό λΈλΌμ°μ (localStorage)μ μ μ₯νμ¬, κ³Όκ±°μ κ°μ νλ¦μ μΈμ λ μ§ λ€μ λμλ³Ό μ μμ΅λλ€. | |
| π» μ§κ΄μ μΈ λ°μν UI: Flaskμ JavaScriptλ‘ κ΅¬μΆλ κ°κ²°νκ³ μ¬μ©νκΈ° μ¬μ΄ μΈν°νμ΄μ€λ₯Ό μ 곡νμ¬, μ΄λ€ κΈ°κΈ°μμλ νΈμνκ² κ°μ μ κΈ°λ‘ν μ μμ΅λλ€. | |
| <br> | |
| # βοΈ κΈ°μ μ€ν λ° μν€ν μ² | |
| | κ΅¬λΆ | κΈ°μ | | |
| | :--- | :--- | | |
| | **Backend** | python, Flask, Gunicorn | | |
| | **Frontend**| HTML, CSS, JavaScript | | |
| | **AI / Data**| PyTorch, Hugging Face Transformers, Scikit-learn, Pandas | | |
| | **Deployment**| Docker, GitHub Actions, Hugging Face Spaces | | |
| | **Version Control**| Git, GitHub, Git LFS | | |
| <br> | |
| Git Push (main λΈλμΉ) β GitHub Actions (CI/CD νΈλ¦¬κ±°) β Dockerfile λΉλ β Hugging Face Spaces (μλ λ°°ν¬ λ° μλΉ) | |
| <br> | |
| ## π μμνκΈ°: λ‘컬 νκ²½ μ€μ λ° μ€ν (Getting Started) | |
| Python 3.10 | |
| μ΄ νλ‘μ νΈλ λ 립λ κ°μνκ²½μμ μ€ννλ κ²μ κ°λ ₯νκ² κΆμ₯ν©λλ€. κ°μνκ²½μ PCμ λ€λ₯Έ νμ΄μ¬ νλ‘μ νΈμ λΌμ΄λΈλ¬λ¦¬κ° μΆ©λνλ κ²μ λ°©μ§ν΄μ£Όλ 'λ 립λ μμ 곡κ°'μ λλ€. | |
| ### π λ°©λ² 1: Anaconda μ¬μ© (κ°μ₯ μμ μ μΈ λ°©λ²) | |
| AI/ML νλ‘μ νΈμ νμν 볡μ‘ν λΌμ΄λΈλ¬λ¦¬λ€μ κ°μ₯ μμ μ μΌλ‘ κ΄λ¦¬ν΄μ£Όλ Anaconda μ¬μ©μ μΆμ²ν©λλ€. | |
| ``` | |
| # 1. GitHubμμ νλ‘μ νΈ λ³΅μ | |
| git clone [https://github.com/kootaeng2/Emotion-Chatbot-App.git](https://github.com/kootaeng2/Emotion-Chatbot-App.git) | |
| cd Emotion-Chatbot-App | |
| 2. κ°μνκ²½ μμ± λ° λΌμ΄λΈλ¬λ¦¬ μ€μΉ (Anaconda κΆμ₯) | |
| # Anaconda κ°μνκ²½ μμ± λ° νμ±ν | |
| conda create -n sentiment_env python=3.10 | |
| conda activate sentiment_env | |
| # νμ λΌμ΄λΈλ¬λ¦¬ μ€μΉ (PyTorch λ¨Όμ , μ΄ν requirements.txt) | |
| pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 | |
| # 2. 'sentiment_env'λΌλ μ΄λ¦μΌλ‘ Python 3.10 Conda κ°μνκ²½ μμ± | |
| conda create -n sentiment_env python=3.10 | |
| # 3. μλ‘ λ§λ κ°μνκ²½ νμ±ν | |
| conda activate sentiment_env | |
| # 4. νμ λΌμ΄λΈλ¬λ¦¬ μ€μΉ (PyTorch λ¨Όμ , μ΄ν requirements.txt) | |
| pip install torch torchvision torchaudio --index-url [https://download.pytorch.org/whl/cu118](https://download.pytorch.org/whl/cu118) | |
| pip install -r requirements.txt | |
| python scripts/train_model.py | |
| 4. μΉ μ ν리μΌμ΄μ μ€ν | |
| Bash | |
| python src/app.py | |
| μλ²κ° μ€νλλ©΄, μΉ λΈλΌμ°μ μ£Όμμ°½μ http://127.0.0.1:5000 μ μ λ ₯νμ¬ μ μνμΈμ. | |
| ``` | |
| <br> | |
| # π νλ‘μ νΈ ν΄λ ꡬ쑰 | |
| ``` | |
| Emotion-Chatbot-App/ | |
| β | |
| βββ .github/ | |
| β βββ workflows/ | |
| β βββ sync-to-hub.yml # GitHub Actions μλ λ°°ν¬ μν¬νλ‘μ° | |
| β | |
| βββ korean-emotion-classifier-final/ # μΆλ‘ (Inference)μ© μ΅μ’ AI λͺ¨λΈ | |
| β | |
| βββ notebooks/ | |
| β βββ 1_explore_data.py # λ°μ΄ν° νμμ© λ ΈνΈλΆ | |
| β | |
| βββ scripts/ | |
| β βββ train_model.py # AI λͺ¨λΈ νλ ¨ μ€ν¬λ¦½νΈ | |
| β | |
| βββ src/ | |
| β βββ app.py # Flask μΉ μλ² μ€ν νμΌ | |
| β βββ emotion_engine.py # κ°μ λΆμ μμ§ λͺ¨λ | |
| β βββ recommender.py # μ½ν μΈ μΆμ² λͺ¨λ | |
| β βββ static/ # CSS, Frontend JS λ± μ μ νμΌ | |
| β βββ templates/ # HTML ν νλ¦Ώ νμΌ | |
| βββ emotion_homepage.html # ννμ΄μ§ | |
| β | |
| βββ Dockerfile # Hugging Face λ°°ν¬μ© Docker μ€μ | |
| βββ README.md # νλ‘μ νΈ μ€λͺ μ | |
| βββ requirements.txt # νμ Python λΌμ΄λΈλ¬λ¦¬ λͺ©λ‘ | |
| ``` | |
| <br> | |
| π§ββοΈ μ£Όμ κ°λ° λμ κ³Όμ λ° ν΄κ²° κ³Όμ (Troubleshooting Journey) | |
| μ΄ νλ‘μ νΈμ κ°μ₯ ν° μ±κ³Όλ λ¨μ κΈ°λ₯ ꡬνμ λμ΄, μ€μ μλΉμ€ λ°°ν¬ κ³Όμ μμ λ°μνλ 볡μ‘νκ³ κΉμ΄ μλ λ¬Έμ λ€μ 체κ³μ μΌλ‘ ν΄κ²°ν κ²½νμ λλ€. | |
| μμΈ λΆλͺ μ OS λ 벨 μ€λ₯ ν΄κ²° (stat: ... not NoneType): | |
| λ¬Έμ : λ‘컬 Windows νκ²½μμ transformers λΌμ΄λΈλ¬λ¦¬κ° νμΌμ λ‘λνμ§ λͺ»νλ μμΈ λΆλͺ μ OS μμ€ μ€λ₯κ° μ§μμ μΌλ‘ λ°μ. | |
| ν΄κ²°: venvμ λΆμμ μ±μ μμ¬νκ³ Anaconda νκ²½μΌλ‘ μ΄μ νμ¬ νκ²½ λ³μλ₯Ό ν΅μ νμΌλ©°, Windowsμ Linuxμ κ²½λ‘ μ°¨μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ μ λ κ²½λ‘ μ¬μ© λ° κ²½λ‘ κ΅¬λΆμ μ κ·νλ₯Ό ν΅ν΄ λ¬Έμ λ₯Ό μ΅μ’ ν΄κ²°. μ΄λ₯Ό ν΅ν΄ μ΄μ체μ κ° νΈνμ±μ λν κΉμ μ΄ν΄λ₯Ό μ»μ. | |
| λμ©λ AI λͺ¨λΈμ λ²μ κ΄λ¦¬ (Git LFS & History Rewriting): | |
| λ¬Έμ : 1GBκ° λλ AI λͺ¨λΈ λ° νλ ¨ λΆμ°λ¬Ό νμΌλ‘ μΈν΄ git push μ νμμμ(408) λ° GitHub μ©λ μ ν(GH001) μ€λ₯ λ°μ. | |
| ν΄κ²°: Git LFSλ₯Ό λμ νμ¬ λμ©λ νμΌμ κ΄λ¦¬νκ³ , κ³Όκ±° νμ€ν 리μ λ¨μ λΆνμν λμ©λ νμΌμ νμ μ git filter-repo λͺ λ Ήμ΄λ‘ μμ ν μ κ±°. μ΅μ’ μ μΌλ‘ λ¬Έμ κ° μ§μλμ μ μ₯μλ₯Ό μ΄κΈ°ννκ³ κΉ¨λν λ²μ λ§ νΈμνλ κ³Όκ°ν κ²°μ μ ν΅ν΄ κ·Όλ³Έ μμΈμ ν΄κ²°. | |
| ν΄λΌμ°λ μλ λ°°ν¬ νμ΄νλΌμΈ κ΅¬μΆ (CI/CD): | |
| λ¬Έμ : Hugging Face Space λ°°ν¬ κ³Όμ μμ ꡬμ μΈμ¦ λ°©μ μ€λ₯, requirements.txt λλ½, Python λͺ¨λ νμ κ²½λ‘ λ¬Έμ (ModuleNotFoundError), Flask ν νλ¦Ώ κ²½λ‘ λ¬Έμ (TemplateNotFound) λ± λ€μν λ°νμ μ€λ₯ λ°μ. | |
| ν΄κ²°: | |
| **Dockerfile**μ μμ±νμ¬ μ΄λ€ νκ²½μμλ λμΌνκ² μ€νλ μ μλ νμ€νλ νκ²½μ ꡬμΆ. | |
| GitHub Actions μν¬νλ‘μ°λ₯Ό μ΅μ 곡μ Action(huggingface/sync-to-hub)μΌλ‘ μμ νμ¬ μΈμ¦ λ¬Έμ λ₯Ό ν΄κ²°. | |
| μλ² νκ²½μμμ Python μν¬νΈ λ°©μμ μ΄ν΄νκ³ **μλ κ²½λ‘ μν¬νΈ(relative import)**λ₯Ό μ μ©νμ¬ λͺ¨λ κ²½λ‘ λ¬Έμ λ₯Ό ν΄κ²°. | |
| Flaskμ λμ μ리μ λ§μΆ° templates ν΄λλ₯Ό src λ΄λΆλ‘ μ¬λ°°μΉνμ¬ μ΅μ’ μ μΌλ‘ λͺ¨λ λ°νμ μ€λ₯λ₯Ό ν΄κ²°νκ³ λ°°ν¬μ μ±κ³΅. | |
| ν΄κ²°: gunicornμ μλ λ°©μμ μ΄ν΄νκ³ , Pythonμ **μλ κ²½λ‘ μν¬νΈ(relative import)**λ₯Ό μ μ©νμ¬ λͺ¨λ κ²½λ‘ λ¬Έμ λ₯Ό ν΄κ²°. λν Flaskμ κΈ°λ³Έ κ·μΉμ λ§κ² templates λ° static ν΄λλ₯Ό app.pyκ° μλ src ν΄λ λ΄λΆλ‘ μ¬λ°°μΉνμ¬ λ¬Έμ λ₯Ό μ΅μ’ ν΄κ²°. | |