def test_get_similarity_tuples(self): keyword = k.Keyword('dog') raw_score = np.float32(0.1234) similarity = s.Similarity( k.Keyword('cat'), s.SimilarityScore(raw_score)) similarities = s.Similarities([similarity]) actual = s.SimilarKeywords( keyword, similarities).get_similarity_tuples() self.assertEqual(actual, [('cat', raw_score)])
def test_write_similar_kewyords(self): keyword = k.Keyword('test') similarity = si.Similarity(k.Keyword('flower'), si.SimilarityScore(np.float32(0.1))) similarities = si.Similarities([similarity]) similar_keywords = si.SimilarKeywords(keyword, similarities) similarities_iterator = iter([similar_keywords]) self.target.write_similar_keywords(similarities_iterator) with open(self.filename) as f: actual = [line.strip() for line in f.readlines()] expected = ['keyword,neighbor 1,similarity 1', 'test,flower,0.1'] self.assertEqual(actual, expected)
def test_create_from_tuples(self): score = np.float32(0.2) similarities = iter([('a', score)]) actual = s.Similarities.create_from_tuples(similarities) self.assertEqual(actual, s.Similarities( [s.Similarity(k.Keyword('a'), s.SimilarityScore(score))]))
def test_is_acknowledged_keyword(self): """Accept Keyword value.""" self.query_keyed_vectors.__contains__.return_value = True raw_keyword = 'キーワード' keyword = k.Keyword(raw_keyword) actual = self.target.is_acknowledged(keyword) self.assertTrue(actual) self.assertEqual(self.query_keyed_vectors.__contains__.call_args_list, [call(raw_keyword)])
def test_to_query_vectors_multi(self): query = q.Query([k.Keyword('a'), k.Keyword('quick')]) def contains(k): return True def getitem(k): if k == 'a': return np.array([0.1, 0.2, 0.3]) if k == 'quick': return np.array([0.3, 0.2, 0.1]) self.query_keyed_vectors.__contains__.side_effect = contains self.query_keyed_vectors.__getitem__.side_effect = getitem actual = self.target._to_query_vectors(query) self.assertEqual(actual.shape, (2, 3)) self.assertTrue( (np.linalg.norm(actual, ord=2, axis=1) - np.array([1.0, 1.0]) < 0.001).all())
def test_to_query_vectors_one(self): """_to_query_vectors can handle a query with one keyword.""" query = q.Query([k.Keyword('a')]) def contains(k): return True def getitem(k): if k == 'a': return np.array([0.1, 0.2, 0.3]) self.query_keyed_vectors.__contains__.side_effect = contains self.query_keyed_vectors.__getitem__.side_effect = getitem actual = self.target._to_query_vectors(query) self.assertEqual(actual.shape, (1, 3)) np.testing.assert_approx_equal(np.linalg.norm(actual, ord=2, axis=1), np.array([1.0]))
def test_rank(self, to_embedding_document, to_query_vectors): query = q.Query([k.Keyword('a')]) document = d.Document(['a', 'quick']) self.assertEqual(self.target.rank(query, document), si.SimilarityScore(np.float32(14.0)))