# Multilingual Health Question Answering in Low-Resource African Languages
**Zindi Competition:** Multilingual Health Question Answering in Low-Resource African Languages
**Author:** Elvis Kayonga | **Leaderboard:** KayongaElvis | **Public Score:** 0.3922
---
## Overview
This repository contains the full pipeline for the Zindi Multilingual Health QA challenge. The project implements:
1. A complete **seq2seq fine-tuning pipeline** using `google/mt5-small` (designed for Google Colab execution)
2. **13 retrieval-based experiments** using TF-IDF cosine similarity as a practical alternative when GPU compute was unavailable
3. A systematic **experiment log** and **EDA report**
The repository is organized for reproducibility — another student or instructor can run the preprocessing and retrieval experiments immediately with no GPU required. The neural training pipeline requires a GPU (Google Colab recommended).
---
## Repository Structure
```
african-language-health-qa-challenge/
├── README.md
├── requirements.txt
├── ElvisKayonga_FinalProject.md # Academic report
├── EXPERIMENT_LOG.csv # Experiment tracking
├── eda_analysis.ipynb # EDA notebook
│
├── Train.csv / Val.csv / Test.csv / SampleSubmission.csv
│
├── src/
│ ├── preprocess.py # Step 1: Data preprocessing
│ ├── train.py # Step 2: mT5 fine-tuning (GPU required)
│ ├── predict.py # Step 3: Neural inference
│ ├── submission.py # Step 4: Format converter
│ │
│ ├── predict_baseline.py # Experiment 1: Exact match baseline
│ ├── predict_semantic_knn.py # Experiment 2: TF-IDF k-NN (k=5)
│ ├── predict_hybrid_top1.py # Experiment 3: Top-1 retrieval
│ ├── predict_hybrid_weighted.py # Experiment 5+6: Bigrams + quality scoring
│ ├── predict_diversity_aware.py # Experiment 7: Diversity-aware selection
│ ├── predict_ensemble.py # Experiment 9: Simple voting ensem …