Example #1
0
# function to find the similarity between one track 
# and all other tracks, returns top 5 tracks

# uses scipy correlation() function to calculate similarity

# author: Taylor Keppler

import trim2
import math
import scipy.spatial.distance as dis

allSongsDict = trim2.makeGenomes()

def getSimilarity(baseDict, tidDict):
    # generates vectors for two tracks to be used in similarity function
    #returns similarity between base vector and track vector    
    
    baseVector = []
    tidVector = []
    
    if len(baseDict) >= len(tidDict) :
        for (k,v) in baseDict.iteritems():
            baseVector.append(v)
            if k in tidDict:
                tidVector.append(tidDict[k])
            else:
                tidVector.append(0)
    else:
        for (k,v) in tidDict.iteritems():
            tidVector.append(v)
            if k in baseDict:
Example #2
0
# Author: Taylor Keppler
# Critique Recommender
# file will be used to, given a track and a tag, return tracks similar to the track, 
# similar to that track but more *tag*, and similar to that track but less *tag*

# currently these functions work less than ideally. Asking for more or less *tag*
# often returns similar songs. To fix this we would create a better metric of adding
# or subtracting tag values resulting in a more effective critique.

import trim2 
import calcSimilarity
import ChosenTags as CT
import get_metadata as getMB

songDict = trim2.makeGenomes()

def initialSims(tid):
    # returns original top 5 similar songs for a given track
    baseGenome = songDict[tid]
    return calcSimilarity.allCorrelations(baseGenome)

def critiqueTagMore(baseDict, tag):
    #given a tag, return songs that are similar to inputed tag vector, but more *tag*    
    newBase = baseDict
    if not baseDict.has_key(tag):
        newBase[tag] = 15
    else:
        newBase[tag] += 15
    return calcSimilarity.allCorrelations(newBase)

def critiqueTagLess(baseDict, tag):