code: def _get_sent_bleu(
      hypothesis: List[str],
      references: List[List[str]],
      extra_args: Optional[Dict[str, str]] = None,
      score="score",
  ) -> List[float]:
      tokenizer = get_optional_dict(extra_args, "tokenizer", "none")
      data = [hypothesis] + references
      args = get_default_args(
          smooth_method="floor",
          tokenize=tokenizer,
          num_refs=len(references),
      )
      scorer = BLEU(args)
      scores = [
          scorer.corpus_score(
              [h], [[rr] for rr in r], use_effective_order=True
          )
          for h, *r in zip(*data)
      ]
      proj = {"score": lambda s: s.score, "bp": lambda s: s.bp}.get(
          score
      )
      return [proj(s) for s in scores]
  
file_path: vizseq/vizseq/scorers/bleu.py
imports: from concurrent.futures import ProcessPoolExecutor, as_completed
  from typing import List, Optional, Dict
  import argparse
  from sacrebleu.metrics import BLEU
  from tqdm import tqdm
  from vizseq.scorers import register_scorer, VizSeqScorer, VizSeqScore
  from vizseq._utils.optional import get_optional_dict
label_desc: Use image node_id 2 for calling a global function with example usage: _get_sent_bleu(hypothesis, references, extra_args, score) and returns: unknown