code: def get_top_non_invalid(self, beam: List[str]) -> str:
      beam_tokens: List[List[str]] = list(
          map(lambda pred: pred.split(), beam)
      )
      non_invalid = filter_invalid_beams(beam_tokens)
      if len(non_invalid) > 0:
          return " ".join(non_invalid[0])
      else:
          return beam[0]
  
imports: from collections import defaultdict
  from typing import Dict, List
  import numpy
  from pytext.common.constants import Stage
  from pytext.data.tensorizers import Tensorizer
  from pytext.metric_reporters.channel import ConsoleChannel
  from pytext.metric_reporters.compositional_metric_reporter import CompositionalMetricReporter
  from pytext.metric_reporters.seq2seq_compositional import CompositionalSeq2SeqFileChannel, Seq2SeqCompositionalMetricReporter
  from pytext.metrics.intent_slot_metrics import FramePredictionPair
  from pytext.metrics.mask_metrics import compute_masked_metrics, compute_nas_masked_metrics
  from .compositional_utils import extract_beam_subtrees, filter_invalid_beams
label_desc: Use image node_id 8 for calling the MaskedSeq2SeqCompositionalMetricReporter obj's underlying member method code with example usage: obj.get_top_non_invalid(beam) and returns: str, beam