Emotions and Music 8
2022. 7. 5. 23:49ㆍProject/감정분석과 노래 추천
728x90
반응형
코드
- 코사인 유사도로 상황과 노래가사가 가장 비슷한 노래 추천
def cosine(name, music, sentences):
music = music.append({'artist_name':name, "song_name":name, "lyrics" : sentences}, ignore_index=True)
tfidf = TfidfVectorizer(analyzer='char', ngram_range=(1,3), smooth_idf=True, sublinear_tf=True)
tfidf_matrix = tfidf.fit_transform(music["lyrics"] )
cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix)
title_to_index = dict(zip(music["song_name"], music.index))
def get_recommendations(title, cosine_sim=cosine_sim):
idx = title_to_index[title]
sim_scores = list(enumerate(cosine_sim[idx]))
sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
sim_scores = sim_scores[1:6]
music_list = [(music['artist_name'].iloc[idx[0]], music['song_name'].iloc[idx[0]]) for idx in sim_scores]
return music_list
return get_recommendations(name)
참고
1) 코사인 유사도(Cosine Similarity)
BoW에 기반한 단어 표현 방법인 DTM, TF-IDF, 또는 뒤에서 배우게 될 Word2Vec 등과 같이 단어를 수치화할 수 있는 방법을 이해했다면 이러한 표현 방법에 대 ...
wikidocs.net
텍스트 유사도 Text Similarity 개요
두 단어 혹은 두 문장이 주어졌을 때, 유사도를 어떻게 측정할 수 있을까? 대표적인 Text Similarity 측정 metric인 Cosine Similarity와 Jaccard Similarity를 통해 측정할 수 있을 것이다. 1. Jaccard Similari..
simonezz.tistory.com
728x90
반응형
'Project > 감정분석과 노래 추천' 카테고리의 다른 글
Emotions and Music 10 (0) | 2022.07.07 |
---|---|
Emotions and Music 9 (1) | 2022.07.06 |
Emotions and Music 7 (0) | 2022.07.04 |
Emotions and Music 6 (0) | 2022.07.03 |
Emotions and Music 5 (0) | 2022.07.03 |