Skip to content

2025-Graduation-Design/Server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎵 Melog - AI와 음악이 만나는 감성일기

Important

사용자가 쓴 일기의 감정을 KoBERT로 분석(8종) 하고, 그 감정에 어울리는 음악과 가사를 추천하는 감정 기록 서비스의 FastAPI 서버입니다. 2025 한국기술교육대학교 컴퓨터공학부 졸업작품

🏆 아이디어 경진대회 우수작품상(2024) · 졸업작품 우수상(2025)


⚙️ Tech Stack

분류 기술
Language / Framework Python, FastAPI, SQLAlchemy 2.0, Alembic
Database MySQL, MongoDB(motor), Redis
AI / NLP PyTorch, KoBERT(SKT kobert-base-v1), Hugging Face Transformers, Kiwi 형태소 분석기
Auth JWT(python-jose), bcrypt
Data Collection Selenium, BeautifulSoup4, youtube-comment-downloader

☀️ 주요 기능

  • 감정 분석 — 일기를 문장 단위로 분리해 8종 감정(신남·기대·만족·편안·허무·우울·슬픔·분노)으로 분류 image

  • 음악 · 가사 추천 — 감정-장르 매핑 안에서 가사 유사도 기준 Top-3 곡과 대표 가사 추천, 재추천 지원

  • 히스토리 — 월별로 추천받은 곡과 감정 기록 확인

  • 감정 통계 · 조언 — 월별 감정 그래프와 최다 감정 기반 응원 메시지 제공

📱 앱 화면 보기 image image image

🧠 추천 파이프라인 (How it works)

flowchart LR
    A["일기 작성"] --> B["Kiwi 문장 분리"]
    B --> C["KoBERT 감정 분류<br/>(문장별)"]
    C --> D["감정 대표 문장 선정"]
    D --> E["768차원 임베딩"]
    E --> F["감정-장르 매핑 내<br/>가사 임베딩과 코사인 유사도"]
    F --> G["Top-3 음악 · 가사 추천"]
Loading

모델 성능 (KoBERT 파인튜닝)

실험 데이터셋 Valid Acc F1-Score
Baseline 3,610 문장 0.480 0.443
중간 5,614 문장 0.623 0.623
최종 10,001 문장 0.792 0.790
  • 동일 사분면 감정 그룹화 시 F1-Score 0.849
  • 데이터셋: SNS·커뮤니티(유튜브 댓글 등)에서 직접 수집하고, 감정 판단 기준표를 세워 8종 라벨링·검수
  • 중간발표 피드백을 반영해 추천을 1곡 → 3곡 + 재추천으로 개선, 추천 다양성 확보
  • 사용자 검증: 41명 설문(실사용자 19명) — 감정 분석 "매우 일치" 68.4%, 분석·추천 만족도 80% 이상, 사용 의향 87.8%

🗂️ Package Structure

app
├── main.py                # FastAPI 엔트리포인트
├── database.py            # DB 연결 설정
├── transaction.py         # 트랜잭션 유틸
├── user/                  # 회원, JWT 인증
├── diary/                 # 일기 CRUD, 감정 분석 트리거
├── emotion/               # KoBERT 감정 분류
├── embedding/             # 문장 임베딩, 유사도 계산
├── songs/                 # 곡 데이터
├── genre/                 # 감정-장르 매핑
├── statistics/            # 월별 감정 통계·조언
├── crawling/              # 멜론 가사 크롤러
└── test/                  # 테스트 라우터

🙋 Role & Contribution — 서정빈 (팀장)

  • 4인 팀 프로젝트 총괄 및 단계별 목표 · 일정 · 역할 조율
  • 감정 데이터셋 수집 · 라벨링과 KoBERT 학습 · 하이퍼파라미터 튜닝에 직접 참여 — F1-score 0.443 → 0.790 개선에 기여
  • 일기 · 가사 임베딩 코사인 유사도 기반 Top-3 추천 알고리즘 설계 · 구현
  • FastAPI 서버 · DB 설계, 학습 모델의 서버 통합 · 서빙, Docker 배포 등 백엔드 전체 구축

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages