title: How to get the precision and recall from a nltk classifier?
body: <pre><code>import nltk
  from nltk.corpus import movie_reviews
  from nltk.tokenize import word_tokenize
  
  documents = [(list(movie_reviews.words(fileid)), category)
               for category in movie_reviews.categories()
               for fileid in movie_reviews.fileids(category)]
  
  
  all_words = []
  
  for w in movie_reviews.words():
      all_words.append(w.lower())
  
  all_words = nltk.FreqDist(all_words)
  
  word_features = list(all_words.keys())[:3000]
  
  def find_features(document):
      words = set(document)
      features = {}
      for w in word_features:
          features[w] = (w in words)
  
      return features
  
  featuresets = [(find_features(rev), category) for (rev, category) in documents]
  
  training_set = featuresets[500:1500]
  testing_set = featuresets[:1500]
  
  classifier = nltk.DecisionTreeClassifier.train(training_set)
  
  print "Classifier accuracy percent:",(nltk.classify.accuracy(classifier, testing_set))*100 , "%"
  
  string = raw_input("Enter the string: ")
  print (classifier.classify(find_features(word_tokenize(string))))
  </code></pre>
  
  <p>This code will display the accuracy of the classifier and then get input from user. And it returns the polarity of the string input by the user.</p>
  
  <p>But here's my question: since I can obtain the accuracy by using <code>nltk.accuracy()</code>, is it possible to get its precision and recall as well?</p>