input: Write a python function to clean and preprocess text data.
  assert clean_text("Hello! How are you?") == "hello"
  assert clean_text("This is an example sentence, with punctuation.") == "exampl sentenc punctuat"
  assert clean_text("Numbers like 1234 should be removed.") == "number like should be remov"
output: def clean_text(text):
      import re
      from nltk.corpus import stopwords
      from nltk.stem import PorterStemmer
  
      # Convert to lower case
      text = text.lower()
  
      # Remove punctuation and numbers
      text = re.sub(r'[^a-z\s]', '', text)
  
      # Tokenize the text
      words = text.split()
  
      # Remove stopwords
      stop_words = set(stopwords.words('english'))
      words = [word for word in words if word not in stop_words]
  
      # Stem the words
      ps = PorterStemmer()
      words = [ps.stem(word) for word in words]
  
      # Join the words back into a single string
      cleaned_text = ' '.join(words)
  
      return cleaned_text