github ksanyok/TextHumanize v0.35.0
v0.35.0 — detection-quality overhaul + self-improving weights

5 hours ago

Evidence-driven detection overhaul, a media false-positive fix, and a new self-improving-weights pipeline.

Detection

  • New structure metric — enumeration/list-intro/participial-tail/negative-parallelism scaffolding; paraphrase-robust; the 2025-2026 assistant register (~40% before) is now caught.
  • Fixed two inverted signals: voice (passive no longer scored as AI) and punctuation (semicolons/colons/em-dashes/« » no longer scored as AI — they fired on edited human prose).
  • Anti-evasion normalization (homoglyph + zero-width) — defeats the RAID evasion; genuine Cyrillic/Greek preserved.
  • Weights rebalanced; AI-cliché dictionary gains the assistant register.

Self-improving weightstraining/
The detector is a transparent single-layer model (metric vector × per-metric weight). train_weights.py fits those weights from a labelled corpus (numpy, non-negative simplex, shrinkage by evidence, held-out gate) and ships only the fitted numbers in detector_weights.json. .github/workflows/retrain.yml re-fits and opens a PR when it improves. Bootstrap = current weights (no behaviour change on this release).

Media — fixed a false-positive class (human Description/Title/Comment/Software chunks read as AI); +ComfyUI/SwarmUI + 2026 generator signatures.

Full notes: see CHANGELOG.md.

Don't miss a new TextHumanize release

NewReleases is sending notifications on new releases.