Text.Inflect.En (Text v0.6.1)

Copy Markdown View Source

Pluralisation for the English language based on the paper An Algorithmic Approach to English Pluralization.

Summary

Functions

Pluralize an english noun, pronoun, verb or adjective.

Pluralize an english adjective.

Pluralize an english noun.

Pluralize an english verb.

Singularize an English word.

Singularize an English noun.

Functions

do_genetive(word, suffix)

is_genetive(word)

is_indefinite_article(word)

is_possessive_pronoun(word)

pluralize(word, mode \\ :modern)

Pluralize an english noun, pronoun, verb or adjective.

Arguments

  • word is any English word.

  • mode is :modern or :classical. The default is :modern. This applies to nouns only.

Returns

  • a String representing the pluralized word.

Notes

mode when :classical applies pluralization on latin nouns in english but with latin suffixes.

Examples

iex> Text.Inflect.En.pluralize "fish"
"fish"

iex> Text.Inflect.En.pluralize "soliloquy"
"soliloquies"

iex> Text.Inflect.En.pluralize "genius", :classical
"genii"

iex> Text.Inflect.En.pluralize "has"
"have"

iex> Text.Inflect.En.pluralize "catches"
"catch"

iex> Text.Inflect.En.pluralize "child's"
"children's"

iex> Text.Inflect.En.pluralize "Mary's"
"Marys'"

pluralize_adjective(word)

Pluralize an english adjective.

Arguments

  • word is any English adjective.

Returns

  • a String representing the pluralized adjective

Examples

iex> Text.Inflect.En.pluralize_adjective "a"
"some"

iex> Text.Inflect.En.pluralize_adjective "my"
"our"

iex> Text.Inflect.En.pluralize_adjective "child's"
"children's"

iex> Text.Inflect.En.pluralize_adjective "Mary's"
"Marys'"

pluralize_noun(word, mode \\ :modern)

Pluralize an english noun.

Arguments

  • word is any English noun.

  • mode is :modern or :classical. The default is :modern.

Returns

  • a String representing the pluralized noun

Notes

mode when :classical applies pluralization on latin nouns used in english but with latin suffixes.

Examples

iex> Text.Inflect.En.pluralize_noun "Major general"
"Major generals"

iex> Text.Inflect.En.pluralize_noun "fish"
"fish"

iex> Text.Inflect.En.pluralize_noun "soliloquy"
"soliloquies"

iex> Text.Inflect.En.pluralize_noun "genius", :classical
"genii"

iex> Text.Inflect.En.pluralize_noun "genius"
"geniuses"

iex> Text.Inflect.En.pluralize_noun "platypus", :classical
"platypodes"

iex> Text.Inflect.En.pluralize_noun "platypus"
"platypuses"

pluralize_verb(word)

Pluralize an english verb.

Arguments

  • word is any English verb.

Returns

  • a String representing the pluralized verb

Examples

iex> Text.Inflect.En.pluralize_verb "has"
"have"

iex> Text.Inflect.En.pluralize_verb "catches"
"catch"

singularize(word, mode \\ :modern)

Singularize an English word.

Inverts pluralize/2: given a plural noun (or pronoun), returns its singular form. Inputs that are already singular, or that aren't recognised as a plural, are returned unchanged.

Arguments

  • word is the word to singularize.

  • mode is one of :modern (default) or :classical. The classical mode uses Latin/Greek classical singulars where applicable (e.g. octopodes → octopus in classical, vs. octopuses → octopus in modern).

Returns

  • The singular form as a string. Words that don't appear plural (or that have no known singular) are returned unchanged.

Examples

iex> Text.Inflect.En.singularize "mice"
"mouse"

iex> Text.Inflect.En.singularize "children"
"child"

iex> Text.Inflect.En.singularize "octopuses"
"octopus"

iex> Text.Inflect.En.singularize "octopodes", :classical
"octopus"

iex> Text.Inflect.En.singularize "cities"
"city"

iex> Text.Inflect.En.singularize "knives"
"knife"

singularize_noun(word, mode \\ :modern)

Singularize an English noun.

Lower-level than singularize/2: skips the pronoun and non-inflecting checks. Useful when callers have already filtered the input to nouns.

Arguments

  • word is the noun to singularize.

  • mode is :modern (default) or :classical.

Returns

  • The singular form as a string.

Examples

iex> Text.Inflect.En.singularize_noun "octopuses"
"octopus"

iex> Text.Inflect.En.singularize_noun "platypodes", :classical
"platypus"