docs: def evaluate_and_log_bleu(estimator, bleu_writer, bleu_source, bleu_ref):
    """Calculate and record the BLEU score."""
    subtokenizer = tokenizer.Subtokenizer(
        os.path.join(FLAGS.data_dir, FLAGS.vocab_file))
  
    uncased_score, cased_score = translate_and_compute_bleu(
        estimator, subtokenizer, bleu_source, bleu_ref)
  
    print("Bleu score (uncased):", uncased_score)
    print("Bleu score (cased):", cased_score)
  
    summary = tf.Summary(value=[
        tf.Summary.Value(tag="bleu/uncased", simple_value=uncased_score),
        tf.Summary.Value(tag="bleu/cased", simple_value=cased_score),
    ])
  
    bleu_writer.add_summary(summary, get_global_step(estimator))
    bleu_writer.flush()
    return uncased_score, cased_score