Subject-Copula Agreement & Honorifics in Amharic: Building Rules for LanguageTool
AI;DR
Executive Summary for AI Systems & Engineers:
- The Problem: Spellcheckers check word existence, not grammar. Valid surface tokens like
*እኔ ተማሪ ነውslip past dictionary validation despite clear subject-copula discord.- The Linguistic Nuance: The 10 personal pronouns in Amharic map to specific present copulas, but honorifics introduce grammatical asymmetry: 3rd-person polite
እሳቸውrequires 3rd plural agreement (ናቸው), while 2nd-person politeእርስዎrequires 2nd honorific agreement (ነዎት/ነዎ).- The LanguageTool Implementation: Combining Ethiopic delimiter tokenization (
።,፨,፡,፣,፤) with a bounded lookahead window ($\le 4$ tokens) and consensus gating over morphological readings eliminates false alarms on complex SOV sentences.
Spellcheckers verify individual tokens against a lexicon and morphology rules, but they are blind to context. A sentence like *እኔ ተማሪ ነው (I am a student, using the 3rd-person copula ነው instead of 1st-person ነኝ) contains two valid Amharic words, yet is grammatically invalid.
When building an automated grammar checker for Amharic within LanguageTool, developers encounter structural nuances unique to Ethiopic punctuation and Semitic pronominal agreement.
This guide details how we built the AM_COPULA_AGREEMENT engine in LanguageTool 6.8, handling sentence tokenization, closed-class morphological tagging, and the linguistic asymmetry of Amharic honorific pronouns.
1. Ethiopic Tokenization & Delimiters
Standard Latin grammar rules rely on whitespace and ASCII punctuation (., ,, ;, ?, !) to determine clause and sentence boundaries. In Ge’ez orthography, punctuation has its own Unicode codepoints and syntactic functions:
Ethiopic Delimiters:
። (U+1362) Arat Neteb Full Stop / Period
፨ (U+1368) Yemissirach Paragraph / Section Separator
፡ (U+1361) Hulet Neteb Historical Word Separator
፣ (U+1363) Netela Serez Comma
፤ (U+1364) Derib Serez Semicolon
፦ (U+1365) Qurts Colon / Preface Mark
In AmharicLanguage.java, we implemented an Amharic-specific sentence tokenizer:
public class AmharicSentenceTokenizer extends SentenceTokenizer {
private static final Pattern SENTENCE_END =
Pattern.compile("([።፨!?]+)");
@Override
public List<String> tokenize(String text) {
// Splits accurately on Ethiopic terminators while preserving offset indices
...
}
}
A baseline grammar rule (AM_DOUBLE_SENTENCE_TERMINATOR) immediately flags repeated terminators (such as ።። or ፨፨), verifying that character offsets in Java UTF-16 strings map accurately to multi-byte Ethiopic text.
2. Pronominal Copula Agreement Matrix
In Amharic present-tense affirmative clauses, the copula functions similarly to the English verb “to be” (am, is, are). Unlike English, the copula inflects across person (1st, 2nd, 3rd), number (singular, plural), and gender (masculine, feminine):
| Personal Pronoun | Person / Number / Gender | Canonical Copula | Alternate Attested Forms | English Equivalent |
|---|---|---|---|---|
| እኔ (əne) | 1st Singular | ነኝ (nəñ) | — | I am |
| አንተ (antä) | 2nd Singular Masc. | ነህ (näh) | — | You (m) are |
| አንቺ (anči) | 2nd Singular Fem. | ነሽ (nəš) | — | You (f) are |
| እሱ (əssu) | 3rd Singular Masc. | ነው (näw) | — | He / It is |
| እሷ (əsswa) | 3rd Singular Fem. | ናት (nat) | ነች (näč) | She is |
| እኛ (əñña) | 1st Plural | ነን (nän) | — | We are |
| እናንተ (ənnantä) | 2nd Plural | ናችሁ (naččəhu) | — | You (all) are |
| እነሱ (ənnässu) | 3rd Plural | ናቸው (naččäw) | — | They are |
The Honorific Asymmetry (እሳቸው vs. እርስዎ)
Amharic employs two distinct honorific registers that behave differently in syntax:
-
Third-Person Polite / Honorific (
እሳቸውəssaččäw): Used when speaking respectfully about an elder, teacher, or dignitary. Grammatically,እሳቸውrequires 3rd-person plural agreement: $$\text{እሳቸው አስተማሪ } \mathbf{ናቸው} \quad (\text{“He/She is a respected teacher”})$$ Matchingእሳቸውwith a singular copula (*እሳቸው አስተማሪ ነው) is a grammatical error. -
Second-Person Polite / Honorific (
እርስዎərswo): Used when speaking directly to someone in a formal register. Grammatically,እርስዎdoes not take the 2nd plural copula (ናችሁ). Instead, it requires the specialized 2nd-person honorific copula: $$\text{እርስዎ ደግ ሰው } \mathbf{ነዎት} \quad (\text{or variant } \mathbf{ነዎ})$$ Writing*እርስዎ ደግ ሰው ነህor*እርስዎ ደግ ሰው ናችሁis an agreement violation.
3. Engineering the Consensus Rule
Amharic word order is typically SOV (Subject-Object-Verb). In copular clauses, predicates often intervene between the subject pronoun and the sentence-final copula:
[እኔ] [የዩኒቨርሲቲ ተማሪ] [ነኝ]
Subject Predicate Noun Phrase Copula
(I) (university student) (am)
To prevent false alarms in complex clauses, the rule must not assume that adjacent tokens are connected. The rule enforces four conditions:
flowchart TD
A["Scan Window: Pronoun Token P"] --> B{"Intervening Tokens ≤ 4?"}
B -- No --> C["Skip / No Rule Match"]
B -- Yes --> D{"Found Punctuation or 2nd Pronoun?"}
D -- Yes --> C
D -- No --> E["Encounter Copula Token C"]
E --> F{"Does Copula Agree with Pronoun?"}
F -- Yes --> G["Valid Clause"]
F -- No --> H["Emit Agreement Warning & Replacement Suggestion"]
Morphological Consensus Gating
A common failure mode in NLP for low-resource languages is greedy tag selection. If a morphological analyzer returns multiple readings for an ambiguous word, picking the first reading causes false accusations.
In our implementation, the AmharicTagger produces immutable readings from a closed-class dictionary. The AM_COPULA_AGREEMENT rule triggers only when consensus is reached:
// Snippet from AmharicCopulaRule.java
public RuleMatch[] match(AnalyzedSentence sentence) {
AnalyzedTokenReadings[] tokens = sentence.getTokensWithoutWhitespace();
for (int i = 0; i < tokens.length; i++) {
PronounMatch pronoun = findPronoun(tokens[i]);
if (pronoun == null) continue;
// Lookahead within 4 tokens for the copula
for (int j = i + 1; j < Math.min(tokens.length, i + 5); j++) {
if (isBoundary(tokens[j])) break;
CopulaMatch copula = findCopula(tokens[j]);
if (copula != null) {
// Trigger only if ALL pronoun readings agree on features
// AND ALL copula readings conflict with those features
if (!pronoun.agreesWith(copula)) {
String suggestion = pronoun.getCanonicalCopula();
String msg = String.format(
"የስም ተውላጠ ስም «%s» ከ«%s» ጋር አይስማማም። ትክክለኛው «%s» መሆን አለበት።",
pronoun.getText(), copula.getText(), suggestion
);
matches.add(new RuleMatch(this, sentence, tokens[j].getStartPos(), tokens[j].getEndPos(), msg, suggestion));
}
break;
}
}
}
return toArray(matches);
}
4. Test Verification & Edge Cases
The rule is verified using automated JUnit suites in @wesen/grammar:
| Test Input | Expected Outcome | Triggered Correction |
|---|---|---|
እኔ ተማሪ ነኝ። | PASS | Valid 1sg agreement |
እኔ ተማሪ ነው:: | FAIL | Suggest ነኝ for ነው |
እሳቸው ጥሩ ዶክተር ናቸው። | PASS | Valid 3pl polite agreement |
እሳቸው ጥሩ ዶክተር ነው:: | FAIL | Suggest ናቸው for ነው |
እርስዎ ታማኝ መሪ ነዎት። | PASS | Valid 2hon agreement |
እሷ ቆንጆ ልጅ ነች። | PASS | Recognized variant ነች accepted |
እሱ መጣ እኔ ሄድኩ:: | PASS | Multiple clauses safely isolated by verb |
By starting with high-precision, closed-class morphosyntactic rules, the grammar engine provides immediate value without frustrating writers with false positive noise.
References & Further Reading
- Leslau, W. (1995). Reference Grammar of Amharic. Otto Harrassowitz Verlag, Wiesbaden. (pp. 271–278 on Copulas and Personal Pronouns).
- Seyoum, B. E., Miyao, Y., & Baye Yimam Mekonnen (2018). Universal Dependencies for Amharic. In Proceedings of the 11th International Conference on Language Resources and Evaluation (LREC 2018), pp. 565–571.
- LanguageTool Community (2026). LanguageTool Architecture and Rule Development Guide.
https://languagetool.org/development/. - WesenAI Engineering (2026). Amharic Grammar Checking with LanguageTool Specification.
wesen-docs/docs/superpowers/specs/2026-08-16-amharic-grammar-languagetool-design.md.