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 then calculate the polarity score using the SentimentIntensityAnalyzer. The function should return the polarity score.
  
  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):
      # 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 this product so much!") == {'neg': 0.0, 'neu': 0.295, 'pos': 0.705, 'compound': 0.802}
  assert sentiment_analyzer("I hate this product. It's terrible.") == {'neg': 0.68, 'neu': 0.32, 'pos': 0.0, 'compound': -0.888}
  assert sentiment_analyzer("I think it's just okay.") == {'neg': 0.0, 'neu': 0.542, 'pos': 0.458, 'compound': 0.3612}
  assert sentiment_analyzer("") == {'neg': 0.0, 'neu': 0.0, 'pos': 0.0, 'compound': 0.0}
output: def sentiment_analyzer(text):
      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