input: from typing import Dict
  
  def perform_sentiment_analysis(reviews_data: Dict[str, str]) -> str:
      """Given a dictionary where the keys are review texts and the values are the corresponding sentiments, 
      perform sentiment analysis on these reviews using NLP techniques like tokenization, stopword removal, 
      lemmatization, and n-gram generation. Use a Multinomial Naive Bayes classifier to predict the sentiment 
      for each review and return the classification report.
      >>> perform_sentiment_analysis({'Great product, fast delivery': 'positive', 'Terrible service': 'negative'})
      {'Great product, fast delivery': 'positive', 'Terrible service': 'negative'}
      """
output:     from sklearn.feature_extraction.text import CountVectorizer
      from sklearn.naive_bayes import MultinomialNB
      from sklearn.pipeline import make_pipeline
      from sklearn.metrics import classification_report
  
      # Prepare the data
      texts = list(reviews_data.keys())
      sentiments = list(reviews_data.values())
  
      # Create a pipeline with CountVectorizer and MultinomialNB
      model = make_pipeline(CountVectorizer(), MultinomialNB())
  
      # Fit the model
      model.fit(texts, sentiments)
  
      # Predict the sentiments
      predicted_sentiments = model.predict(texts)
  
      # Generate the classification report
      report = classification_report(sentiments, predicted_sentiments, output_dict=True)
  
      return report