That is the idea, and it works about as well as any algorythmic approach to natural language can.
De-morphemization is in two steps. First words are de-pluralized (check for irregulars, then -ies, then -es, then s). After that, it checks for various other rules (-ing, -ed, -er, -est, -ly-, -ize, -less, -ness, -able). The code has no sense of meaning, so if a word matches the check for a plural word, it get depluralized, whether or not that is the 'correct' pluralization.
However, the standard rules fail pretty often, English being a complete whore of a language. 'Vignettes', for instance, will de-pluralize to 'vignett'. 'Brother' ends up as 'broth' (as does 'brothers' and 'brethren'). So you might get some soup related false-postives in this case, but no false-negatives. And you'll only get the false-positives when the output happens to be a word, which is moderately rare.
no subject
De-morphemization is in two steps. First words are de-pluralized (check for irregulars, then -ies, then -es, then s). After that, it checks for various other rules (-ing, -ed, -er, -est, -ly-, -ize, -less, -ness, -able). The code has no sense of meaning, so if a word matches the check for a plural word, it get depluralized, whether or not that is the 'correct' pluralization.
However, the standard rules fail pretty often, English being a complete whore of a language. 'Vignettes', for instance, will de-pluralize to 'vignett'. 'Brother' ends up as 'broth' (as does 'brothers' and 'brethren'). So you might get some soup related false-postives in this case, but no false-negatives. And you'll only get the false-positives when the output happens to be a word, which is moderately rare.