| ---
|
| title: ZuZu Writer
|
| emoji: ✍️
|
| colorFrom: gray
|
| colorTo: blue
|
| sdk: docker
|
| app_port: 7860
|
| pinned: false
|
| ---
|
|
|
| # ZuZu Writer
|
|
|
| The existing React interface backed by a CPU-friendly rewriting engine:
|
| structural spaCy reordering, local T5 paraphrase fallback, MiniLM safety,
|
| and low-impact synonym refinement.
|
|
|
| ## Local run
|
|
|
| ### 1. Backend deps
|
|
|
| ```bash
|
| pip install -r requirements.txt
|
| # spaCy en_core_web_sm is included via the wheel URL in requirements.txt
|
| ```
|
|
|
| ### 2. Environment
|
|
|
| ```bash
|
| copy .env.example .env
|
| ```
|
|
|
| Structural rewriting is the first pass. Unchanged rewriteable sentences are
|
| then paraphrased with a local CPU T5 model and ranked by MiniLM similarity.
|
| With `ENGINE_PARAPHRASE_PRIMARY=true`, a more divergent paraphrase can also
|
| replace a light structural rewrite so a second pass (out1→out2) moves further.
|
| Low-impact synonyms can still apply afterward. Keep
|
| `ENGINE_FORCE_REWRITE=false` to avoid the old fixed `It is … that …` cleft.
|
|
|
| ### 3. Build the existing UI
|
|
|
| ```bash
|
| cd frontend
|
| npm install
|
| npm run build
|
| cd ..
|
| ```
|
|
|
| ### 4. Start the application
|
|
|
| ```bash
|
| python app.py
|
| ```
|
|
|
| Open the UI at http://127.0.0.1:7860 and API documentation at `/docs`.
|
|
|
| ### LanguageTool (self-hosted)
|
|
|
| The Docker image embeds LanguageTool. It may take 1–2 minutes to become ready.
|
|
|
| **Local:**
|
|
|
| ```bash
|
| docker compose up languagetool -d
|
| ```
|
|
|
| Set in `.env`: `LANGUAGE_TOOL_URL=http://127.0.0.1:8010`
|
| See [docs/GRAMMAR_SETUP.md](docs/GRAMMAR_SETUP.md).
|
|
|
| ## API
|
|
|
| - `GET /health`
|
| - `GET /v1/auth/config`
|
| - `GET /v1/me`
|
| - `POST /v1/rewrite`
|
| - `POST /v1/grammar`
|
|
|
| Rewrite request:
|
|
|
| ```json
|
| {"text": "Ram went to school yesterday happily."}
|
| ```
|
|
|
| The response includes rewritten text, per-sentence status and confidence,
|
| template IDs, optional lexical-change metadata, skipped sentences,
|
| original-to-rewritten mappings, and batch stats.
|
|
|
| ## Docker
|
|
|
| ```bash
|
| docker compose up --build
|
| ```
|
|
|
| ## Deploy (Hugging Face)
|
|
|
| Use a **Docker** Space (`app_port: 7860`), not Gradio SDK. Prefer **CPU basic**.
|
|
|
| ## Design
|
|
|
| - spaCy tokenization, dependency parsing, and NER
|
| - confidence-ranked deterministic templates
|
| - sentence-level grammar repair with LanguageTool/local fallback
|
| - entity, number, negation, tense, and semantic safety checks
|
| - optional Open English WordNet sense-matched vocabulary refinement
|
| - paragraph batches for 10,000+ word documents
|
| - untouched tables, code, formulas, citations, lists, and bibliography blocks |