any2human / README.md
idnameraj's picture
Re-enable primary T5 paraphrase for stronger out1→out2 divergence.
24a79a8
|
Raw
History Blame Contribute Delete
2.53 kB
---
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