code: def testBleuLowercase(
      self, labels, predictions, lowercase, expected_score
  ):
      example = {
          constants.LABELS_KEY: labels,
          constants.PREDICTIONS_KEY: predictions,
      }
      key = metric_types.MetricKey(name=bleu._BLEU_NAME_DEFAULT)
      computation = bleu.Bleu(lowercase=lowercase).computations()[0]
      with beam.Pipeline() as pipeline:
          result = _get_result(
              pipeline, [example], computation.combiner
          )
  
          def check_result(got):
              try:
                  got_metrics = self._check_got(got, key)
                  self.assertAlmostEqual(
                      expected_score, got_metrics[key].score, places=2
                  )
  
              except AssertionError as err:
                  raise util.BeamAssertException(err)
  
          util.assert_that(result, check_result, label="result")
  
imports: from absl.testing import parameterized
  import apache_beam
  from apache_beam.testing import util
  import numpy
  import tensorflow
  import tensorflow_model_analysis
  from tensorflow_model_analysis import constants
  from tensorflow_model_analysis.eval_saved_model import testutil
  from tensorflow_model_analysis.evaluators import metrics_plots_and_validations_evaluator
  from tensorflow_model_analysis.metrics import bleu
  from tensorflow_model_analysis.metrics import metric_types
  from tensorflow_model_analysis.metrics import metric_util
  from tensorflow_model_analysis.slicer import slicer_lib
  from google.protobuf import text_format
label_desc: Use image node_id 4 for calling the BleuTest obj's underlying member method code with example usage: obj.testBleuLowercase(labels, predictions, lowercase, expected_score) without return types