Skip to content

ezeut/data-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

음화당 : 음악을 좋아하는 당신께, 이 영화를 드려요.

  • 음악적 요소 기반의 영화 추천 서비스 입니다.

1. 프로젝트 소개

  • 웹서비스에 대한 자세한 개요 : 영화 타이틀곡의 음악적 요소를 기반으로 데이터 분석을 하여 영화를 추천해주는, 음악적 요소 기반 영화 추천 서비스 입니다.
  • 코로나로 인해 부정적인 감정이 증가했다는 통계 결과가 있습니다. 보통 스트레스를 받거나 슬픈 감정을 바꾸고 싶을 때 음악을 많이 듣는다는 통계 결과가 있습니다. 이 통계 결과에서 착안해 유저의 기분과 듣고 싶은 음악을 받아 유사한 음악이 있는 영화를 추천해주는 서비스를 만들고자 하였습니다.
  • 평소에 음악을 즐겨 듣는, 특히 영화에서의 음악을 중시하는 사용자가 저희 서비스의 주요 대상입니다.
  1. 유저는 다섯가지의 서로 다른 분위기 영화 타이틀곡 중에 하나를 선택하게 되며, 저희는 그 타이틀곡들이 속해있는 영화의 장르로 데이터베이스를 한번 필터링 합니다.
  2. 그 다음, 유저가 현재 느끼는 감정 (혹은 유저가 원하는 무드)과 음악의 템포를 입력하게 되면, 저희는 그것을 기반으로 데이터베이스를 한번 더 필터링 합니다. 음악적 요소들은 다음과 같습니다: energy, danceability, valence, tempo
  3. 다음으로, 유저는 영화 음악을 선택하게 되고, 저희는 그 영화가 가진 음악 요소들을 이용해 데이터 분석을 해서 유저가 선택한 영화와 가장 비슷한 영화, 두번째, 세번째, 네번째로 비슷한 영화들을 추천해 줍니다. 데이터 분석에 사용되는 음악적 요소들은 다음과 같습니다 : acousticness, danceability, energy, tempo, valence, instrumentalness, liveness, loudness, speechiness

2. 프로젝트 개요

  • 영화의 분위기와 영화의 타이틀곡의 분위기는 상당히 비슷할 것이라는 가정으로 시작합니다.
  • 영화에서 사용된 음악을 기반으로 영화를 추천해 주기에, 평소에 음악을 즐겨 들으시거나 영화에서의 음악이 차지하는 비중이 크다는 믿음이 있으신 유저에게 유용한 솔루션입니다.
  • 추천은 보통 추천 받는 사람과 추천 해 주는 사람의 주관에 따라 굉장히 다른 만족을 줍니다. 하지만 데이터를 분석하여 그 결과를 추천해 준다면, 가능한 최대한 객관적인 추천이 될 수 있습니다. 개개인에 최적화 되었다기보다는 많은 사람에게 만족스러운 결과를 주는 것을 목표로 했습니다.

3. 데이터 분석 알고리즘

  • 우리가 배운 기술들 중에 어떤 기술이 논리적으로 가장 객관적인 추천을 해 줄 수 있을까? 생각하다가 K-means clustering으로 결정하게 됐습니다. 영화가 장르로 구분이 되는 것처럼 영화 음악 또한 비슷한 음악끼리 묶일 수도 있다는 가설을 설정하였습니다. 가설을 검증하기 위해선 분류가 필요했고 데이터에 대한 사전 정보가 필요하지 않으며 사전에 특정 변수에 대한 역할 정의 필요 없이 관찰 데이터의 거리만이 분석에 필요하다는 점에서 K-means clustering으로 결정하게 되었습니다.
  • 가설 : 영화가 장르로 구분이 되는 것처럼 영화 음악 또한 비슷한 음악끼리 묶일 수도 있다.
  • K-means clustering으로 모든 음악을 군집으로 나누고 Euclidean distance를 이용해 가장 가까운 거리의 영화를 찾는다.
  • 9개의 features(acousticness, danceability, energy, tempo, valence, instrumentalness, liveness, loudness, speechiness)를 사용해 K-means clustering을 진행한다.
    • Elbow method를 통해 k값을 결정하고, pca와 t-sne를 통해 군집이 잘 됐는지 확인한다.
    • 군집이 잘 됐다면 cluster별로 어떤 특징이 있는지 확인한다.
    • Euclidean distance로 가장 가까운 거리의 영화를 찾는다.

4. 기술 스택

프론트엔드

  • react, axios, styled-components, recoil 라이브러리 : react-background-video-player, "@mui/material, antd

백엔드

  • flask, flask_sqlalchemy, flask_cors, flask_migrate, dotenv

데이터 분석

  • Pandas, Scikit-learn, BeautifulSoup, Spotipy, Matplotlib

5. 프로젝트 기능 설명

  • 영화를 음악을 기준으로 분석한, 새로운 시각의 추천을 해 줍니다.
  • 음악 미리듣기 기능으로 단순히 음악의 장르를 선택하는 것 대신, 그 곡의 분위기를 잘 느끼고 선택할 수 있습니다.
  • 유저의 현재 기분으로 음악을 필터링하고 내가 선택한 음악을 기준으로 유사한 음악을 가진 영화를 추천받을 수 있습니다.
  • 유저가 선택한 영화와 추천으로 나온 영화가 얼마나 음악적으로 유사한지를 보여주는 레이더 플롯을 제공합니다.

6. 프로젝트 구성도

7. 프로젝트 팀원 역할 분담

이름 담당 업무
이호준 프론트엔드 개발
백정하 백엔드 개발, 팀장
정진묵 백엔드 개발
이보연 데이터 분석
이지은 데이터 분석

멤버별 responsibility

  1. 팀장
  • 일정 및 의견 조율
  • 발표 준비
  1. 프론트엔드
  • react 기반 화면 구현
  • css 적용
  • API 연동
  1. 백엔드
  • 데이터베이스 스키마 구성
  • 제공받은 데이터 데이터베이스에 입력
  • API 작성, 연동
  • 배포
  1. 데이터 분석
  • 기획 단계: 웹 서비스 프로젝트 주제에 맞는 모델 및 알고리즘 설정, 모델과 알고리즘에 적합한 데이터셋 수집
  • 개발 단계: 데이터 전처리, 분류 모델 적용, 적용된 모델을 바탕으로 유사도 측정
  1. 팀 전체
  • 프로젝트의 기획이나 CSS 등, 합의가 필요한 부분들은 모두가 함께 참여하였습니다.

8. 버전

  • 1.0.0

9. FAQ

  • 자주 받는 질문 정리

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •