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 the text within the columns of interest and return a dataframe with cleaned and combined text.
  
  Args:
      df (pandas.DataFrame): Dataframe containing the text content to clean.
      cols_to_clean (list of str): List of columns to clean by name (e.g., ['abstract','full_text']).
      new_col_name (str): Name of the new column that will contain the cleaned text.
  
  Returns:
      pandas.DataFrame: Dataframe with cleaned text in the new column.
docstr_tok: ["Clean","the","text","within","the","columns","of","interest","and","return","a","dataframe","with","cleaned","and","combined","text",".","Args",":","df","(","pandas.DataFrame",")",":","Dataframe","containing","the","text","content","to","clean",".","cols_to_clean","(","list","of","str",")",":","List","of","columns","to","clean","by","name","(","e.g.",",","[","'abstract","'",",","'full_text","'","]",")",".","new_col_name","(","str",")",":","Name","of","the","new","column","that","will","contain","the","cleaned","text",".","Returns",":","pandas.DataFrame",":","Dataframe","with","cleaned","text","in","the","new","column","."]
code: def clean_dataframe(
      self, df, cols_to_clean, new_col_name="cleaned_text"
  ):
      """Clean the text within the columns of interest and return a dataframe with cleaned and combined text.
  
      Args:
          df (pandas.DataFrame): Dataframe containing the text content to clean.
          cols_to_clean (list of str): List of columns to clean by name (e.g., ['abstract','full_text']).
          new_col_name (str): Name of the new column that will contain the cleaned text.
  
      Returns:
          pandas.DataFrame: Dataframe with cleaned text in the new column.
      """
      # Collapse the table such that all descriptive text is just in a single column
      df = df.replace(np.nan, "", regex=True)
      df[new_col_name] = df[cols_to_clean].apply(
          lambda cols: " ".join(cols), axis=1
      )
  
      # Check if for BERT tokenization
      if self.tokenization_method in ["bert", "scibert"]:
          for_BERT = True
      else:
          for_BERT = False
  
      # Clean the text in the dataframe
      df[new_col_name] = df[new_col_name].map(
          lambda x: self.__clean_text(x, for_BERT)
      )
  
      return df
  
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 3 for calling the TfidfRecommender obj's underlying member method code with example usage: obj.clean_dataframe(df, cols_to_clean, new_col_name) and returns: df