# 🧠 Yoruba ↔ English Neural Machine Translation
This project focuses on building a Neural Machine Translation (NMT) system to translate between Yoruba and English using a Transformer-based architecture inspired by Google's Attention Is All You Need paper.
Yorùbá is a low-resource language predominantly spoken in Nigeria and across the diaspora. Existing parallel datasets are limited and largely religious in nature. Despite these challenges, this project successfully trains high-performing translation models using fewer than 600,000 sentence pairs.
---
## 🚀 Project Overview
- **Goal**: Build monolingual Transformer models for Yoruba ⇄ English translation.
- **Architecture**: Custom implementation of the Transformer model using TensorFlow/Keras.
- **Pipeline Phases/Directory Structures**:
- `data/train/`: Pretraining on large datasets from scratch.
- `data/dev/`: Fine-tuning and experimentation on smaller or domain-specific subsets.
- `data/test/`: Final evaluation and inference.
- `notebook/`: Contains high-level execution logic and experimental notebooks.
- `models/`: Contains the models saved from the notebooks.
- `utils/`, `transformer/`, `tokenizer/`: Custom utility modules, Transformer layers and model, and tokenization logic.
---
## 📊 Results
- **Training Accuracy**: Peaked around the 60% range (masked accuracy).
- **BLEU Score**: Ranged from 70%–78% across ~6,000+ evaluation samples.
- **Best Performance**: Achieved when evaluating Yoruba → English translations in batch mode on GPU.
---
## 🖥️ Platform
- All training and fine-tuning were done using the free GPU on Kaggle.
---
## 📁 Dataset Sources
All data used were manually processed, cleaned, and renamed before training. The names seen in the codebase reflect the final cleaned versions.
### 🔗 Aggregated Public Datasets
- Andrews2017/africanlp-public-datasets
- Origin of many datasets including:
- `train.tsv`, `dev.tsv`, `test.tsv` from menyo-20k
- `test_yo_en.tsv`, `GNOME_yo_en.tsv`, `opus_yo_e …