input: Write a python function to create a chatbot using natural language processing and machine learning.
  assert isinstance(chatbot, dict)
  assert len(chatbot) > 0
  assert all(isinstance(key, str) and isinstance(value, str) for key, value in chatbot.items())
output: def create_chatbot():
      from sklearn.feature_extraction.text import CountVectorizer
      from sklearn.metrics.pairwise import cosine_similarity
      import numpy as np
  
      # Sample data: Questions and Responses
      data = {
          "Hello": "Hi there! How can I help you today?",
          "What is your name?": "I am a chatbot created to assist you.",
          "How are you?": "I'm just a program, but I'm here to help you!",
          "Goodbye": "Goodbye! Have a great day!"
      }
  
      # Training phase
      questions = list(data.keys())
      responses = list(data.values())
  
      vectorizer = CountVectorizer().fit_transform(questions)
      vectors = vectorizer.toarray()
      cosine_matrix = cosine_similarity(vectors)
  
      def chatbot_response(user_input):
          user_vector = vectorizer.transform([user_input]).toarray()[0]
          similarity_scores = cosine_similarity([user_vector], vectors)[0]
          best_match_index = np.argmax(similarity_scores)
          return responses[best_match_index] if similarity_scores[best_match_index] > 0 else "I'm sorry, I don't understand that."
  
      # Create chatbot dictionary with questions and responses
      chatbot = {q: chatbot_response(q) for q in questions}
  
      return chatbot