input: def sentiment_analyzer(text: str) -> dict:
      """ Analyze the sentiment of the given text by tokenizing, stemming, cleaning, 
      removing stopwords, and then computing the polarity score.
      >>> sentiment_analyzer("I love programming in Python!")
      {'neg': 0.0, 'neu': 0.348, 'pos': 0.652, 'compound': 0.6369}
      >>> sentiment_analyzer("This task is frustrating and overwhelming.")
      {'neg': 0.402, 'neu': 0.598, 'pos': 0.0, 'compound': -0.5719}
      """
output:     from nltk.sentiment import SentimentIntensityAnalyzer
      from nltk.tokenize import word_tokenize
      from nltk.stem import PorterStemmer
      from nltk.corpus import stopwords
      import string
  
      # Initialize the sentiment analyzer
      sia = SentimentIntensityAnalyzer()
  
      # Tokenize the text
      tokens = word_tokenize(text.lower())
  
      # Remove punctuation and stopwords
      tokens = [word for word in tokens if word.isalnum() and word not in stopwords.words('english')]
  
      # Stem the tokens
      stemmer = PorterStemmer()
      tokens = [stemmer.stem(word) for word in tokens]
  
      # Join the tokens back into a single string
      cleaned_text = ' '.join(tokens)
  
      # Compute the sentiment scores
      sentiment_scores = sia.polarity_scores(cleaned_text)
  
      return sentiment_scores