Computational Linguistics 4, Exercise 1: hoped, hopes, hoping Code (run with py -X utf8, using the chapter's strip_suffix): for w in ["hoped", "hopes", "hoping"]: print(w, "->", strip_suffix(w)) Output from the run: hoped -> hop hopes -> hop hoping -> hop Why it is wrong: the lemma is "hope". The stripper removes "ed", "es" and "ing" but cannot know that the silent "e" belongs to the stem. The result "hop" is a real English word with a different meaning, so the error looks like a correct answer. What the Stemming article says: a stem can be a fragment, not a dictionary word (Porter turns argue, argued, argues, arguing and argus into "argu"), and suffix stripping is "crude with irregular pairs". Here the stem happens to be a real word, which hides the mistake.