code: def evaluate(args, embedding, vocab, global_step, eval_analogy=False):
      
      if 'eval_tokens' not in globals():
          global eval_tokens
  
          eval_tokens_set = evaluation.get_tokens_in_evaluation_datasets(args)
          if not args.no_eval_analogy:
              eval_tokens_set.update(vocab.idx_to_token)
  
          if not args.ngram_buckets:
              # Word2Vec does not support computing vectors for OOV words
              eval_tokens_set = filter(lambda t: t in vocab, eval_tokens_set)
  
          eval_tokens = list(eval_tokens_set)
  
      if not os.path.isdir(args.logdir):
          os.makedirs(args.logdir)
  
      # Compute their word vectors
      context = get_context(args)
      mx.nd.waitall()
  
      token_embedding = nlp.embedding.TokenEmbedding(unknown_token=None,
                                                     allow_extend=True)
      token_embedding[eval_tokens] = embedding[eval_tokens]
  
      results = evaluation.evaluate_similarity(
          args, token_embedding, context[0], logfile=os.path.join(
              args.logdir, 'similarity.tsv'), global_step=global_step)
      if eval_analogy:
          assert not args.no_eval_analogy
          results += evaluation.evaluate_analogy(
              args, token_embedding, context[0], logfile=os.path.join(
                  args.logdir, 'analogy.tsv'))
  
      return results
docs: Evaluation helper