input: Write a function to analyze the sentiment of a text by tokenizing it, removing stopwords and punctuation, stemming each token, and then using the SentimentIntensityAnalyzer to get the polarity score. If the input text is empty, return an empty dictionary.
  def sentiment_analyzer(text):
      if not text:
          return {}
      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 word not in stopwords.words('english')]
      sid = SentimentIntensityAnalyzer()
      polarity_score = sid.polarity_scores(' '.join(meaningful_words))
      return polarity_score
  
  assert sentiment_analyzer("I love this product!")=={'neg': 0.0, 'neu': 0.367, 'pos': 0.633, 'compound': 0.6249}
  assert sentiment_analyzer("I hate this product.")=={'neg': 0.625, 'neu': 0.375, 'pos': 0.0, 'compound': -0.5719}
  assert sentiment_analyzer("")=={}
  assert sentiment_analyzer("Good job!")=={'neg': 0.0, 'neu': 0.421, 'pos': 0.579, 'compound': 0.4404}
output: def sentiment_analyzer(text):
      if not text:
          return {}
      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 word not in stopwords.words('english')]
      sid = SentimentIntensityAnalyzer()
      polarity_score = sid.polarity_scores(' '.join(meaningful_words))
      return polarity_score