Somali News Extractive Text Summarization
# Somali Summarization Monorepo
Reusable Somali extractive summarization project split into a Vercel-ready frontend, a Docker-ready API, and a shared
Python NLP package.
## Research Artifact
`Master's Thesis Project` `SIMAD University` `Somali NLP Research`
`Dataset: 500 Somali News Articles` `Evaluation: ROUGE Benchmark` `Methods: TF-IDF, TextRank, LexRank`
## Quick Start
Clone the repository:
```bash
git clone
github.com
cd Somali-News-Extractive-Text-Summarization
```
Run backend:
```bash
uvicorn main:app --reload --host 127.0.0.1 --port 8000 --app-dir apps/api
```
Run frontend:
```bash
cd apps/web
npm install
npm run dev
```
Open:
```text
localhost
```
## System Architecture
The project is composed of four layers:
- Problem: Somali news summarization lacks transparent baseline systems that are easy to inspect, rerun, and compare.
- Core: `packages/nlp-core` provides a method-agnostic summarization interface and evaluation helpers for reproducible NLP work.
- Service: `apps/api` exposes stable FastAPI endpoints with request IDs, timing headers, deterministic compare behavior, and typed error responses.
- Product: `apps/web` provides an interactive workbench with compare mode, sentence highlighting, and local run history.
- Evaluation: the metrics and reproducibility docs make the repository usable as both a demo system and a benchmark starting point.
## Quickstart (Local)
1. Install Python dependencies:
```bash
python -m pip install -e "packages/nlp-core[dev,eval]" -e "apps/api[dev]"
```
2. Start the API:
```bash
uvicorn main:app --reload --host 127.0.0.1 --port 8000 --app-dir apps/api
```
3. In a second terminal, start the web app:
```bash
cd apps/web
npm ci
npm run dev
```
4. Create `apps/web/.env.local` with:
```env
NEXT_PUBLIC_API_BASE_URL=
127.0.0.1
```
5. Open `
127.0.0.1`.
5. Before a deploy, run the web validation sequence:
```bash
c …