input: Write a function to analyze the sentiment of a given text using a combination of tokenization, stemming, stopword removal, and sentiment analysis. The function should return the polarity score of the text using the VADER sentiment analyzer. If the input text is empty, it should return an empty polarity score.
  
  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 not word in stopwords.words('english')]
      sid = SentimentIntensityAnalyzer()
      polarity_score = sid.polarity_scores(' '.join(meaningful_words))
      return polarity_score
          
  assert sentiment_analyzer("I love programming!")=={'neg': 0.0, 'neu': 0.295, 'pos': 0.705, 'compound': 0.6369}
  assert sentiment_analyzer("This is a terrible movie.")=={'neg': 0.685, 'neu': 0.315, 'pos': 0.0, 'compound': -0.7042}
  assert sentiment_analyzer(" ")=={}
  assert sentiment_analyzer("")=={}
  assert sentiment_analyzer("Python is great, but JavaScript is also pretty cool.")=={'neg': 0.0, 'neu': 0.443, 'pos': 0.557, 'compound': 0.6369}
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 not word in stopwords.words('english')]
      sid = SentimentIntensityAnalyzer()
      polarity_score = sid.polarity_scores(' '.join(meaningful_words))
      return polarity_score