I actually wrote it myself, based on conditional random fields! I would not recommend doing this - it was mostly an exercise to learn how they work. I should probably have mentioned that I manually cleaned up the results a bit. I understand nltk has NER capabilities and python bindings, though.