code: def _split_to_words_with_cache(text: str) -> List[str]:
      """Tokenize a text into words and cache the result."""
      hash_key = hash_text(text)
      if hash_key not in words_cache:
          words = re.split(
              r"\W+",
              normalize_text(
                  text, remove_stops=False, ignore_whitespace=False
              ),
          )
          words = [w for w in words if w]  # remove empty strings
          words_cache[hash_key] = words
      return words_cache[hash_key]
  
imports: import pathlib
  import pickle
  import re
  import string
  import warnings
  from collections import defaultdict
  from importlib.util import find_spec
  from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union
  import numpy
  import pandas
  import textblob
  import torch.cuda
  from nltk import corpus
  from nltk import download
  from nltk import sent_tokenize, word_tokenize
  from tqdm import tqdm
  from typing_extensions import TypedDict
  from deepchecks.core.errors import DeepchecksValueError
  from deepchecks.nlp.utils.text import cut_string, hash_text, normalize_text, remove_punctuation
  from deepchecks.nlp.utils.text_properties_models import get_cmudict_dict, get_fasttext_model, get_transformer_pipeline
  from deepchecks.utils.function import run_available_kwargs
  from deepchecks.utils.strings import SPECIAL_CHARACTERS, format_list
  from deepchecks.utils.validation import is_sequence_not_str
label_desc: Use image node_id 1 for calling a global function with example usage: _split_to_words_with_cache(text) and returns: words_cache