class_docstr: Featurizer using ConveRT model.
  
  Loads the ConveRT(https://github.com/PolyAI-LDN/polyai-models#convert)
  model from TFHub and computes sentence and sequence level feature representations
  for dense featurizable attributes of each message object.
class_docstr_tok: ["Featurizer","using","ConveRT","model",".","Loads","the","ConveRT","(","https",":","\/\/github.com\/PolyAI-LDN\/polyai-models","#","convert",")","model","from","TFHub","and","computes","sentence","and","sequence","level","feature","representations","for","dense","featurizable","attributes","of","each","message","object","."]
docstr: Convert list of tokens to text.
  
  Add a whitespace between two tokens if the end value of the first tokens
  is not the same as the end value of the second token.
docstr_tok: ["Convert","list","of","tokens","to","text",".","Add","a","whitespace","between","two","tokens","if","the","end","value","of","the","first","tokens","is","not","the","same","as","the","end","value","of","the","second","token","."]
code: def _tokens_to_text(list_of_tokens: List[List[Token]]) -> List[Text]:
      """Convert list of tokens to text.
  
      Add a whitespace between two tokens if the end value of the first tokens
      is not the same as the end value of the second token.
      """
      texts = []
      for tokens in list_of_tokens:
          text = ""
          offset = 0
          for token in tokens:
              if offset != token.start:
                  text += " "
              text += token.text
  
              offset = token.end
          texts.append(text)
  
      return texts
  
imports: from __future__ import annotations
  import logging
  import os
  from typing import Any, Dict, List, Optional, Text, Tuple, Type
  import tensorflow
  from tensorflow.python.eager.wrap_function import WrappedFunction
  from tqdm import tqdm
  import numpy
  from rasa.engine.graph import GraphComponent, ExecutionContext
  from rasa.engine.recipes.default_recipe import DefaultV1Recipe
  from rasa.engine.storage.storage import ModelStorage
  from rasa.engine.storage.resource import Resource
  import rasa.shared.utils.io
  import rasa.core.utils
  from rasa.nlu.tokenizers.tokenizer import Token, Tokenizer
  from rasa.nlu.featurizers.dense_featurizer.dense_featurizer import DenseFeaturizer
  from rasa.shared.nlu.training_data.training_data import TrainingData
  from rasa.shared.nlu.training_data.message import Message
  from rasa.nlu.constants import DENSE_FEATURIZABLE_ATTRIBUTES, TOKENS_NAMES, NUMBER_OF_SUB_TOKENS
  from rasa.shared.nlu.constants import TEXT, ACTION_TEXT
  from rasa.exceptions import RasaException
  import rasa.nlu.utils
  import rasa.utils.train_utils
label_desc: Use image node_id 15 for calling the ConveRTFeaturizer obj's underlying member method code with example usage: obj._tokens_to_text(list_of_tokens) and returns: texts