def similarity_function(vec1,vec2, similarity):
#compute cosine similarity or other similarities
v1 = np.array(vec1)
v2 = np.array(vec2)
if len(v1)*len(v2) == 0: #any of the two is 0
global count
count +=1
return 0
else:
if similarity == 'cosine':
return cosine_similarity([v1],[v2])[0][0] #returns a double array [[sim]]
elif similarity == 'softmax':
return np.exp(np.dot(v1,v2)) #normalization is useless for relative comparisons
elif similarity == 'linear_kernel':
return linear_kernel(v1,v2)[0][0]
elif similarity == 'euclidean':
return euclidean_distances(v1,v2)[0][0]
else:
raise NameError('Choose a valid similarity function')
评论列表
文章目录