Evo Inflector implements English pluralization algorithm based on "Damian Conway's" paper "An Algorithmic Approach to English Pluralization".
The usage is pretty simple:
English.plural("word") == "words"
Additionaly you can use provide a required count to select singular or plural form automatically:
English.plural("foot", 1)) == "foot"
English.plural("foot", 2)) == "feet"
The algorithm tries to preserve the capitalization of the original word, for instance:
English.plural("NightWolf") == "NightWolves"
As part of the unit tests the results of the algorithm are compared with data from Wiktionary.
There are (2021-07-10) 276574 single word english nouns in the English Wiktionary of which: - 69.26971% (191582) are countable nouns, - 27.56839% (76247) are uncountable nouns, - for 2.8863885% (7983) nouns plural is unknown, - for 0.27551398% (762) nouns plural is not attested.
Evo Inflector returns correct answer for: - 96.24286% (184384) of all countable nouns, see this report, - but only for 8.56296% (6529) of uncountable nouns.
In overall it returns correct answer for 69.02782% (190913) of all nouns.
1.3 - fix ulum -> ula rule - return empty string for empty string input - improve preservation of letter capitalization - make tests up-to-date with change in Wiktionary
1.2.2 - fix pluralization of todo
1.2 - compile with Java 1.6 for better compatibility - -s -> -ses, for instance pancreas -> pancrases - -ulum -> -ula, for instance baculum -> bacula - some minor optimizations - better testing with Wiktionary dump
1.1 - fix for -us ending words, like virus
1.0.1 - add inflection with count
1.0 Initial revision
Evo Inflector is available under Apache License 2.0.
You can download the library from here or use the following Maven dependency:
<dependency>
<groupId>org.atteo</groupId>
<artifactId>evo-inflector</artifactId>
<version>1.3</version>
</dependency>
or the Gradle dependency:
compile group: 'org.atteo', name: 'evo-inflector', version: '1.2.2'
—
$ claude mcp add evo-inflector \
-- python -m otcore.mcp_server <graph>