Skip to content

IMP-FINAL-PROJECT/FINAL-AI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

32 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

FINAL-AI

AI 기반 우울감 예츑 및 챗봇 μ‹œμŠ€ν…œ

ν”„λ‘œμ νŠΈ κ°œμš”

ν˜„λŒ€ μ‚¬νšŒμ—μ„œ 정신건강 κ΄€λ¦¬λŠ” 개인의 μ‚Άμ˜ μ§ˆμ— μ€‘μš”ν•œ 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€. 우울증 λ“± λ‹€μ–‘ν•œ 정신건강 λ¬Έμ œλŠ” μΌμƒμƒν™œμ— 큰 영ν–₯을 쀄 수 μžˆμ§€λ§Œ, 이λ₯Ό μ μ‹œμ— μΈμ§€ν•˜κ³  κ΄€λ¦¬ν•˜κΈ°λž€ 쉽지 μ•ŠμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 기술 λ°œμ „μ€ λ””μ§€ν„Έ μ†”λ£¨μ…˜μ„ μ œκ³΅ν•˜μ—¬ λͺ¨λ°”일 κΈ°κΈ° 등을 톡해 정신건강 μƒνƒœλ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜κ³  ν‰κ°€ν•˜λŠ” 데 도움을 μ£Όκ³  μžˆμŠ΅λ‹ˆλ‹€.

λ³Έ ν”„λ‘œμ νŠΈμ—μ„œλŠ” μ‚¬μš©μžμ˜ μ„Όμ„œ 데이터λ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜κ³ , μš°μšΈκ°μ„ μ™„ν™”ν•˜κΈ° μœ„ν•œ 케어봇 μ‹œμŠ€ν…œμ„ κ°œλ°œν•˜λŠ” 것을 λͺ©ν‘œλ‘œ μ„€μ •ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ œμ•ˆ μ‹œμŠ€ν…œμ€ 슀마트폰 μ„Όμ„œ 데이터와 μ±„νŒ… 데이터λ₯Ό 기반으둜 정신건강 μƒνƒœλ₯Ό μΈ‘μ •ν•˜κ³  κ°œμ„ μ— 도움이 λ˜λŠ” ν”Όλ“œλ°±μ„ μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•©λ‹ˆλ‹€.

μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

우울감 예츑용 데이터 증강 및 μ „μ²˜λ¦¬

데이터 증강 데이터 μ „μ²˜λ¦¬

우울감 예츑용 앙상블 λͺ¨λΈ 및 λ² μ΄μ§€μ•ˆ μ΅œμ ν™”

앙상블 방법둠 λ² μ΄μ§€μ•ˆ μ΅œμ ν™”


챗봇 μ‹œμŠ€ν…œ 전체 ν”Œλ‘œμš°

챗봇 μ‹œμŠ€ν…œ ν”Œλ‘œμš°

μ˜λ„ λΆ„λ₯˜ 및 μ„Όμ„œ 데이터 기반 μ§ˆμ˜μ‘λ‹΅

μ˜λ„ λΆ„λ₯˜ μ„Όμ„œ 데이터 기반 μ§ˆμ˜μ‘λ‹΅

μš©μ–΄μ„€λͺ… 및 기타(일상 λŒ€ν™”)

μš©μ–΄μ„€λͺ… 및 μ΄μœ μ„€λͺ… 기타(일상 λŒ€ν™”)

ν”„λ‘œμ νŠΈ ꡬ쑰

FINAL-AI/
β”œβ”€β”€ score_prediction/          # 우울감 예츑 μ‹œμŠ€ν…œ
β”‚   β”œβ”€β”€ model_train/          # λͺ¨λΈ ν›ˆλ ¨ κ΄€λ ¨
β”‚   β”‚   β”œβ”€β”€ ensemble.py       # 앙상블 λͺ¨λΈ ν›ˆλ ¨
β”‚   β”‚   └── get_data.py       # 데이터 μˆ˜μ§‘
β”‚   β”œβ”€β”€ data_preprocess/      # 데이터 μ „μ²˜λ¦¬
β”‚   β”‚   └── data_generative.ipynb
β”‚   └── util/                 # μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜
β”‚       β”œβ”€β”€ predict_score.py  # 점수 예츑
β”‚       └── preprocess_data.py
β”œβ”€β”€ chatbot/                  # 챗봇 μ‹œμŠ€ν…œ
β”‚   β”œβ”€β”€ app.py               # Flask μ›Ή μ„œλ²„
β”‚   β”œβ”€β”€ chat_module/         # 챗봇 핡심 λͺ¨λ“ˆ
β”‚   β”‚   β”œβ”€β”€ qa_chatbot.py    # 메인 챗봇 둜직
β”‚   β”‚   β”œβ”€β”€ term_explain.py  # μš©μ–΄ μ„€λͺ…
β”‚   β”‚   β”œβ”€β”€ sql_prompt.py    # SQL 쿼리 생성
β”‚   β”‚   β”œβ”€β”€ text_generation.py
β”‚   β”‚   └── translator.py
β”‚   β”œβ”€β”€ models/              # AI λͺ¨λΈ
β”‚   β”‚   └── intent/          # μ˜λ„ λΆ„λ₯˜ λͺ¨λΈ
β”‚   β”œβ”€β”€ utils/               # μœ ν‹Έλ¦¬ν‹°
β”‚   β”œβ”€β”€ train_tools/         # λͺ¨λΈ ν›ˆλ ¨ 도ꡬ
β”‚   β”œβ”€β”€ config/              # μ„€μ • 파일
β”‚   └── data/                # ν›ˆλ ¨ 데이터
β”œβ”€β”€ images/                  # μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜ 이미지
└── README.md

μ£Όμš” κΈ°λŠ₯

1. 우울감 예츑 μ‹œμŠ€ν…œ (score_prediction/)

앙상블 λͺ¨λΈ 기반 예츑

  • 닀쀑 λͺ¨λΈ μ‘°ν•©: GradientBoosting, XGBoost, LightGBM, RandomForestλ₯Ό λ™μ‹œμ— ν™œμš©
  • 가쀑 평균 예츑: 각 λͺ¨λΈμ˜ RMSE 점수λ₯Ό 기반으둜 ν•œ 가쀑 ν‰κ· μœΌλ‘œ μ΅œμ’… μ˜ˆμΈ‘κ°’ λ„μΆœ
  • ꡐ차 검증: 5-fold cross validation을 ν†΅ν•œ λͺ¨λΈ μ„±λŠ₯ 검증

κ°œμΈν™” λͺ¨λΈ (Fine-tuning)

  • μ‚¬μš©μžλ³„ 맞좀 λͺ¨λΈ: 개인 데이터가 5개 이상인 경우 μžλ™μœΌλ‘œ Fine-tuning μˆ˜ν–‰
  • λ² μ΄μ§€μ•ˆ μ΅œμ ν™”: Bayesian optimization을 ν†΅ν•œ ν•˜μ΄νΌνŒŒλΌλ―Έν„° μžλ™ νŠœλ‹
  • λͺ¨λΈ μ €μž₯ 및 관리: μ‚¬μš©μžλ³„λ‘œ κ°œλ³„ λͺ¨λΈ 파일 관리 ({user_id}_fine_tuned.joblib)

데이터 μ „μ²˜λ¦¬ 및 μ •κ·œν™”

  • 일상 μƒν™œ νŒ¨ν„΄ 데이터: μ‹œκ°„λ³„ ν™œλ™, 수면, μš΄λ™, 슀마트폰 μ‚¬μš©λŸ‰ λ“±
  • μžλ™ μ •κ·œν™”: StandardScalerλ₯Ό ν†΅ν•œ νŠΉμ„±λ³„ μ •κ·œν™”
  • μ‹€μ‹œκ°„ 처리: 일일 데이터λ₯Ό 기반으둜 μ‹€μ‹œκ°„ 우울감 점수 예츑

μ£Όμš” 파일:

  • ensemble.py: 앙상블 λͺ¨λΈ ν›ˆλ ¨ 및 Fine-tuning 둜직
  • predict_score.py: μ‹€μ‹œκ°„ 우울감 점수 예츑 및 λ°μ΄ν„°λ² μ΄μŠ€ μ €μž₯
  • data_generative.ipynb: 데이터 생성 및 μ „μ²˜λ¦¬ νŒŒμ΄ν”„λΌμΈ

2. 챗봇 μ‹œμŠ€ν…œ (chatbot/)

μ˜λ„ λΆ„λ₯˜ μ‹œμŠ€ν…œ

  • 4κ°€μ§€ μ˜λ„ λΆ„λ₯˜: μš©μ–΄μ„€λͺ…, μ΄μœ μ„€λͺ…, μ§ˆμ˜μ‘λ‹΅, 기타
  • CNN 기반 λΆ„λ₯˜: Convolutional Neural Networkλ₯Ό ν™œμš©ν•œ ν…μŠ€νŠΈ λΆ„λ₯˜
  • ν•œκ΅­μ–΄ νŠΉν™” 처리: KoNLPy Komoran을 ν†΅ν•œ ν•œκ΅­μ–΄ ν˜•νƒœμ†Œ 뢄석

μžμ—°μ–΄ 처리 νŒŒμ΄ν”„λΌμΈ

  • λ¬Έμž₯ 토큰화: μž…λ ₯ λ¬Έμž₯을 κ°œλ³„ 단어 λ‹¨μœ„λ‘œ 뢄리
  • λΆˆμš©μ–΄ 제거: 쑰사, μ–΄λ―Έ λ“± 의미 μ—†λŠ” μš”μ†Œ 제거
  • 단어 벑터화: Word2Vec 기반 단어 μž„λ² λ”©
  • μ‚¬μš©μž μ •μ˜ 사전: 도메인 νŠΉν™” μš©μ–΄ 사전 ν™œμš©

응닡 생성 μ‹œμŠ€ν…œ

  • μš©μ–΄/이유 μ„€λͺ…: 벑터 λ°μ΄ν„°λ² μ΄μŠ€(Pinecone) 기반 μœ μ‚¬λ„ 검색
  • μ§ˆμ˜μ‘λ‹΅: LangChainκ³Ό SQL λ°μ΄ν„°λ² μ΄μŠ€ 연동을 ν†΅ν•œ κ΅¬μ‘°ν™”λœ 데이터 쑰회
  • 일상 λŒ€ν™”: Phi-2-KO λͺ¨λΈμ„ LoRA νŒŒμΈνŠœλ‹ν•˜μ—¬ 곡감적 응닡 생성

λ°μ΄ν„°λ² μ΄μŠ€ 연동

  • Firebase: μ‚¬μš©μžμ™€μ˜ λŒ€ν™” 기둝 μ €μž₯ 및 관리
  • MySQL: μ„Όμ„œ 데이터 및 일상 μƒν™œ νŒ¨ν„΄ 데이터 μ €μž₯
  • SQL DatabaseChain: LangChain을 ν†΅ν•œ μžμ—°μ–΄ β†’ SQL 쿼리 λ³€ν™˜
  • μ‹€μ‹œκ°„ 데이터 쑰회: ν•Έλ“œν° μ‚¬μš©λŸ‰, ν™œλ™ νŒ¨ν„΄ λ“± μ‹€μ‹œκ°„ 데이터 뢄석

μ£Όμš” 파일:

  • app.py: Flask μ›Ή μ„œλ²„ 및 RESTful API μ—”λ“œν¬μΈνŠΈ
  • qa_chatbot.py: 메인 챗봇 둜직 및 μ˜λ„ λΆ„λ₯˜ 처리
  • term_explain.py: μš©μ–΄ μ„€λͺ… λͺ¨λ“ˆ (벑터 DB 검색)
  • sql_prompt.py: SQL 쿼리 생성 및 λ°μ΄ν„°λ² μ΄μŠ€ 연동
  • text_generation.py: ν…μŠ€νŠΈ 생성 λͺ¨λΈ 연동
  • translator.py: λ‹€κ΅­μ–΄ 지원 κΈ°λŠ₯

기술 μŠ€νƒ

우울감 예츑

  • Machine Learning: scikit-learn, XGBoost, LightGBM
  • Data Processing: pandas, numpy
  • Model Optimization: Bayesian optimization
  • Model Persistence: joblib, pickle

챗봇 μ‹œμŠ€ν…œ

  • Web Framework: Flask
  • NLP: Custom intent classification, NER
  • Database: SQL (μΆ”μ„Έ 데이터 쑰회)
  • Text Processing: KoNLPy Komoran, μ‚¬μš©μž μ •μ˜ 사전
  • Vector Database: Pinecone
  • Language Model: PaLM 2, Phi-2-KO

μ„€μΉ˜ 및 μ‹€ν–‰

1. ν™˜κ²½ μ„€μ •

# Python κ°€μƒν™˜κ²½ 생성 (ꢌμž₯)
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# ν•„μš”ν•œ νŒ¨ν‚€μ§€ μ„€μΉ˜
pip install -r requirements.txt

2. 우울감 예츑 μ‹œμŠ€ν…œ μ‹€ν–‰

cd score_prediction
python model_train/ensemble.py  # λͺ¨λΈ ν›ˆλ ¨
python util/predict_score.py    # 점수 예츑

3. 챗봇 μ‹œμŠ€ν…œ μ‹€ν–‰

cd chatbot
python app.py

μ„œλ²„κ°€ μ‹€ν–‰λ˜λ©΄ http://localhost:5000μ—μ„œ 챗봇 API에 μ ‘κ·Ό κ°€λŠ₯

API μ‚¬μš© μ˜ˆμ‹œ

curl -X POST http://localhost:5000/chat \
  -H "Content-Type: application/json" \
  -d '{"request": "우울감이 λ¬΄μ—‡μΈκ°€μš”?"}'

μ„€μ •

λ°μ΄ν„°λ² μ΄μŠ€ μ„€μ •

  • 우울감 μ˜ˆμΈ‘μ„ μœ„ν•œ 일상 μƒν™œ νŒ¨ν„΄ λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° ν•„μš”
  • μ±—λ΄‡μ˜ μΆ”μ„Έ 쑰회λ₯Ό μœ„ν•œ λ°μ΄ν„°λ² μ΄μŠ€ μ„€μ • ν•„μš”

λͺ¨λΈ 파일

  • μ˜λ„ λΆ„λ₯˜ λͺ¨λΈ: chatbot/models/intent/intent_model_v2.h5
  • 사전 파일: chatbot/train_tools/dict/chatbot_dict.bin

데이터 ꡬ쑰

우울감 예츑 데이터

  • 일상 μƒν™œ νŒ¨ν„΄ 데이터 (μ‹œκ°„λ³„ ν™œλ™, 수면, μš΄λ™ λ“±)
  • μ‚¬μš©μžλ³„ κ°œμΈν™”λœ 우울감 점수

챗봇 ν›ˆλ ¨ 데이터

  • μ˜λ„ λΆ„λ₯˜ ν›ˆλ ¨ 데이터: chatbot/data/new_train_data_intent.csv
  • μš©μ–΄ μ„€λͺ… 및 μΆ”μ„Έ 데이터

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors