I don't really use the default lemmatizer because I personally think that it should include approximate word count available in WordNet to disambiguate the case when there are multiple options returned by `wordnet._morphy`. Especially, I'd like it to lemmatize `species` into `species`, not `specie`. haha

Yes, when I do lemmatize, I always use a POS tagger. I already found a lightning fast Python implementation of POS tagger in [TextBlob](https://github.com/sloria/textblob-aptagger). It can do sentence tokenization, word tokenization, and POS tagging of one sentence in under 5ms in my machine. That's the fastest POS tagger implementation I've experimented with so far, the default POS tagger from NLTK takes well above 100ms for each sentence. TextBlob uses the default `sent_tokenize` and `word_tokenize` from NLTK, and it also has a high accuracy.

Thanks for being on the conservative side! We always need those people so that we don't commit a change hastily. My implementation indeed causes some overhead, as it will use `DictVectorizer` in merging the word counts, increasing coupling between classes, even for the case when `n_jobs=1`, and splitting the case for `n_jobs=1` alone will increase the complexity of the code. This is indeed a tough decision. For me, I like this change because it makes my application faster, but if the consensus here is not to include this change, then it's fine with me also. Afterall, this scikit library is being used by many people, and it might be the case that my change doesn't benefit most of them.

So let's see what others have to say for the concerns you raised