def relevant_moods(song):
"""
:param song: single song document, taken from a previously filled queue
:return moods: list of relevant moods
"""
all_moods = song['moods']
if len(all_moods) == 0:
return None
ordered_score_moods = sorted(all_moods.items(), key=lambda x: x[1], reverse=True)
# pprint(ordered_score_moods)
ordered_scores = sorted(all_moods.values(), reverse=True)
# print(ordered_scores)
features = np.asarray(ordered_scores)
codebook, distortion = kmeans(features, 2)
codebook = sorted(codebook.tolist(), reverse=True)
moods = []
for m in ordered_score_moods:
mood = m[0]
score = m[1]
if len(codebook) > 1:
if abs(score - codebook[0]) < abs(score - codebook[1]):
moods.append(mood)
else:
continue
else:
moods.append(mood)
# print(moods)
return moods
# ### Quering the DB to retrieve the songs moods
# create a shared queue for all songs
moods_affinity.py 文件源码
python
阅读 22
收藏 0
点赞 0
评论 0
评论列表
文章目录