input: Write a function to analyze the sentiment of a given text. The function should tokenize the text, stem each word, remove punctuation and stopwords, and finally calculate the sentiment polarity score using the VADER SentimentIntensityAnalyzer. If the function is given an empty string as input, it should return a sentiment score dictionary with neutral values.
  
  def sentiment_analyzer(text):
      # Tokenize the text
      tokens = word_tokenize(text)
  
      # Create stemmer object
      stemmer = SnowballStemmer('english')
  
      # Stem each token
      stemmed_words = [stemmer.stem(word) for word in tokens]
  
      # Remove punctuation
      clean_words = [word for word in stemmed_words if re.match('[a-zA-Z-]+$', word)]
  
      # Remove stopwords
      meaningful_words = [word for word in clean_words if not word in stopwords.words('english')]
  
      # Create a SentimentIntensityAnalyzer object
      sid = SentimentIntensityAnalyzer()
  
      # Get the polarity score of the text
      polarity_score = sid.polarity_scores(' '.join(meaningful_words))
  
      return polarity_score
  
  assert sentiment_analyzer("I love programming!")=={'neg': 0.0, 'neu': 0.367, 'pos': 0.633, 'compound': 0.6369}
  assert sentiment_analyzer("This is a neutral statement.")=={'neg': 0.0, 'neu': 1.0, 'pos': 0.0, 'compound': 0.0}
  assert sentiment_analyzer("I hate waiting in long queues!")=={'neg': 0.607, 'neu': 0.393, 'pos': 0.0, 'compound': -0.6124}
  assert sentiment_analyzer("")=={'neg': 0.0, 'neu': 0.0, 'pos': 0.0, 'compound': 0.0}
output: def sentiment_analyzer(text):
      if not text:
          return {'neg': 0.0, 'neu': 0.0, 'pos': 0.0, 'compound': 0.0}
      
      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