본문 바로가기
DEV/Web 개발

파이썬/머신러닝 웹 프로그래밍 :: 11월 첫째주 WIL #10

by 올커 2022. 11. 7.

 

■ 개발일지 WIL #10


1. FACTS

- Django Rest Framework(DRF) 프로젝트 진행
 : Django Rest Framework 강의를 마무리하고 추천서비스 프로젝트를 진행한다.

 : 추천 서비스 주제는 '사용자가 원하는 노래 리스트를 추천하는 서비스' 이다.

 : 추천받은 노래는 플레이리스트로 관리할 수 있다.

 : 이번에는 프론트엔드와 백엔드를 구분하여 json 파일을 serializer를 통해 변형하여 자료를 전달하는 방식으로 진행될 예정이다.

 

- 추천 시스템
: 추천 시스템을 활용한다. 유저기반 협업 필터링/아이템 기반 협업필터링으로 구분하여 사용한다.

: 판다스, 넘파이를 통해 추천시스템을 구성할 때 데이터프레임을 활용하고, 사이킷런을 불러와서 코사인 유사도를 사용하였다. 노래 추천시스템은 아이템 기반 협업 필터링의 구조로 사용된다.

: 이번 프로젝트에서는 추가로 TF-IDF(Term Frequency - Inverse Document Frequency)라는 기능을 사용했다. 이는 언어 데이터를 분석하여 유사도를 판별하는데 많이 사용되는 기술이다.

# lyrics에 대해서 tf-idf(Term Frequency - Inverse Document Frequency) 수행
tfidf = TfidfVectorizer()
tfidf_matrix = tfidf.fit_transform(data['lyrics'])

cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix)      # 코사인 유사도 계산
indices = pd.Series(data.index, index=data['title']).drop_duplicates()      # 노래 타이틀과 인덱스 받아오기

 


2. FEELINGS

: 생각외로 추천기능 함수를 구성하는 것은 조금의 난관은 있었으나 재미있게 구성할 수 있었다.

: 하지만 이를 백엔드에 구성하여 프론트엔드와 데이터를 넘겨주는 방식으로 사용하는 것이 익숙하지 않은 문제가 있었다.

  즉, 백엔드에서 코드를 통해 명령이나 데이터를 프론트 엔드로 주는 것은 알겠지만, 거꾸로 프론트엔드에서 요청하는 것이 감이 잡히지 않았다. 도움을 주시는 튜터님들도 주로 벡엔드를 하고계셨기 때문에 질문할 때에도 오랜 시간 고전했지만, 아직 해답을 찾지 못한 것들이 많다.


3. FINDINGS

: ajax문법을 다시 사용해볼 수 있는 계기가 되었지만, 거꾸로 코드 수행 순서에 문제가 생겨 되돌아가고 있다. 정확하진 않지만 ajax 코드 수행하는 순서가 일반 javascript와 다른지 싶다. 확인해볼 문제이다.

 


 

4. FUTURE

 - 프론트 엔드에서 백엔드로 자료 전송 및 요청하는 구조 다시 확인하고 프로젝트 마무리할 것

 - javascript 그리고 ajax 문법 다시 확인해볼 것

반응형

댓글