input: 
  def sentiment_analyzer(text: str) -> dict:
      """Analyzes the sentiment of a given text using natural language processing techniques.
      It tokenizes the text, removes stopwords and punctuation, stems the words, and 
      calculates the sentiment polarity score.
  
      >>> sentiment_analyzer('I love this product! It is amazing.')
      {'neg': 0.0, 'neu': 0.23, 'pos': 0.77, 'compound': 0.8439}
      >>> sentiment_analyzer('I hate this product! It is terrible.')
      {'neg': 0.701, 'neu': 0.299, 'pos': 0.0, 'compound': -0.765}
      """
  
output:     
      from nltk.sentiment import SentimentIntensityAnalyzer
      from nltk.tokenize import word_tokenize
      from nltk.corpus import stopwords
      from nltk.stem import PorterStemmer
      import string
  
      sia = SentimentIntensityAnalyzer()
      tokens = word_tokenize(text.lower())
      stop_words = set(stopwords.words('english'))
      filtered_tokens = [word for word in tokens if word.isalnum() and word not in stop_words]
      stemmer = PorterStemmer()
      stemmed_tokens = [stemmer.stem(word) for word in filtered_tokens]
      cleaned_text = ' '.join(stemmed_tokens)
      sentiment_scores = sia.polarity_scores(cleaned_text)
      return sentiment_scores
  