Return the nearest k words to the given `word`.

    Args:
      word (string): single word.
      top_k (integer): decides how many neighbors to report.

    Returns:
      A list of words sorted by the distances. The closest is the first.

    Note:
      L2 metric is used to calculate distances.

def nearest_neighbors(self, word, top_k=10):
    """Return the nearest k words to the given `word`.

    Args:
      word (string): single word.
      top_k (integer): decides how many neighbors to report.

    Returns:
      A list of words sorted by the distances. The closest is the first.

    Note:
      L2 metric is used to calculate distances.
    """
    #TODO(rmyeid): Use scikit ball tree, if scikit is available
    point = self[word]
    diff = self.vectors - point
    distances = np.linalg.norm(diff, axis=1)
    top_ids = distances.argsort()[1:top_k+1]
    return [self.vocabulary.id_word[i] for i in top_ids]