2024-1 서울여자대학교 데이터사이언스학과 전공선택 과목 '머신러닝기반데이터분석' 기말고사 프로젝트 5조: dontPERgetme
오서연 서울여대 데이터사이언스학과 3학년 sohtks@swu.ac.kr |
박서진 서울여대 데이터사이언스학과 3학년 seoj1npark@swu.ac.kr |
김수아 서울여대 데이터사이언스학과 3학년 ksua0923@swu.ac.kr |
- 프로젝트에 대해 궁금한 사항이 있으신 경우, 팀원의 이메일이나 카카오톡 오픈 채팅방을 이용해 주세요.
- 이러한 개인화된 후각 경험을 제공하는 추천 시스템이 없기 때문에, 여행자들은 여행지와의 지속적인 감정적 연결이 어려움
- 따라서, 여행지의 고유한 향기를 통해 여행의 추억을 강화하고, 감정적으로 몰입할 수 있는 새로운 패러다임의 향수 추천 시스템을 개발하고자 함
- 심리적인 효과 (프루스트 효과) 를 기반으로 새로운 향수 추천 패러다임 제시
- y: top-5 recommended perfumes
- f: our model - DPGM (Don’t PerGet Me: NMF + Cosine Similarity)
- x: perfume notes, city mood keyword, city name
- Data Acquisition → Data Preprocessing → Data Modeling → Result Publication 순으로 프로젝트가 진행되었습니다.
- 아래에 더 상세한 설명을 원하실 경우, 원하는 프로세스에 클릭해 확인 해주세요.
- 평가 기준
- 정량평가 불가능해서 정성평가 실시
- 키워드와 도시가 잘 어울리는지 평가 (팀원 상호 평가)
- 임의로 향수 선정해 그 향수가 대표하는 키워드가 무엇일지 확인
- 향수가 포함되어있는 행을 찾고, 그 행에서 키워드를 뽑아 키워드가 몇 번 나왔는지 counts해서 평가하는 방식
- 정량평가 불가능해서 정성평가 실시
+---Data
| +---Crawling
| | \---dataset
| | +---perfume-info-raw
| | +---travel-destination
| | \---url
| +---preprocess-data
| \---Prompting
| \---dataset
+---Model
| +---Visualization
| \---__pycache__
\---streamlit
+---data
+---forapp
-
Data
- Crawling
- dataset : 향수 데이터와 여행지 데이터를 담고 있음
- perfume-info-raw : 향수 정보 데이터를 담고 있음
- travel-destination : 여행지 관련 데이터를 담고 있음
- url : 향수 크롤링을 위한 url 목록을 담고 있음
- dataset : 향수 데이터와 여행지 데이터를 담고 있음
- preprocess-data : 데이터 전처리와 관련한 파일을 담고 있음
- Prompting : 프롬프팅 관련 파일을 담고 있음
- dataset : 여행지 무드, 쿼리와 관련한 파일을 담고 있음
Data는 데이터를 수집 및 전처리를 위한 레포지토리로, 크롤링, 데이터 수집, 전처리, 그리고 특정 도메인(향수 정보, 여행지 정보)에 대한 데이터가 있습니다.
- Crawling
-
Model
- Visualization : 데이터 시각화와 관련한 파일들을 담고 있음 (EDA)
Model은 데이터 분석 및 모델링 작업을 수행하기 위한 레포지토리로, 데이터 시각화, 모델링, 추천 시스템 구축 및 텍스트 전처리에 관한 파일이 있습니다.
-
streamlit
- forapp : streamlit에서 활용되는 이미지, csv 파일 저장되는 공간
streamlit은 demo를 위한 streamlit 구축을 수행하기 위한 레포지토리로, streamlit을 사용하여 향수 추천 시스템 및 여행지 정보를 제공하는 웹을 구축하기 위한 이미지 파일, 코드에 관한 파일이 있습니다.
🌐 Web: dontpergetme-recommendation.streamlit.app
-
해당 데모는 웹 페이지와 로컬로 실행하실 수 있습니다.
-
로컬로 실행할 경우, 다음 스텝을 따라해 주세요.
-
OpenAI에서 API Key를 발급 받아야 합니다.
-
API Key 발급 후, 'streamlit/forapp/’ 경로에 ‘ChatGPT_api_key.json’ 파일을 생성해 API Key를 넣어주세요.
{ "API_KEY" : "your-openai-api-key", "API_NAME" : "for-streamlit" }
-
레포지토리를 git clone 한 다음 해당 스크립트를 터미널로 실행시켜야 합니다.
streamlit run app_local.py
-
이제 local port로 실행되는 모습을 확인할 수 있습니다. 브라우저를 통해 열어야 하며, local port 링크를 따라 들어가세요.
-
- 프로젝트를 진행했던 수업이 '머신러닝 기반 데이터 분석'이었기 때문에, 주로 머신러닝만 다루고 있어 원하던 방향성으로 완벽하게 마무리 짓지 못했다는 점에 대한 아쉬움이 남았음.
- 궁극적으로 대화형 향수 추천 시스템(CRS, Conversational Recommendation System)를 할 수 있도록 프로젝트를 설계할 예정
- 직접 LLM의 체크포인트를 불러와서 실험을 진행할 예정 (ChatGPT API가 아닌, Llama 3.1과 같은 오픈소스 LLM Checkpoint 활용 예정)
- LLM과 RAG를 연결해, LLM의 답변을 통해 여행지 Mood와 비슷한 키워드를 추출
- RAG로 불러올 DB를 위해 미리 여행지와 관련된 정보들을 크롤링 할 예정
- 향수 노트들의 모음을 미리 텍스트 임베딩 시켜두고, 여행지 Mood 키워드들도 텍스트 임베딩을 시켜 유사도를 통해 추천할 향수를 추출