The issue couldn't actually be solved in code. It turns out that, in devising and coding all of the logic needed to test the various noun endings, I had passively learned the rules needed to form them.
We work in a practical medium and any build experience, good, bad or abandoned, is still valid experience.