24.03.11 #62일차 (DB)

신규섭·2024년 3월 11일
0

개인 프로젝트

목록 보기
9/20

프로젝트 주요 기능 구현 시도(추천 알고리즘)

커뮤니티, 프로필, 뉴스 페이지 등 남은 퍼블리싱과 전반적은 CRUD 기능은 시간만 투자한다면 가능한 부분이고 배웠던 기능들이니 내 프로젝트에 중요한 기능들을 구현하려는 시도를 해보자.

  • 패션 & 음악 페이지 주요 기능
    • DB 기반 음악 장르, 패션 아이템 추천

음악 장르와 패션 스타일을 추천 해주는 기능을 만드려고 한다.
큰 범주로 봤을때는 음악 장르와 패션 스타일이지만
사실 음악 플레이리스트의류를 추천해 주는 것이 더 바람직하다.
웹에서 유저에게 추천을 해 주려면 어떤것이 필요할까?

  • 방법 1. 모든 음악 데이터의류 데이터를 DB저장하고 저장된 데이터를 기반으로 추천 로직을 구현.

    • 유저에게 데이터 기반 아이템을 장르별로 모두 보여주고 웹에서 지정한 갯수의 아이템을 선택하고 선택된 아이템을 기반으로 중복된 장르와 스타일의 아이템과 비슷한 아이템 추천.

      • 장점 - 로직을 구현 하기 위한 데이터가 DB에 저장 되어있고, 데이터를 기반으로 아이템을 서로 연결 후 추천 가능.
      • 단점 - 활용할 모든 데이터를 직접 DB에 저장해야 하고 아이템의 수량이 한정적임.
        꾸준히 데이터를 업데이트 해주어야 하고 데이터가 추가 될 때 마다 수정 해야함.
    • MYSQL 데이터 영화 추천 API 참고

      • 장르의 출현 빈도를 파악하는 Map 생성
      • Map의 값을 내림차순으로 정렬하는 메서드 생성
        • 가장 많이 선택된 장르 1, 2 두 가지만 사용하여 매칭 되는 정보를 받아옴
      • 정렬된 Map에서 가장 많이 선택된 장르 두 개를 넣어서 반환해주는 메서드 생성
    • 추천 시스템 알고리즘

  • 유저의 데이터를 참고하여 추천 해 줄 수 있는 정보는?

    • 유저의 음악, 패션 선호도
    • 나이, 성별
  • 데이터를 참고 하지 않고 추천 해 줄 수 있는 방법

    • 최신으로 유행하는 아이템 랜덤 추천

데이터 연결 테스트

데이터 연동 테스트를 위해 캐글에서 받아온 csv 파일을 SQLyog와 연동하는 작업을 진행했다.

csv 파일에 필요한 데이터를 직접 가공하여 노래 제목, 아티스트명, 장르로 나누었다.
데이터를 DB에 저장하기 위해 sql에서 csv파일을 가져오는 시도를 했다.

  • 처음에 무작정 파일을 불러오려고 하니 다양한 오류가 나를 반갑게 맞이해 주었다. ^-^

  • 컬럼이 다음 컬럼으로 넘어갈 조건을 ,콤마로 지정해주고 테이블의 컬럼 갯수도 맞춰주고 문자 인코딩도 UTF8로 맞춰주었다.
  • 여기를 참고했다. csv파일 sqlyog로 불러오기

  • 정상적으로 데이터를 불러오기 성공

  • 웹에서 DB 데이터 가져오기 성공

방법 2. 유저의 선호도를 기반으로 비슷한 장르의 랜덤 아이템 추천

고민

음악, 패션 관련 데이터를 DB에 저장할지, Spring 환경 내부에서 직접 CSV 파일을 연동할지.

생각해볼것

  • 의류 카테고리와 데이터는 크롤링을 이용해보자.
    음악 플레이리스트는 API를 활용해보자.

  • 카테고리는 나누었으니 서로 엮을 수 있는 로직 구현 생각.

    • 사진 선택하기, 음악 선택하기

로컬저장소의 이미지 불러오기
외부경로 이미지 불러오기
이미지 불러오기

랜덤 숫자 생성

0개의 댓글