input: Write a function to create a Python script that analyzes the sentiment of a given text using predefined libraries such as nltk. The function should tokenize the text, apply stemming, remove punctuation, remove stopwords, and finally get the sentiment polarity score. Return the polarity score as a dictionary.
  assert sentiment_analyzer("I am very happy today!")=={'neg': 0.0, 'neu': 0.383, 'pos': 0.617, 'compound': 0.6694}
  
  assert sentiment_analyzer("This is a terrible day.")=={'neg': 0.511, 'neu': 0.489, 'pos': 0.0, 'compound': -0.5423}
output: from nltk.sentiment import SentimentIntensityAnalyzer
  from nltk.tokenize import word_tokenize
  from nltk.stem import PorterStemmer
  from nltk.corpus import stopwords
  import string
  
  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.isalpha() and word not in stop_words]
      filtered_text = ' '.join(filtered_tokens)
      sentiment_scores = sia.polarity_scores(filtered_text)
      return sentiment_scores