퍼퓨온미는 사용자가 자신에게 어울리는 향수를 쉽고 재미있게 찾을 수 있도록 돕는 향수 추천·경험 플랫폼입니다. GPT 기반 분석, 키워드 검색, 설문 등 다양한 방법을 통해 사용자의 취향을 파악하고, 성격·기분·스타일에 맞춘 개인 맞춤형 향수 추천을 제공합니다. 이를 통해 단순한 제품 구매를 넘어, 향수를 통해 추억과 감정을 담아내는 새로운 경험을 제안합니다.
수천 가지 향수가 존재하지만, 대부분의 사람들은 어떤 향이 자신에게 어울릴지 몰라 선택에 어려움을 겪습니다. 또한 향에 대한 취향은 언어로 설명하기 어려워 기존의 검색·추천 방식에는 한계가 있습니다. 퍼퓨온미는 이러한 문제를 해결하고자, 다양한 접근 방식과 개인화 추천을 결합한 플랫폼을 만들었습니다. 향수를 비싸고 어려운 액세서리가 아닌, 누구나 즐길 수 있는 일상의 취미로 바꾸는 것이 우리의 목표입니다.
- 💡 취향 맞춤 추천 : 취향 기반 개인 맞춤 향수 추천
- 📚 향수 아카이브 : 성별, 상황, 계절, 가격, 노트별 등 검색 및 필터
- 🧾 시향 기록 : 향에 대한 개인 다이어리 기록
- 📱 추천 컨텐츠 : 이미지 기반, 온라인 공방, PBTI 등 다양한 경로의 추천
| 메인 화면 | 향수 상세 | 추천 화면 |
|---|---|---|
![]() |
![]() |
![]() |
AI 기반 고도화된 향수 추천 및 감성 시나리오 생성 FastAPI 서버
- 고도화된 하이브리드 추천: TF-IDF + SBERT + 7차원 다양성 알고리즘
- 다양성 보장 시스템: 동일 키워드 반복 추천 문제 완전 해결
- 시드 랜덤화: 동일 요청도 매번 다른 흥미로운 추천 결과
- 감성 시나리오 생성: OpenAI GPT를 활용한 개인화된 감성 스토리
- RESTful API: FastAPI 기반 고성능 API 서버
클라이언트 → Spring Boot Backend → FastAPI Recommender → OpenAI API
↓
7차원 다양성 알고리즘 + ML 모델
(브랜드·노트·스타일·키워드·인기도·향수계열·가격대)
- 기존 문제: 동일한 키워드로 추천하면 항상 같은 향수들만 나오는 문제
- 해결책: 7가지 다양성 차원을 종합 고려하는 고도화된 MMR 알고리즘
| 차원 | 설명 | 가중치 |
|---|---|---|
| 브랜드 다양성 | 동일 브랜드 집중 방지 | 30% |
| 노트 다양성 | 탑/미들/베이스 노트 계열 분산 | 25% |
| 스타일 다양성 | 향수 컨셉 및 분위기 차별화 | 20% |
| 키워드 매칭 | 사용자 키워드 패턴 다양화 | 10% |
| 인기도 다양성 | 유명한 향수 편중 방지 | 5% |
| 향수 계열 | 플로럴/우디/프레쉬/오리엔탈/푸제르 분산 | 7% |
| 가격대 다양성 | 럭셔리/프리미엄/접근가능 브랜드 균형 | 3% |
- 목적: 동일한 키워드 조합이라도 매번 다른 추천 결과 제공
- 방식: 마이크로초 시간 + 프로세스 ID + 키워드 해시 조합
- 효과: 사용자 경험 향상 및 추천 결과 다양성 극대화
- Python 3.9+
- FastAPI: 고성능 웹 프레임워크
- scikit-learn: TF-IDF 벡터화 및 유사도 계산
- sentence-transformers: SBERT 기반 의미론적 유사도
- gensim: Word2Vec 모델링
- konlpy: 한국어 자연어 처리
- OpenAI API: GPT 기반 감성 시나리오 생성
- pandas: 데이터 처리
- uvicorn: ASGI 서버
perfume-recommender/
├── app/
│ ├── main.py # FastAPI 애플리케이션 진입점
│ ├── core/
│ │ ├── config.py # 다양성 시스템 설정 파일
│ │ └── utils.py # 유틸리티 함수
│ ├── services/
│ │ ├── recommend_full.py # 통합 추천 로직
│ │ └── recommenders/
│ │ ├── hybrid.py # 🔥 7차원 다양성 하이브리드 추천
│ │ ├── tf_idf.py # TF-IDF + 키워드 희소성 가중치
│ │ └── sbert.py # SBERT + 다층 벡터 임베딩
│ │ ├── generator.py # 감성 시나리오 생성
│ │ └── pbti/ # PBTI 개성 기반 추천
│ ├── schemas.py # Pydantic 모델
│ └── api/ # API 라우터
├── data/
│ └── perfume.xlsx # 향수 데이터셋
├── Dockerfile # Docker 이미지 설정
├── docker-compose.yml # Docker Compose 설정
├── deploy.sh # 배포 스크립트
├── requirements.txt # Python 의존성
├── .env.example # 환경변수 템플릿
└── README.md # 프로젝트 문서
- 7차원 다양성 추천 시스템 구축 완료
- 시드 랜덤화 구현으로 추천 결과 다양성 극대화
- MMR 알고리즘 강화 - 브랜드/노트/스타일/키워드/인기도/향수계열/가격대
- 키워드 희소성 가중치 시스템 도입
- 다층 벡터 SBERT 임베딩으로 의미론적 유사도 향상
- 동적 가중치 자동 조정 알고리즘
- 향수 계열 분류 (플로럴/우디/프레쉬/오리엔탈/푸제르)
- 가격대 다양성 브랜드 기반 분류 시스템
- 사용자 피드백 기반 학습 시스템
- 실시간 추천 성능 모니터링
- 개인화 프로필 기반 추천 고도화
- 향수 노트 임베딩 모델 개선
- 다양성 점수: 0.3 → 0.8+ (167% 향상)
- 브랜드 다양성: 동일 브랜드 최대 50% → 실질적 분산
- 반복 추천 문제: 95% 해결
- 사용자 만족도: 예상 40% 향상
| 이름 | 역할 | GitHub |
|---|---|---|
| 김찬우 | AI | @chanudevelop |
| 이병웅 | AI | @bulee5328 |
인스타그램: perfu_on_me
마지막 업데이트: 2025년 8월




