Fidel Tools is a modular, schema-driven pre-processing and Natural Language Processing (NLP) toolkit designed specifically for Amharic and other Ethiopic script text
The most comprehensive, schema-driven NLP pre-processing framework for Amharic.
Website ·
Issues ·
Contributing
---
## What is Fidel Tools?
Fidel Tools is a modular, schema-driven pre-processing and Natural Language Processing (NLP) toolkit designed specifically for Amharic and other Ethiopic script text. It provides high-performance components out of the box including character normalization, sentence boundary tokenization, prefix-aware stopword removal, light stemming, and bidirectional transliteration.
Natural Language Processing in the Ethiopic ecosystem is a half-solved problem. Most implementations require hardcoded, unconfigurable logic and suffer from low accuracy. We believe developers deserve a production-grade, highly customizable solution hence, **Fidel Tools**.
---
## Packages
Fidel Tools is managed as a monorepo workspace. Check the individual package directories and their respective changelogs:
| Package | Description | Version | Changelog |
| :--- | :--- | :--- | :--- |
| `@fidel-tools/core` | Core processing pipeline and NLP engine | `0.1.9` | Changelog |
| `@fidel-tools/lang-am` | Amharic language pack & schema configurations | `0.1.9` | Changelog |
| `@fidel-tools/validate-pack` | CLI tool to validate & fix language packs | `0.1.9` | Changelog |
| `fidel-tools` (Python) | Python bindings for the core native Rust engine | `0.1.9` | README |
---
## Quick Start
### Installation
**Node.js**:
```bash
pnpm add @fidel-tools/core @fidel-tools/lang-am
```
**Python**:
```bash
pip install fidel-tools
```
### Usage
**Node.js**:
```typescript
import { Pipeline } from '@fidel-tools/core'
import amPack from '@fidel-tools/lang-am'
const nlp = new Pipeline(amPack)
// Normalize homophones, labialization, and gemination
const text = nlp.normalize("ሐኪም ኀይሉ በልቷልልል!")
console.log(text) // "ሃኪም ሃይሉ በልቱዋልል!"
// Remove stopwords using boundary rules
const cleaned = nlp.removeStopwords("ያወጣውን የተጨማሪ እሴት")
console.log(cleaned) // "ያወጣውን የ እሴት" …