code: def _compute(
      self,
      predictions,
      references,
      tokenizer=Tokenizer13a(),
      max_order=4,
      smooth=False,
  ):
      # if only one reference is provided make sure we still use list of lists
      if isinstance(references[0], str):
          references = [[ref] for ref in references]
  
      references = [[tokenizer(r) for r in ref] for ref in references]
      predictions = [tokenizer(p) for p in predictions]
      score = compute_bleu(
          reference_corpus=references,
          translation_corpus=predictions,
          max_order=max_order,
          smooth=smooth,
      )
      (
          bleu,
          precisions,
          bp,
          ratio,
          translation_length,
          reference_length,
      ) = score
      return {
          "bleu": bleu,
          "precisions": precisions,
          "brevity_penalty": bp,
          "length_ratio": ratio,
          "translation_length": translation_length,
          "reference_length": reference_length,
      }
  
imports: import datasets
  import evaluate
  from .nmt_bleu import compute_bleu
  from .tokenizer_13a import Tokenizer13a
label_desc: Use image node_id 2 for calling the Bleu obj's underlying member method code with example usage: obj._compute(predictions, references, tokenizer, max_order, smooth) and returns: dict