 <p>If not using NLTK I would go for recognizing specific suffixes to see what is where. Just a layout.</p> <p>So, split a sentence to words and see which words ends with "ed", "ing", "tion", "ay" "et" "ct" "ee" "ly" "ful" "less" "ness" etc.</p> <p>And short forms "n.t" ".ve" "'re" "'d"...</p> <p>Support this with some light weight dictionary like CMUDict which only contains words and their respective pronounciations.</p> <p>Have somewhere a list of irregular verbs and usual forms like "am" "is" "are" "was" "were" "have" "has" "will" "shall" "do" "does" "did" and their negatives.</p> <p>With this system you can see whether you got an English word at all.</p> <p>From its suffix and position in the sentence you can pretty well guess its role in the sentence.</p> <p>Otherwise, even if you have separate lists of verbs and nouns it is usually hard to tell (only by looking at this word) whether it is noun or a verb. So you will have to have a context manager in any case. (If you want your guesses to be 98% correct).</p> <p>Search for any English dictionary (if you would not use CMUDict) and parse it for your use.</p> <p>Don't do it online! It will be slow and there is big amount of other problems that may appear, including inconsistent returns and connection problems.</p>