input: Write a function to perform sentiment analysis on product reviews using natural language processing techniques like tokenization and n-grams, and then classify the sentiments using a classification model. The function should return the classification report for the test set.
  assert sentiment_analysis('reviews.csv', 'sentiment', 0.2, 42)==classification_report
  assert sentiment_analysis('reviews.csv', 'sentiment', 0.25, 0)==classification_report
  assert sentiment_analysis('reviews.csv', 'sentiment', 0.3, 123)==classification_report
  assert sentiment_analysis('reviews.csv', 'sentiment', 0.15, 456)==classification_report
  assert sentiment_analysis('reviews.csv', 'sentiment', 0.4, 789)==classification_report
output: 
  import pandas as pd
  from sklearn.model_selection import train_test_split
  from sklearn.feature_extraction.text import TfidfVectorizer
  from sklearn.naive_bayes import MultinomialNB
  from sklearn.metrics import classification_report
  
  def sentiment_analysis(file_path, sentiment_col, test_size, random_state):
      df = pd.read_csv(file_path)
      X_train, X_test, y_train, y_test = train_test_split(df['review'], df[sentiment_col], test_size=test_size, random_state=random_state)
      vectorizer = TfidfVectorizer(ngram_range=(1, 2))
      X_train_tfidf = vectorizer.fit_transform(X_train)
      X_test_tfidf = vectorizer.transform(X_test)
      clf = MultinomialNB()
      clf.fit(X_train_tfidf, y_train)
      y_pred = clf.predict(X_test_tfidf)
      return classification_report(y_test, y_pred)
  