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(" |-----------|-----------|-----------|-----------|")
예제 #2
0
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
예제 #4
0
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(" |-----------|-----------|-----------|-----------|")
예제 #5
0
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
예제 #6
0
#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()