docstr: Get the most similar entries in the table. If more than one key is
  provided, the average of the vectors is used.
  
  keys (unicode / int / iterable): The string or integer key(s) to compare to.
  n (int): The number of similar keys to return.
  batch_size (int): The batch size to use.
  RETURNS (list): The (key, score) tuples of the most similar vectors.
docstr_tok: ["Get","the","most","similar","entries","in","the","table",".","If","more","than","one","key","is","provided",",","the","average","of","the","vectors","is","used",".","keys","(","unicode","\/","int","\/","iterable",")",":","The","string","or","integer","key","(","s",")","to","compare","to",".","n","(","int",")",":","The","number","of","similar","keys","to","return",".","batch_size","(","int",")",":","The","batch","size","to","use",".","RETURNS","(","list",")",":","The","(","key",",","score",")","tuples","of","the","most","similar","vectors","."]
code: def most_similar(
      self,
      keys: Union[Sequence[Union[str, int]], str, int],
      n: int = 10,
      batch_size: int = 16,
  ) -> List[Tuple[str, float]]:
      """Get the most similar entries in the table. If more than one key is
      provided, the average of the vectors is used.
  
      keys (unicode / int / iterable): The string or integer key(s) to compare to.
      n (int): The number of similar keys to return.
      batch_size (int): The batch size to use.
      RETURNS (list): The (key, score) tuples of the most similar vectors.
      """
      if isinstance(keys, (str, int)):
          keys = [keys]
      for key in keys:
          if key not in self:
              raise ValueError(f"Can't find key {key} in table")
      if self.cache and self.cache["indices"].shape[1] >= n:
          n = min(len(self.vectors), n)
          key = self.ensure_int_key(key)
          key_row = self.vectors.find(key=key)
          if key_row < self.cache["indices"].shape[0]:
              rows = self.cache["indices"][key_row, :n]
              scores = self.cache["scores"][key_row, :n]
              entries = zip(rows, scores)
              entries = [
                  (self.strings[self.row2key[r]], score)
                  for r, score in entries
                  if r in self.row2key
              ]
              return entries
      # Always ask for more because we'll always get the keys themselves
      n = min(len(self.vectors), n + len(keys))
      rows = numpy.asarray(self.vectors.find(keys=keys))
      vecs = self.vectors.data[rows]
      average = vecs.mean(axis=0, keepdims=True)
      result_keys, _, scores = self.vectors.most_similar(
          average, n=n, batch_size=batch_size
      )
      result = list(zip(result_keys.flatten(), scores.flatten()))
      result = [
          (self.strings[key], score) for key, score in result if key
      ]
      result = [
          (key, score) for key, score in result if key not in keys
      ]
      return result
  
imports: from typing import Tuple, List, Union, Sequence, Dict, Callable, Any
  from pathlib import Path
  from spacy.vectors import Vectors
  from spacy.strings import StringStore
  from spacy.util import SimpleFrozenDict
  from thinc.api import NumpyOps
  import numpy
  import srsly
  from .util import registry, cosine_similarity
label_desc: Use image node_id 20 for calling the Sense2Vec obj's underlying member method code with example usage: obj.most_similar(keys, n, batch_size) and returns: result, entries