def testWeightedCosSim(self): self.assertAlmostEqual(weightedCosSim(Vector([1, 1]).data, Vector([1, 1]).data, [1, 1]), 1) self.assertAlmostEqual(weightedCosSim(Vector([1, 1]).data, Vector([1, -1]).data, [1, 1]), 0) self.assertAlmostEqual(weightedCosSim(Vector([0, 0.25]).data, Vector([1, 1]).data, [1, 1]), math.sqrt(0.5)) assert weightedCosSim(Vector([0, 0]).data, Vector([1, 1]).data, [0, 0]) == 0 assert weightedCosSim(Vector([2, 12]).data, Vector([13, 15]).data, [0, 0]) == 0 self.assertRaises(TypeError, lambda: weightedCosSim(Vector([1, 1, 1]).data, Vector([1, 1]).data, [1, 1])) self.assertRaises(TypeError, lambda: weightedCosSim(Vector([1, 1]).data, Vector([1, 1]).data, [1, 1, 1])) print '\nPassed WeightedCosSim tests!'
def get_sim(self, vector1, vector2): try: sim = weightedCosSim(vector1.data, vector2.data, self.weights) if self.subtractMean: sim -= MEAN_WEIGHTED_COSINE if self.divideByStdDev: sim /= STD_DEV_WEIGHTED_COSINE return sim except StandardError: # if len(vector1) != len(vector2) or len(self.weights) != len(vector1): # raise Exception("differing vector lengths") return 0