code: def neighbours(self, word, size = 10):
          
          word = word.strip()
          v = self.word_vec(word)
          [distances], [points] = self.kdt.query(array([v]), k = size, return_distance = True)
          assert len(distances) == len(points), "distances and points should be in same shape."
          words, scores = [], {}
          for (x,y) in zip(points, distances):
              w = self.index2word[x]
              if w == word: s = 1.0
              else: s = cosine(v, self.syn0[x])
              if s < 0: s = abs(s)
              words.append(w)
              scores[w] = min(s, 1.0)
          for x in sorted(words, key=scores.get, reverse=True):
              yield x, scores[x]
docs: Get nearest words with KDTree, ranking by cosine distance