print('%d training feats, %d testing feats' %
          (len(train_feats), len(test_feats)))

##############
## training ##
##############
trainf = nltk_trainer.classification.args.make_classifier_builder(args)

if args.cross_fold:
    if args.multi and args.binary:
        raise NotImplementedError(
            "cross-fold is not supported for multi-binary classifiers")
    scoring.cross_fold(train_feats,
                       trainf,
                       accuracy,
                       folds=args.cross_fold,
                       trace=args.trace,
                       metrics=not args.no_eval,
                       informative=args.show_most_informative)
    sys.exit(0)

if args.multi and args.binary:
    if args.trace:
        print('training multi-binary %s classifier' % args.classifier)
    classifier = MultiBinaryClassifier.train(labels, train_feats, trainf)
else:
    classifier = trainf(train_feats)

################
## evaluation ##
################
# if there were no instances reserved for testing, test over the whole training set
if not test_feats:
	test_feats = train_feats

if args.trace:
       print '%d training feats, %d testing feats' % (len(train_feats), len(test_feats))

##############
## training ##
##############
trainf = nltk_trainer.classification.args.make_classifier_builder(args)

if args.cross_fold:
	if args.multi and args.binary:
		raise NotImplementedError ("cross-fold is not supported for multi-binary classifiers")
	scoring.cross_fold(train_feats, trainf, accuracy, folds=args.cross_fold,
		trace=args.trace, metrics=not args.no_eval, informative=args.show_most_informative)
	sys.exit(0)

if args.multi and args.binary:
	if args.trace:
		print 'training multi-binary %s classifier' % args.classifier
	classifier = MultiBinaryClassifier.train(labels, train_feats, trainf)
else:
	classifier = trainf(train_feats)

################
## evaluation ##
################
if not args.no_eval:
	if not args.no_accuracy:
		try: