사용자의 감정 문장을 분석하고, 감정에 맞는 음식과 맛집을 추천하여 직관적인 선택을 돕는 AI 기반 추천 서비스
기존 맛집 탐색 과정에서는 리뷰와 평점 정보가 많더라도 사용자의 현재 상태나 기분까지 반영한 추천을 받기 어렵다는 문제가 있습니다.
**와구와구 이거어때?**는 이러한 문제를 해결하기 위해 감정 분석, 음식 추천, 맛집 추천, 지도 기반 시각화 기능을 하나의 서비스 흐름으로 통합한 프로젝트입니다.
사용자가 입력한 감정을 바탕으로 AI 모델이 감정 상태를 분석하고, 그 결과에 맞는 음식 카테고리와 주변 맛집을 추천해줍니다.
- 작품명: 감정 기반 맛집 추천 시스템
- 팀명: 20즈
- 개발 인원: 3명
- 프로젝트 형태: AI + 웹 서비스 통합 프로젝트
- 2025학년도 IT·공학대전 학생작품 경진대회 장려상
- 작품명: 감정인식 기반 ai맛집 추천 시스템 - 와구와구 이거어때?
- 팀명: 20즈
- 팀원: 이인호, 구승율, 김영우
- 수상일: 2024.12.19
- 주최: 대구대학교 LINC3.0
- 사용자의 현재 감정 상태를 반영한 맛집 추천 서비스가 부족함
- 리뷰, 평점, 별점 정보만으로는 지금 나에게 맞는 음식 선택이 어려움
- 맛집 정보를 텍스트로만 제공하면 위치와 접근성을 직관적으로 판단하기 어려움
이를 해결하기 위해 감정 분석 기반 추천, 음식 카테고리 추천, 맛집 추천, 카카오 지도 시각화를 중심으로 서비스를 설계했습니다.
| 기능 | 설명 |
|---|---|
| 감정 분석 | KoBERT 기반 감정 분류 모델을 활용해 사용자 입력 문장의 감정을 분석 |
| 음식 추천 | 감정 분석 결과를 바탕으로 CBF 모델이 감정에 맞는 음식과 카테고리를 추천 |
| 맛집 추천 | 사용자가 선택한 카테고리를 기반으로 NCF 모델이 맛집 TOP3를 추천 |
| 지도 기반 시각화 | 카카오 지도 API를 활용해 추천 맛집의 위치를 화면에 시각적으로 표시 |
| 구분 | 기술 |
|---|---|
| Backend | Python, FastAPI |
| Frontend | React, JavaScript |
| AI / Recommendation | PyTorch, Transformers, KoBERT, CBF, NCF |
| Data | Pandas, AIHub 감정 데이터셋, Kaggle Food Choices 데이터셋, 카카오맵 크롤링 데이터 |
| External API | Kakao Map API |
| Data Processing | JSON, CSV |
사용자 감정 입력 → KoBERT 감정 분석 → CBF 음식/카테고리 추천 → 사용자 카테고리 선택 → NCF 맛집 추천 → 카카오 지도 API 기반 위치 시각화
이 구조를 통해 감정 분석 결과가 실제 맛집 추천과 지도 UI까지 이어지도록 구성했습니다.
- FastAPI 기반 백엔드 API 구성 및 프론트엔드 연동
- 결과 조회용 GET API와 사용자 입력 처리용 POST API 구현
- 사용자의 감정 입력 → 감정 분석 → 추천 결과 반환 흐름 연결
- KoBERT 감정 분석 결과를 기반으로 음식과 카테고리를 추천하는 CBF 로직 구현
- 추천 결과를 프론트엔드에서 바로 사용할 수 있도록 JSON 응답 구조 정리
- 카카오 지도 API 연동을 통해 추천 맛집 위치 시각화 구현
감정 분석, 음식 추천, 맛집 추천, 지도 연동 흐름을 각각 분리하지 않고 FastAPI 서버에서 하나의 서비스 흐름으로 연결했습니다.
사용자 입력은 POST 요청으로 전달하고, 분석 및 추천 결과는 GET/JSON 응답으로 확인할 수 있도록 구성해 프론트엔드와의 연결성을 높였습니다.
KoBERT의 감정 분석 결과를 CBF가 받아 음식과 카테고리를 추천하고, 사용자가 선택한 음식 정보는 NCF로 전달되어 최종 맛집 추천으로 이어지도록 설계했습니다.
모델 출력값을 단순히 보여주는 데서 끝나지 않고, 음식 추천과 지도 기반 맛집 탐색까지 이어지는 실제 서비스 응답 구조로 통합했습니다.
감정 분석 결과, 음식 추천 결과, 맛집 추천 결과가 각각 다른 단계에서 생성되기 때문에 프론트엔드에서 바로 사용하기 어려운 문제가 있었습니다.
이를 해결하기 위해 단계별 결과를 JSON 응답 구조로 정리하고, 프론트엔드가 그대로 소비할 수 있는 형태로 통합했습니다.
KoBERT, CBF, NCF가 각각 독립적으로 동작하면 실제 사용자 흐름으로 이어지기 어려웠습니다.
이를 해결하기 위해 감정 분석 결과를 다음 추천 단계 입력으로 넘기는 파이프라인 구조를 구성했습니다.
맛집 추천 결과만 텍스트로 제공하면 사용자가 위치를 직관적으로 이해하기 어려웠습니다.
이를 해결하기 위해 카카오 지도 API를 연동하여 추천 맛집을 지도에서 바로 확인할 수 있도록 구현했습니다.