def evaluation(classifier, test_feats, categories): print("\n##### Evaluation...") print(" Accuracy: %f" % nltk.classify.accuracy(classifier, test_feats)) precisions, recalls = precision_recall(classifier, test_feats) f_measures = calculate_f(precisions, recalls) print(" |-----------|-----------|-----------|-----------|") print(" |%-11s|%-11s|%-11s|%-11s|" % ("category", "precision", "recall", "F-measure")) print(" |-----------|-----------|-----------|-----------|") for category in categories: print(" |%-11s|%-11f|%-11f|%-11s|" % (category, precisions[category], recalls[category], "?")) print(" |-----------|-----------|-----------|-----------|")
def evaluation(classifier, test_feats, categories): print(" Accuracy: %f" % nltk.classify.accuracy(classifier, test_feats)) precisions, recalls = precision_recall(classifier, test_feats) for category in categories: category, precisions[category], recalls[category] p = precisions[category] r = recalls[category] f_measures = calculate_f(p, r) print(category, " & ", precisions[category], " & ", recalls[category], " & ", f_measures)
def evaluation(classifier, test_feats, categories): print ("\n##### Evaluation...") accuracy = nltk.classify.accuracy(classifier, test_feats) precisions, recalls = precision_recall(classifier, test_feats) f_measures = calculate_f(precisions, recalls, categories) print(" |-------------|-----------|-----------|-----------|") print(" |%-13s|%-11s|%-11s|%-11s|" % ("category","precision","recall","F-measure")) print(" |-------------|-----------|-----------|-----------|") for category in categories: if precisions[category] is None or recalls[category] is None: print(" |%-13s|%-11s|%-11s|%-11s|" % (category, "NA", "NA", "NA")) else: print(" |%-13s|%-11f|%-11f|%-11s|" % (category, precisions[category], recalls[category], f_measures[category])) print(" |-------------|-----------|-----------|-----------|") return accuracy
def evaluation(classifier, test_feats, categories): """Calculates and prints accuracy, precision, recall and f-measure""" print("\n##### Evaluating...") accuracy = nltk.classify.accuracy(classifier, test_feats) print(" Accuracy: %f" % accuracy) precisions, recalls = precision_recall(classifier, test_feats) f_measures = calculate_f(precisions, recalls) print(" |-----------|-----------|-----------|-----------|") print(" |%-11s|%-11s|%-11s|%-11s|" % ("category", "precision", "recall", "F-measure")) print(" |-----------|-----------|-----------|-----------|") for category in categories: if precisions[category] is None: print(" |%-11s|%-11s|%-11s|%-11s|" % (category, "NA", "NA", "NA")) else: print(" |%-11s|%-11f|%-11f|%-11f|" % (category, precisions[category], recalls[category], f_measures[category])) print(" |-----------|-----------|-----------|-----------|")
from nltk.classify import DecisionTreeClassifier from nltk.classify.scikitlearn import SklearnClassifier from sklearn.svm import LinearSVC labels = movie_reviews.categories() labeled_words = [(l, movie_reviews.words(categories=[l])) for l in labels] high_info_words = set(high_information_words(labeled_words)) feat_det = lambda words: bag_of_words_in_set(words, high_info_words) lfeats = label_feats_from_corpus(movie_reviews, feature_detector=feat_det) train_feats, test_feats = split_label_feats(lfeats) print("######################################################################") nb_classifier = NaiveBayesClassifier.train(train_feats) print("Accuracy Naive Bayes: " + str(accuracy(nb_classifier, test_feats))) # Accuracy: 0.91 nb_precisions, nb_recalls = precision_recall(nb_classifier, test_feats) print("Precisions Naive Bayes Pos: " + str(nb_precisions['pos'])) # Precisions Pos: 0.8988326848249028 print("Precisions Naive Bayes Neg: " + str(nb_precisions['neg'])) # Precisions Neg: 0.9218106995884774 print("Recalls Naive Bayes Pos: " + str(nb_recalls['pos'])) # Recalls Pos: 0.924 print("Recalls Naive Bayes Neg: " + str(nb_recalls['neg'])) # Recalls Neg: 0.896 print("######################################################################") me_classifier = MaxentClassifier.train(train_feats, algorithm='gis', trace=0, max_iter=10, min_lldelta=0.5) print("Accuracy Max Entropy: " + str(accuracy(me_classifier, test_feats))) # Accuracy Max Entropy: 0.912 me_precisions, me_recalls = precision_recall(me_classifier, test_feats) print("Precisions Max Entropy Pos: " + str(me_precisions['pos'])) # Precisions Max Entropy Pos: 0.8992248062015504
#Creates a training set - classifier learns distribution of true/falses in the input. #training_set = nltk.classify.apply_features(feature_extractor, tweets) whole_set = nltk.classify.apply_features(Sentiment_Classifier.feature_extractor, tweets) N_Set=len(whole_set) #testing_set= whole_set[:N_Set/5] #training_set= whole_set[N_Set/5:] testing_set=whole_set training_set=whole_set classifier = nltk.classify.NaiveBayesClassifier.train(training_set) print "Accuracy:" +str(nltk.classify.accuracy(classifier,testing_set)) precision, recall = precision_recall(classifier, testing_set ) print precision['positive'] print precision['negative'] print recall['positive'] print recall['negative'] print "Classification Done!" print classifier.show_most_informative_features(50) f=open("Classifier.dump",'w') pickle.dump(classifier,f) p.close() n.close()