code: def evaluate_similarity(args, token_embedding, ctx, logfile=None,
                          global_step=0):
      
  
      results = []
      for similarity_function in args.similarity_functions:
          evaluator = nlp.embedding.evaluation.WordEmbeddingSimilarity(
              idx_to_vec=token_embedding.idx_to_vec,
              similarity_function=similarity_function)
          evaluator.initialize(ctx=ctx)
          if not args.no_hybridize:
              evaluator.hybridize()
  
          # Evaluate all datasets
          for (dataset_name, dataset_kwargs,
               dataset) in iterate_similarity_datasets(args):
              initial_length = len(dataset)
              dataset_coded = [[
                  token_embedding.token_to_idx[d[0]],
                  token_embedding.token_to_idx[d[1]], d[2]
              ] for d in dataset if d[0] in token_embedding.token_to_idx
                               and d[1] in token_embedding.token_to_idx]
              num_dropped = initial_length - len(dataset_coded)
  
              # All words are unknown
              if not len(dataset_coded):
                  correlation = 0
              else:
                  words1, words2, scores = zip(*dataset_coded)
                  pred_similarity = evaluator(
                      mx.nd.array(words1, ctx=ctx), mx.nd.array(words2, ctx=ctx))
                  sr = stats.spearmanr(pred_similarity.asnumpy(),
                                       np.array(scores))
                  correlation = sr.correlation
  
              logging.info(
                  'Spearman rank correlation on %s (%s pairs) %s with %s:\t%s',
                  dataset.__class__.__name__, len(dataset_coded),
                  str(dataset_kwargs), similarity_function, correlation)
  
              result = dict(
                  task='similarity',
                  dataset_name=dataset_name,
                  dataset_kwargs=dataset_kwargs,
                  similarity_function=similarity_function,
                  spearmanr=correlation,
                  num_dropped=num_dropped,
                  global_step=global_step,
              )
              log_similarity_result(logfile, result)
              results.append(result)
  
      return results
docs: Evaluate on specified similarity datasets.