input: Write a python function to preprocess text by removing punctuation, tokenizing, removing stopwords, and lemmatizing.
  assert preprocess_text("Hello there! How's everything going?") == 'Hello everything going'
  assert preprocess_text("It's a beautiful day in the neighborhood.") == 'It beautiful day neighborhood'
  assert preprocess_text("You won $1000! Call now!") == 'You won 1000 Call'
output: import string
  import nltk
  from nltk.corpus import stopwords
  from nltk.tokenize import word_tokenize
  from nltk.stem import WordNetLemmatizer
  
  # Download necessary NLTK data files
  nltk.download('punkt')
  nltk.download('stopwords')
  nltk.download('wordnet')
  
  def preprocess_text(text):
      # Remove punctuation
      text = text.translate(str.maketrans('', '', string.punctuation))
      
      # Tokenize
      tokens = word_tokenize(text)
      
      # Remove stopwords
      stop_words = set(stopwords.words('english'))
      tokens = [word for word in tokens if word.lower() not in stop_words]
      
      # Lemmatize
      lemmatizer = WordNetLemmatizer()
      tokens = [lemmatizer.lemmatize(word) for word in tokens]
      
      return ' '.join(tokens)