working_helen
[플레이리스트 작성] 최종 유사도 분석 본문
최종 추천곡 플레이리스트를 작하는 과정에 대해 공부해본다.
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']
2. 감정적 유사도 계산
1) audio feature 기반 감정 벡터 - 도서 설명 text 기반 감정 벡터
- 사전에 인공신경망 모델로 생성한 'audio feature 기반 감정 벡터' 데이터프레임에
- '도서 설명 text 기반 감정 벡터' 열을 추가한 데이터프레임 생성
- 데이터프레임 내 행들 간 코사인 유사도 계산
2) 노래 가사 기반 감정 벡터 - 도서 설명 text 기반 감정 벡터
- 사전에 SVM 모델로 생성한 '노래 가사 기반 감정 벡터' 데이터프레임에
- '도서 설명 text 기반 감정 벡터' 열을 추가한 데이터프레임 생성
- 데이터프레임 내 행들 간 코사인 유사도 계산
3. 내용 유사도 계산
1) TF-IDF matrix 생성
- 텍스트 전처리를 거친 각 노래 가사 text 데이터프레임에
- 텍스트 전처리를 거친 도서 설명 text 열을 추가한 데이터프레임 생성
- 데이터프레임 내 텍스트들의 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 결과
'deep daiv. > 추천시스템 project' 카테고리의 다른 글
[웹페이지 구현] Streamlit 웹페이지 구현 / 공모전 제출 (0) | 2024.01.12 |
---|---|
[text 감정 추출 모델] SVM 모델 학습 / text 감정 추출 결과 (0) | 2024.01.08 |
[text 감정 추출 모델] Data Augmentation 데이터 증강 (0) | 2024.01.06 |
[text 감정 추출 모델] 텍스트 전처리 / Goolgetrans 번역 API (0) | 2023.09.18 |
[Audio feature 군집화] Spotify Song Clustering with k-means (0) | 2023.09.16 |