docstr: Get utterance tokens based on initial utterance tokenization using token_masks,
  which shows the starting subtoken of each utterance token.
  
  Args:
      token_ids: IntTensor of size (max_seq_len, )
      token_masks: BoolTensor of size (max_seq_len, )
  
  Returns
      token_list: List of Str (list of tokens with len <= max_seq_len)
docstr_tok: ["Get","utterance","tokens","based","on","initial","utterance","tokenization","using","token_masks",",","which","shows","the","starting","subtoken","of","each","utterance","token",".","Args",":","token_ids",":","IntTensor","of","size","(","max_seq_len",",",")","token_masks",":","BoolTensor","of","size","(","max_seq_len",",",")","Returns","token_list",":","List","of","Str","(","list","of","tokens","with","len","<","=","max_seq_len",")"]
code: def get_utterance_tokens(self, token_ids, token_masks):
      """
      Get utterance tokens based on initial utterance tokenization using token_masks,
      which shows the starting subtoken of each utterance token.
  
      Args:
          token_ids: IntTensor of size (max_seq_len, )
          token_masks: BoolTensor of size (max_seq_len, )
  
      Returns
          token_list: List of Str (list of tokens with len <= max_seq_len)
      """
      tokens_stack = []
      tokens = self.tokenizer.tokenizer.convert_ids_to_tokens(token_ids)
  
      for token_idx, token in enumerate(tokens):
          if token_masks[token_idx].item():
              tokens_stack.append([token])
          elif tokens_stack:
              clean_token = (
                  token.replace("##", "")
                  .replace(self.tokenizer.tokenizer.sep_token, "")
                  .replace(self.tokenizer.tokenizer.pad_token, "")
              )
              tokens_stack[-1].append(clean_token)
      token_list = ["".join(token) for token in tokens_stack]
      return token_list
  
imports: import os
  from typing import Dict, List, Optional
  import torch
  from omegaconf import DictConfig, OmegaConf
  from pytorch_lightning import Trainer
  from torch.utils.data import DataLoader
  from nemo.collections.common.losses import AggregatorLoss, CrossEntropyLoss
  from nemo.collections.nlp.data.dialogue.data_processor.assistant_data_processor import DialogueAssistantDataProcessor
  from nemo.collections.nlp.data.dialogue.dataset.dialogue_bert_dataset import DialogueBERTDataset, DialogueIntentSlotInferenceDataset
  from nemo.collections.nlp.data.intent_slot_classification import IntentSlotDataDesc
  from nemo.collections.nlp.metrics.classification_report import ClassificationReport
  from nemo.collections.nlp.metrics.dialogue_metrics import DialogueClassificationMetrics
  from nemo.collections.nlp.models.nlp_model import NLPModel
  from nemo.collections.nlp.modules.common import SequenceTokenClassifier
  from nemo.collections.nlp.parts.utils_funcs import tensor2list
  from nemo.core.classes import typecheck
  from nemo.core.classes.common import PretrainedModelInfo
  from nemo.utils import logging
label_desc: Use image node_id 12 for calling the IntentSlotClassificationModel obj's underlying member method code with example usage: obj.get_utterance_tokens(token_ids, token_masks) and returns: token_list