input: Write a function to analyze the sentiment of a given text using tokenization, stemming, removal of stopwords, and polarity score calculation. The function should return the polarity score of the text.
  
  assert sentiment_analyzer("I love this product! It's amazing.")=={'neg': 0.0, 'neu': 0.219, 'pos': 0.781, 'compound': 0.8439}
  assert sentiment_analyzer("This is terrible. I hate it so much.")=={'neg': 0.778, 'neu': 0.222, 'pos': 0.0, 'compound': -0.8316}
  assert sentiment_analyzer("The weather is neutral today.")=={'neg': 0.0, 'neu': 1.0, 'pos': 0.0, 'compound': 0.0}
  assert sentiment_analyzer("")=={'neg': 0.0, 'neu': 0.0, 'pos': 0.0, 'compound': 0.0}
output: from nltk.sentiment import SentimentIntensityAnalyzer
  from nltk.tokenize import word_tokenize
  from nltk.stem import PorterStemmer
  from nltk.corpus import stopwords
  
  def sentiment_analyzer(text):
      sia = SentimentIntensityAnalyzer()
      tokens = word_tokenize(text.lower())
      stemmer = PorterStemmer()
      stop_words = set(stopwords.words('english'))
      filtered_tokens = [stemmer.stem(word) for word in tokens if word.isalnum() and word not in stop_words]
      filtered_text = ' '.join(filtered_tokens)
      sentiment_scores = sia.polarity_scores(filtered_text)
      return sentiment_scores