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, and classify sentiments using a Naive Bayes model. It should print a classification report.
  
  assert sentiment_analysis('reviews.csv')
output: def sentiment_analysis(file_path):
      import pandas as pd
      from sklearn.feature_extraction.text import CountVectorizer
      from sklearn.naive_bayes import MultinomialNB
      from sklearn.model_selection import train_test_split
      from sklearn.metrics import classification_report
      from nltk.corpus import stopwords
      from nltk.tokenize import word_tokenize
      import string
  
      def preprocess(text):
          tokens = word_tokenize(text.lower())
          tokens = [word for word in tokens if word.isalpha()]
          tokens = [word for word in tokens if word not in stopwords.words('english')]
          return ' '.join(tokens)
  
      df = pd.read_csv(file_path)
      df['review'] = df['review'].apply(preprocess)
  
      X = df['review']
      y = df['sentiment']
  
      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  
      vectorizer = CountVectorizer()
      X_train_vec = vectorizer.fit_transform(X_train)
      X_test_vec = vectorizer.transform(X_test)
  
      model = MultinomialNB()
      model.fit(X_train_vec, y_train)
  
      y_pred = model.predict(X_test_vec)
      print(classification_report(y_test, y_pred))