input: 
  from typing import Dict
  from nltk.stem.snowball import SnowballStemmer
  from nltk.tokenize import word_tokenize
  from nltk.corpus import stopwords
  from nltk.sentiment.vader import SentimentIntensityAnalyzer 
  
  def sentiment_analyzer(text: str) -> Dict[str, float]:
      """ Analyze the sentiment of a given text using the VADER sentiment analysis tool.
      The text is first tokenized, then stemmed, cleaned of punctuation and stop words,
      and finally the sentiment score is calculated. The function returns a dictionary with
      the polarity scores.
  
      >>> sentiment_analyzer("I am very happy!")
      {'neg': 0.0, 'neu': 0.295, 'pos': 0.705, 'compound': 0.802}
      >>> sentiment_analyzer("This is a bad day.")
      {'neg': 0.437, 'neu': 0.563, 'pos': 0.0, 'compound': -0.4199}
      """
      tokens = word_tokenize(text)
      stemmer = SnowballStemmer('english')
      stemmed_words = [stemmer.stem(word) for word in tokens]
      clean_words = [word for word in stemmed_words if re.match('[a-zA-Z-]+$', word)]
      meaningful_words = [word for word in clean_words if not word in stopwords.words('english')]
      sid = SentimentIntensityAnalyzer()
      polarity_score = sid.polarity_scores(' '.join(meaningful_words))
      return polarity_score
  
output:     import re