use nltk.classify.apply_features for memory efficiency

Using this instead of building the entire list freed up significant amount of memory with large datasets. Source: [nltk doc](http://nltk.googlecode.com/svn/trunk/doc/book/ch06.html)