input: Write a function that creates a machine learning program in Python to classify text data into 3 different categories. The function should load data from a CSV file, vectorize the text data, convert the target labels to numerical values, split the data into training and testing sets, train a Naive Bayes classifier, predict on the test data, and print a classification report. If the input data or CSV file is not provided, the function should raise a custom error.
  assert machine_learning_classify_text("data.csv") == "accuracy_report"
  assert machine_learning_classify_text("invalid_file.csv") == "CustomError: File not found"
  assert machine_learning_classify_text("empty_file.csv") == "CustomError: Empty file"
  assert machine_learning_classify_text(None) == "CustomError: No input file"
  assert machine_learning_classify_text("data.csv") == "accuracy_report"
output: def machine_learning_classify_text(file_path):
      if not file_path:
          raise ValueError("CustomError: No input file")
      
      import pandas as pd
      from sklearn.feature_extraction.text import CountVectorizer
      from sklearn.model_selection import train_test_split
      from sklearn.naive_bayes import MultinomialNB
      from sklearn.metrics import classification_report
      
      try:
          data = pd.read_csv(file_path)
      except FileNotFoundError:
          raise ValueError("CustomError: File not found")
      
      if data.empty:
          raise ValueError("CustomError: Empty file")
      
      X = data['text']
      y = data['category']
      
      vectorizer = CountVectorizer()
      X = vectorizer.fit_transform(X)
      
      y = y.map({'category1': 0, 'category2': 1, 'category3': 2})
      
      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
      
      classifier = MultinomialNB()
      classifier.fit(X_train, y_train)
      
      y_pred = classifier.predict(X_test)
      
      print(classification_report(y_test, y_pred))