input: Write a function to perform sentiment analysis on product reviews using natural language processing techniques. The function should tokenize the reviews, remove stopwords, normalize words, generate features using CountVectorizer, split the data into training and test sets, train a Multinomial Naive Bayes model, and output a classification report based on the model's predictions.
  assert sentiment_analysis()=='precision    recall  f1-score   support\n\n...
  assert sentiment_analysis()=='precision    recall  f1-score   support\n\n...
  assert sentiment_analysis()=='precision    recall  f1-score   support\n\n...
  assert sentiment_analysis()=='precision    recall  f1-score   support\n\n...
  assert sentiment_analysis()=='precision    recall  f1-score   support\n\n...
output: def sentiment_analysis():
      from sklearn.feature_extraction.text import CountVectorizer
      from sklearn.model_selection import train_test_split
      from sklearn.naive_bayes import MultinomialNB
      from sklearn.metrics import classification_report
      from nltk.corpus import stopwords
      from nltk.tokenize import word_tokenize
      from nltk.stem import WordNetLemmatizer
      import string
  
      reviews = [
          "This product is amazing! I love it.",
          "Terrible product, do not buy.",
          "Great value for the price.",
          "I am very disappointed with this purchase.",
          "Highly recommended!",
          "Worst experience ever.",
          "Excellent quality.",
          "I regret buying this."
      ]
      sentiments = [1, 0, 1, 0, 1, 0, 1, 0]
  
      stop_words = set(stopwords.words('english'))
      lemmatizer = WordNetLemmatizer()
  
      def preprocess(text):
          tokens = word_tokenize(text.lower())
          tokens = [lemmatizer.lemmatize(word) for word in tokens if word.isalpha() and word not in stop_words]
          return ' '.join(tokens)
  
      processed_reviews = [preprocess(review) for review in reviews]
  
      vectorizer = CountVectorizer()
      X = vectorizer.fit_transform(processed_reviews)
  
      X_train, X_test, y_train, y_test = train_test_split(X, sentiments, test_size=0.2, random_state=42)
  
      model = MultinomialNB()
      model.fit(X_train, y_train)
  
      y_pred = model.predict(X_test)
      report = classification_report(y_test, y_pred)
      return report