def get_similar_vector(self, match_vector, match_type, num_similar,
oversample, normalize):
"""Get similar items from an input vector."""
if not match_vector:
return []
# search_k defaults to n * n_trees in Annoy - multiply by oversample
# don't allow oversample to go below 1, this causes errors in Annoy
if oversample < 1:
oversample = 1
search_k = int(num_similar * self._annoy_objects[match_type]._ntrees *
oversample)
similar_items = self._annoy_objects[match_type].get_nns_by_vector(
match_vector, num_similar, search_k)
# compute inner products, and sort
scores = self.get_scores_vector(
match_vector, match_type, similar_items, normalize)
scores = sorted(scores, key=lambda k: k['score'], reverse=True)
return scores[:num_similar]
评论列表
文章目录