class_docstr: Term Frequency - Inverse Document Frequency (TF-IDF) Recommender
  
  This class provides content-based recommendations using TF-IDF vectorization in combination with cosine similarity.
docstr: Clean text by removing HTML tags, symbols, and punctuation.
  
  Args:
      text (str): Text to clean.
      for_BERT (boolean): True or False for if this text is being cleaned for a BERT word tokenization method.
      verbose (boolean): True or False for whether to print.
  
  Returns:
      str: Cleaned version of text.
docstr_tok: ["Clean","text","by","removing","HTML","tags",",","symbols",",","and","punctuation",".","Args",":","text","(","str",")",":","Text","to","clean",".","for_BERT","(","boolean",")",":","True","or","False","for","if","this","text","is","being","cleaned","for","a","BERT","word","tokenization","method",".","verbose","(","boolean",")",":","True","or","False","for","whether","to","print",".","Returns",":","str",":","Cleaned","version","of","text","."]
code: def __clean_text(self, text, for_BERT=False, verbose=False):
      """Clean text by removing HTML tags, symbols, and punctuation.
  
      Args:
          text (str): Text to clean.
          for_BERT (boolean): True or False for if this text is being cleaned for a BERT word tokenization method.
          verbose (boolean): True or False for whether to print.
  
      Returns:
          str: Cleaned version of text.
      """
  
      try:
          # Normalize unicode
          text_norm = unicodedata.normalize("NFC", text)
  
          # Remove HTML tags
          clean = re.sub("<.*?>", "", text_norm)
  
          # Remove new line and tabs
          clean = clean.replace("\n", " ")
          clean = clean.replace("\t", " ")
          clean = clean.replace("\r", " ")
          clean = clean.replace("Â\xa0", "")  # non-breaking space
  
          # Remove all punctuation and special characters
          clean = re.sub(
              r"([^\s\w]|_)+", "", clean
          )  # noqa W695 invalid escape sequence '\s'
  
          # If you want to keep some punctuation, see below commented out example
          # clean = re.sub(r'([^\s\w\-\_\(\)]|_)+','', clean)
  
          # Skip further processing if the text will be used in BERT tokenization
          if for_BERT is False:
              # Lower case
              clean = clean.lower()
      except Exception:
          if verbose is True:
              print("Cannot clean non-existent text")
          clean = ""
  
      return clean
  
imports: from sklearn.feature_extraction.text import TfidfVectorizer
  from sklearn.metrics.pairwise import linear_kernel
  from transformers import BertTokenizer
  import re
  import unicodedata
  import pandas
  import numpy
  import nltk
  from nltk.stem.porter import PorterStemmer
label_desc: Use image node_id 2 for calling the TfidfRecommender obj's underlying member method code with example usage: obj.__clean_text(text, for_BERT, verbose) and returns: clean