The particular Natural Language Processing (NLP) task that you're looking for is called Named Entity Recognition
(NER)
Other than the Stanford's CRF-NER (in java), a popular python choice from Natural Language ToolKit
(NLTK) is often used as a baseline for NER tasks.
You can try installing NLTK then execute the following code:
>>> from nltk.tokenize import word_tokenize
>>> from nltk.tag import pos_tag
>>> from nltk.chunk import ne_chunk
>>> sentence = "How old is John Smith?"
>>> ne_chunk(pos_tag(word_tokenize(sentence)))
Tree('S', [('How', 'WRB'), ('old', 'JJ'), ('is', 'VBZ'), Tree('PERSON', [('John', 'NNP'), ('Smith', 'NNP')]), ('?', '.')])