working_helen

[플레이리스트 작성] 최종 유사도 분석 본문

deep daiv./추천시스템 project

[플레이리스트 작성] 최종 유사도 분석

HaeWon_Seo 2024. 1. 11. 13:04

최종 추천곡 플레이리스트를 작하는 과정에 대해 공부해본다.

 

 

1. 도서 데이터프레임 생성

 

2. 감정적 유사도 계산

1) audio feature 기반 감정 벡터 - 도서 설명 text 기반 감정 벡터

2) 노래 가사 기반 감정 벡터 - 도서 설명 text 기반 감정 벡터

 

3. 내용 유사도 계산

1) TF-IDF matrix

2) 노래 가사 키워드 벡터 - 도서 설명 text 키워드 벡터

 

4. 유사도 가중합을 통한 최종 플레이리스트 작성

1) 도서와 분위기가 유사한 추천곡 플레이리스트

2) 도서와 내용이 유사한 추천곡 플레이리스트

 


 

 

 

 

※ 예시 도서

제목 : 참을 수 없는 존재의 가벼움

저자 : 밀란 쿤데라

교보문고 링크 : https://product.kyobobook.co.kr/detail/S000000619722

 

 

 

 

 

1. 도서 데이터프레임 생성

- 사용자가 입력한 도서의 '도서명' 혹은 'isbn 번호'를 이용해 다움 API에서 도서 정보 수집

- 도서 설명 text 3가지 텍스트 전처리 진행

- 사전에 생성한 text 감정 추출 SVM 모델을 이용해 도서 설명 text 기반 감정 벡터 추출

from sklearn.feature_extraction.text import TfidfVectorizer
import joblib

## SVM 모델이 사용하는 input 형태로 변환하기 위한 과정
df = pd.read_csv(path + 'tweet_data_agumentation.csv', index_col = 0)
tfidf_vect_emo = TfidfVectorizer()
tfidf_vect_emo.fit_transform(df["content"])
total_text2 = tfidf_vect_emo.transform(pd.Series(total_text))

## 모델 load해서 사용하기
model = joblib.load(path + 'SVM.pkl')
model.predict_proba(total_text2)
sentiment = pd.DataFrame(model.predict_proba(total_text2),index=['prob']).T
sentiment['감정'] = ['empty','sadness','enthusiasm','worry','love',
            		'fun','hate','happiness','boredom','relief','anger']

 

API에서 도서 정보 수집 후 데이터프레임
3가지 도서 설명 text 텍스트 전처리 후 데이터프레임
도서 설명 text 기반 감정 벡터

 

 

 

 

 

2. 감정적 유사도 계산

1) audio feature 기반 감정 벡터 - 도서 설명 text 기반 감정 벡터

- 사전에 인공신경망 모델로 생성한 'audio feature 기반 감정 벡터' 데이터프레임에

- '도서 설명 text 기반 감정 벡터' 열을 추가한 데이터프레임 생성

- 데이터프레임 내 행들 간 코사인 유사도 계산

audio feature 기반 감정과의 코사인 유사도 결과 행렬

 

 

 

2) 노래 가사 기반 감정 벡터 - 도서 설명 text 기반 감정 벡터

- 사전에 SVM 모델로 생성한 '노래 가사 기반 감정 벡터' 데이터프레임에

- '도서 설명 text 기반 감정 벡터' 열을 추가한 데이터프레임 생성

- 데이터프레임 내 행들 간 코사인 유사도 계산

노래 가사 감정과의 코사인 유사도 결과 행렬

 

 

 

 

 

3. 내용 유사도 계산

1) TF-IDF matrix 생성

- 텍스트 전처리를 거친 각 노래 가사 text 데이터프레임에

- 텍스트 전처리를 거친 도서 설명 text 열을 추가한 데이터프레임 생성

- 데이터프레임 내 텍스트들의 TF-IDF matrix 생성

생성된  TF-IDF matrix

 

 

2) 노래 가사 키워드 벡터 - 도서 설명 text 키워드 벡터

- TF-IDF matrix 내 행들 간 코사인 유사도 계산

노래 가사 내용과의 코사인 유사도 결과 행렬

 

 

 

 

4. 유사도 가중합을 통한 최종 플레이리스트 작성

  • audio_sim : audio feature 기반 감정과의 코사인 유사도
  • lyrics_sim : 노래 가사 감정과의 코사인 유사도
  • keyword_sim : 노래 가사 내용과의 코사인 유사도

 

1) 도서와 분위기가 유사한 추천곡 플레이리스트

- 유사도 가중합 = 0.8*audio_sim + 0.1*lyrics_sim + 0.1*keyword_sim

total_sim  = 0.8*audio_sim + 0.1*lyrics_sim + 0.1*keyword_sim

 

- 추천곡 TOP5 결과

 

 

 

2) 도서와 내용 유사한 추천곡 플레이리스트

- 유사도 가중합 = 0*audio_sim + 0.5*lyrics_sim + 0.5*keyword_sim

total_sim_2  = 0*audio_sim + 0.5*lyrics_sim + 0.5*keyword_sim

 

- 추천곡 TOP5 결과