code: def _word_tokenize(
      words: List[Tuple[str, str, str]], is_lower: bool = False
  ) -> List[Tuple[List[str], bool]]:
      """
      Process a list of words and attach indicators showing if each word is unchangeable or not. Each word representation
      can be one of valid word, any substring starting from | to | (unchangeable word), or punctuation marks including
      whitespaces. This function will split unchanged strings by whitespaces and return them as `List[str]`. For example,
  
      .. code-block:: python
          [
              ('Hello', '', ''),  # valid word
              ('', '', ' '),  # punctuation mark
              ('World', '', ''),  # valid word
              ('', '', ' '),  # punctuation mark
              ('', '|NVIDIA unchanged|', ''),  # unchangeable word
              ('', '', '!')  # punctuation mark
          ]
  
      will be converted into,
  
      .. code-block:: python
          [
              (["Hello"], False),
              ([" "], False),
              (["World"], False),
              ([" "], False),
              (["NVIDIA", "unchanged"], True),
              (["!"], False)
          ]
  
      Args:
          words (List[str]): a list of tuples like `(maybe_word, maybe_without_changes, maybe_punct)` where each element
              corresponds to a non-overlapping match of either `_WORDS_RE_EN` or `_WORDS_RE_ANY_LOCALE`.
          is_lower (bool): a flag to trigger lowercase all words. By default, it is False.
  
      Returns: List[Tuple[List[str], bool]], a list of tuples like `(a list of words, is_unchanged)`.
  
      """
      result = []
      for word in words:
          maybe_word, maybe_without_changes, maybe_punct = word
  
          without_changes = False
          if maybe_word != "":
              if is_lower:
                  token = [maybe_word.lower()]
              else:
                  token = [maybe_word]
          elif maybe_punct != "":
              token = [maybe_punct]
          elif maybe_without_changes != "":
              without_changes = True
              token = maybe_without_changes[1:-1].split(" ")
          else:
              raise ValueError(
                  f"This is not expected. Found empty string: <{word}>. "
                  f"Please validate your regular expression pattern '_WORDS_RE_EN' or '_WORDS_RE_ANY_LOCALE'."
              )
  
          result.append((token, without_changes))
  
      return result
  
file_path: NeMo/nemo/collections/common/tokenizers/text_to_speech/tokenizer_utils.py
imports: import re
  import unicodedata
  from builtins import str
  from typing import List, Tuple
label_desc: Use image node_id 4 for calling a global function with example usage: _word_tokenize(words, is_lower) and returns: result