input: from typing import Dict
  
  def sentiment_analyzer(text: str) -> Dict[str, float]:
      """Analyze the sentiment of a given text. The function performs the following steps:
          1. Tokenize the text.
          2. Stem each token.
          3. Remove punctuation and stopwords.
          4. Calculate the polarity score of the text using the VADER SentimentIntensityAnalyzer.
  
      >>> sentiment_analyzer("I love this movie! It's fantastic.")
      {'neg': 0.0, 'neu': 0.321, 'pos': 0.679, 'compound': 0.6369}
      """
output:     from nltk.tokenize import word_tokenize
      from nltk.stem import PorterStemmer
      from nltk.corpus import stopwords
      from nltk.sentiment.vader import SentimentIntensityAnalyzer
      import string
  
      # Tokenize the text
      tokens = word_tokenize(text.lower())
  
      # Stem each token
      stemmer = PorterStemmer()
      stemmed_tokens = [stemmer.stem(token) for token in tokens]
  
      # Remove punctuation and stopwords
      stop_words = set(stopwords.words('english'))
      filtered_tokens = [token for token in stemmed_tokens if token not in stop_words and token not in string.punctuation]
  
      # Calculate the polarity score
      analyzer = SentimentIntensityAnalyzer()
      sentiment_scores = analyzer.polarity_scores(' '.join(filtered_tokens))
  
      return sentiment_scores