Skip to content

Grammar

This is the core reference page of the Esperanto section. It collects the rules a rule-based pipeline needs — for the tokenizer, the lemmatizer, the POS tagger and stop-word handling. Because Esperanto's morphology has no exceptions, each rule below can be turned almost directly into code.

The guiding idea: an Esperanto word is built from a root plus grammatical endings and optional affixes. Strip the endings and affixes and you have the lemma; read the endings and you have the part of speech and the inflection.

What this page leaves out

The participles (-ant-, -int-, -ont- active; -at-, -it-, -ot- passive), the compound tenses built from them with esti, and the passive voice are just as regular, but they are not covered here. A pipeline that implements only the rules below will mis-analyse forms like leganta, legita or estas legata.

Reference

The rules and examples on this page follow the classic A Complete Grammar of Esperanto by Ivy Kellerman Reed (1910), a public-domain work included in the repository at resources/esperanto/books/esperanto_grammar.txt. See Resources § Books for the full citation.

Alphabet

Esperanto uses a 28-letter Latin alphabet. It is strictly phonetic: every letter is always pronounced the same way, and every sound is written with exactly one letter. Six letters carry diacritics: the five circumflexed consonants are used by no other language, and ŭ also appears in the Belarusian Latin alphabet.

Letter Name Sound (approx.)
ĉ ĉo ch in "church"
ĝ ĝo g in "gem"
ĥ ĥo ch in Scottish "loch"
ĵ ĵo s in "measure"
ŝ ŝo sh in "ship"
ŭ ŭo w in "how" (used in diphthongs)

The letters q, w, x, y are not part of the alphabet.

Encoding matters for tokenization

The diacritics are real Unicode letters (ĉ is U+0109), not c plus a combining mark — but text found in the wild may use either form. Two ASCII fallbacks also exist for keyboards that cannot type the diacritics:

  • the x-system: cx gx hx jx sx ux for ĉ ĝ ĥ ĵ ŝ ŭ;
  • the h-system (from the Fundamento): ch gh hh jh sh u.

A robust tokenizer should normalise input to a single canonical form (Unicode NFC, real diacritics) before applying any other rule. This project's data files keep the real diacritics and never the x-system (see resources/README.md).

Word-class endings

This is the single most useful rule for POS tagging and lemmatization: the final vowel of a full word marks its part of speech.

Ending Word class Example Root Meaning
-o noun libro libr- book
-a adjective bona bon- good
-e adverb (derived) rapide rapid- quickly
-i verb (infinitive) kanti kant- to sing

From one root you get the whole family: muziko (music), muzika (musical), muzike (musically). To lemmatize, strip the grammatical ending (and any inflection below) to recover the root, then re-attach the class vowel to get the dictionary form.

Grammatical inflections

Nouns and adjectives take two optional endings, always after the class vowel:

Ending Meaning Example
-j plural libroj (books), bonaj (good, pl.)
-n accusative (direct object) libron, bonan
-jn plural and accusative bonajn librojn

Two rules make these fully regular:

  • Adjectives agree with their noun in both number and case: "la bonaj libroj", "mi legas interesajn librojn".
  • The order is fixed: root → class vowel → -j → -n. So the parse of librojn is libr- + -o (noun) + -j (plural) + -n (accusative).

The accusative also marks direction of motion, but for morphological analysis the -n suffix is what matters.

Verb system

Verbs do not conjugate for person or number — only for tense and mood, with a single ending each. The same root takes any of these:

Ending Tense / mood Example (kant-, sing)
-as present kantas (sing / sings)
-is past kantis (sang)
-os future kantos (will sing)
-us conditional kantus (would sing)
-u imperative / volitive kantu! (sing!)
-i infinitive kanti (to sing)

mi kantas, vi kantas, ili kantas — the verb never changes for the subject. To lemmatize a verb, replace its tense/mood ending with -i (kantis → kanti).

The article

There is one article, the definite la ("the"). It is invariable — no plural, no gender, no case:

  • la libro (the book), la libroj (the books), la bona libro (the good book).

There is no indefinite article: libro means both "a book" and simply "book". la is a natural stop-word (see Stop-words).

Personal pronouns

The pronouns are a small, closed set — ideal to hard-code:

Pronoun Meaning Possessive (+ -a)
mi I mia
vi you (sg. & pl.) via
li he lia
ŝi she ŝia
ĝi it ĝia
ni we nia
ili they ilia
oni one / people (impersonal) onia
si reflexive (himself/herself/itself/themselves) sia

The accusative of a pronoun adds -n: min (me), vin, lin, ŝin, nin, ilin. The possessives are ordinary adjectives, so they also inflect: miajn librojn (my books, acc. pl.).

Correlatives

The correlatives are a strikingly regular 5 × 9 grid of 45 common words (this/that/which/some/every/no + thing/person/place/time/reason…). Each is a prefix (the meaning category) plus an ending (the type). Learn the grid and you get all 45 for free.

The five prefixes:

Prefix Meaning
ki- interrogative / relative (wh-, "which")
ti- demonstrative ("that")
i- indefinite ("some")
ĉi- universal ("every", "all")
neni- negative ("no", "none")

The nine endings and the full table:

Ending → type ki- ti- i- ĉi- neni-
-o thing kio tio io ĉio nenio
-u individual kiu tiu iu ĉiu neniu
-a kind kia tia ia ĉia nenia
-es possession kies ties ies ĉies nenies
-e place kie tie ie ĉie nenie
-am time kiam tiam iam ĉiam neniam
-al reason kial tial ial ĉial nenial
-el manner kiel tiel iel ĉiel neniel
-om quantity kiom tiom iom ĉiom neniom

The -u and -a correlatives take both -j and -n (tiujn, kiuj), like the nouns and adjectives they resemble. The -o correlatives take -n but never -j (kion, tion — there is no tioj), and the -e correlatives take -n to mark direction (tien, kien). The other five endings are invariable.

All 45 are stop-words, and this table is the only place the project stores them: resources/esperanto/vortoj.json holds roots, not forms, so a lemmatizer is expected to generate the grid from the two axes above rather than look words up. See resources/README.md § Roots, not forms.

A drill for the grid

esperanto12.net/en/tabelvortoj walks through the table cell by cell with example sentences — the fastest way to stop reading it as 45 separate words.

Affixes

Affixes are what make Esperanto vocabulary compositional — and they are the heart of lemmatization, because a long word is usually a root wrapped in affixes. They attach between the root and the grammatical ending.

Prefixes

Prefix Meaning Example
mal- direct opposite bona → malbona (good → bad)
ge- both sexes together patro → gepatroj (father → parents)
ek- sudden start / brief action iri → ekiri (to go → to set off)
re- again / back veni → reveni (to come → to return)
dis- separation, scattering doni → disdoni (to give → to distribute)
mis- wrongly kompreni → miskompreni (to misunderstand)
bo- relation by marriage patro → bopatro (father-in-law)
pra- primordial / great- (kinship) avo → praavo (great-grandfather)

Suffixes

Suffix Meaning Example
-in- female patro → patrino (father → mother)
-ist- professional / adherent instrui → instruisto (teacher)
-ej- place for lerni → lernejo (to learn → school)
-il- tool / instrument tranĉi → tranĉilo (to cut → knife)
-ar- collection / set arbo → arbaro (tree → forest)
-et- diminutive (smaller) domo → dometo (house → cottage)
-eg- augmentative (bigger) domo → domego (house → mansion)
-ul- person characterised by juna → junulo (young → youth)
-an- member / inhabitant urbo → urbano (city → citizen)
-ec- abstract quality bona → boneco (good → goodness)
-ig- to make / cause granda → grandigi (big → to enlarge)
-iĝ- to become ruĝa → ruĝiĝi (red → to blush)
-ind- worthy of ami → aminda (to love → lovable)
-em- inclined to labori → laborema (to work → hardworking)
-aĉ- pejorative (bad quality) domo → domaĉo (house → hovel)

Affixes stack. mal-san-ul-ej-o = mal- (opposite) + san- (health) + -ul- (person) + -ej- (place) + -o (noun) = hospital (literally "place for unhealthy persons"). A lemmatizer that knows this affix table can decompose such words by rule.

Numbers and compounding

The cardinal numbers are built from a handful of roots:

0 1 2 3 4 5 6 7 8 9 10 100 1000
nul unu du tri kvar kvin ses sep ok naŭ dek cent mil

Larger numbers are compounded by juxtaposition: dek du (12), dudek (20), dudek unu (21), cent tridek kvin (135). Adding endings derives related words:

  • ordinals with -a: unua (first), dua (second);
  • multiples with -obl-: duobla (double);
  • fractions with -on-: duono (a half), kvarono (a quarter);
  • collectives with -op-: duope (in twos).

More generally, any two roots can compound into one word, with the last root as the head: vapor-ŝipo (steamship), dorm-o-ĉambro (bedroom, with a connecting -o- for pronounceability). The compound's word class comes from its final ending, exactly as for a single root.

Worked examples

Putting the rules together, here is a sentence parsed word by word:

La juna instruistino legas interesan libron. "The young (female) teacher is reading an interesting book."

Word Decomposition Analysis
La la article (stop-word)
juna jun- + -a adjective — "young"
instruistino instru- + -ist- + -in- + -o noun — "female teacher"
legas leg- + -as verb, present — "reads" (lemma legi)
interesan interes- + -a + -n adjective, accusative — "interesting"
libron libr- + -o + -n noun, accusative — "book" (lemma libro)

A second example shows plural, accusative agreement and a correlative:

Ĉiuj miaj amikoj legas tiujn librojn. "All my friends are reading those books."

Ĉiuj (correlative ĉiu + -j), miaj (possessive mia + -j), amikoj (amik-o-j) — the subject is plural, so nothing takes -n; tiujn librojn (tiu-j-n, libr-o-j-n) is the plural accusative object, and the demonstrative agrees with its noun. This regular agreement is precisely what a rule-based tagger can verify and exploit.

Where to go next

  • Word lists — the stop-word list in full, generated from the data the library reads.
  • Python Library § API — how these rules become a Doc / Token interface.