Computational Linguistics 4, Exercise 3: comparing with Porter Code (run with py -X utf8, using the chapter's strip_suffix): for w in ["universe", "universal", "university", "alumnus", "alumni"]: print(w, "->", strip_suffix(w)) Output from the run: universe -> universe universal -> universal university -> university alumnus -> alumnu alumni -> alumni What the Stemming article says Porter does: universal, university and universe all become "univers" (over-stemming); alumna and alumnae become "alumna", while alumnus becomes "alumnu" and alumni stays "alumni" (under-stemming). What you can conclude: my stripper does not over-stem the "univers" words (it has no rule for their endings), so it avoids that error, but it also leaves them unrelated to each other. For "alumnus" it gives "alumnu" and for "alumni" "alumni", the same two outputs the article reports for Porter, though for different reasons in my code (my rules only strip "ing", "ed", "es" and "s"). What you cannot conclude: that my stripper is better or worse than Porter. I could not run Porter here, my word list is five words, and the two systems have different rules. The comparison is of outputs on a few words, not of quality.