input: from typing import Dict
  
  def perform_sentiment_analysis(review_data_path: str) -> Dict[str, str]:
      """Perform sentiment analysis on product reviews using natural language processing techniques and a classification model.
      Steps include tokenizing the texts, removing stopwords, normalizing words, generating features, splitting the data into training and test sets, training a model, and generating a classification report.
      >>> perform_sentiment_analysis('reviews.csv')
      {'precision': '...', 'recall': '...', 'f1-score': '...', 'support': '...'}
      """
output:     import pandas as pd
      from sklearn.feature_extraction.text import TfidfVectorizer
      from sklearn.model_selection import train_test_split
      from sklearn.naive_bayes import MultinomialNB
      from sklearn.metrics import classification_report
  
      # Load the data
      df = pd.read_csv(review_data_path)
      reviews = df['review'].tolist()
      sentiments = df['sentiment'].tolist()
  
      # Tokenize and preprocess the text
      vectorizer = TfidfVectorizer(stop_words='english', lowercase=True)
      X = vectorizer.fit_transform(reviews)
  
      # Split the data into training and test sets
      X_train, X_test, y_train, y_test = train_test_split(X, sentiments, test_size=0.2, random_state=42)
  
      # Train the model
      model = MultinomialNB()
      model.fit(X_train, y_train)
  
      # Predict and generate classification report
      y_pred = model.predict(X_test)
      report = classification_report(y_test, y_pred, output_dict=True)
  
      # Extract metrics
      result = {
          'precision': str(report['weighted avg']['precision']),
          'recall': str(report['weighted avg']['recall']),
          'f1-score': str(report['weighted avg']['f1-score']),
          'support': str(report['weighted avg']['support'])
      }
  
      return result