Computational Linguistics 4, Exercise 2: the lookup approach Add "tables": "table" to the lemma dictionary. Then: lemma.get("tables", "tables") -> "table" lemma.get("chairs", "chairs") -> "chairs" (no entry, so it comes back unchanged) (Run with py -X utf8: the output was "table chairs".) What it shows: the Stemming article says lookup tables are quick and handle irregular forms well, but every inflected form must be listed, so new or regular words can be missed. Each word needs its own entry, however regular its ending. The Lemmatization article adds that a trivial way to lemmatize is simple dictionary lookup, and that languages with long compound words need rule-based systems, which can be hand-crafted or learned from annotated corpora. That is why real systems combine a list for the irregular cases with rules for the regular ones (the hybrid approach in the Stemming article).