Logo Lanfrica

HagosAlema/habesha-names-android

Domain:

natural language processing

Record type:

software
Creator:
Hag
Host:
Ethiopian/Eritrean name intelligence for Kotlin and Android: parsing, fidel transliteration, spelling-variant generation, and patronymic-aware fuzzy matching with an explanation for every score. # habesha-names (Kotlin) **Ethiopian/Eritrean name intelligence for Kotlin and Android:** parsing, fidel transliteration, spelling-variant generation, and patronymic-aware fuzzy matching with an explanation for every score. > A Kotlin port of the Python library > `habesha-names` by **Robel > Shemeles**, used under the MIT License. See UPSTREAM.md for > provenance, what is reproduced unchanged, and how fidelity is verified. > **Status: complete.** All nine public functions are ported and > differential-tested against upstream, the 1,752-pair golden corpus passes, and > the Compose UI layer is in place. ## Why this exists Habesha names break every global identity system: 1. **No family names.** A full name is given name + father's given name (+ grandfather's). "First name / Last name" fields are semantically wrong. 2. **No standard romanization.** ጸሐይ → Tsehay / Tsehai / Sehay / Tzehay. One person, four database records. 3. **Compound given names.** "Haile Mariam" can be one given name (Hailemariam) or given + patronym. Naive tokenizers guess wrong. 4. **Abbreviation conventions.** Gebremedhin → G/Medhin, G.Medhin, Gebre Medhin — all common in official documents. 5. **Fidel homophones.** ሀ/ሐ/ኀ, ሰ/ሠ, ጸ/ፀ, አ/ዐ are pronounced identically, and spelling varies by writer. Intended for KYC/AML and sanctions screening, remittance platforms, HR and payroll, humanitarian registration, and deduplication pipelines. ## Design principles Inherited from upstream, and non-negotiable here too: | Principle | Why | |---|---| | **No third-party runtime dependencies** | Adoption without supply-chain review friction. The published POM lists only `kotlin-stdlib`. | | **Deterministic** — no ML, no network, no device-dependent data | Compliance and audit requirements | | **Explainable** — every score ships an explanation object | An analyst has to justify a match | | **Data as reviewable assets** | Linguistic data lives in JSON with `verified` flags, never hand-typed into code | | * …