github MohamedAbdallah-14/unslop unslop-v0.5.3
unslop v0.5.3 — DivEye surprisal-variance proxies

latest releases: unslop-v0.7.0, unslop-v0.6.2, v0.6.1...
4 months ago

v0.5.3 — DivEye-style surprisal-variance proxies in stylometry

Closes the Category 15 research gap from docs/research/IMPLEMENTATION_TRACE.md. DivEye (arXiv 2509.18880, TMLR 2026) established intra-document surprisal variance — not absolute perplexity — as the primary human signal that survives paraphrase attacks. A real DivEye reading needs a local LM to score per-token log-probs; that stays out of scope for this module. Two deterministic, LM-free proxies now ship instead, priced in as "proxy" in the field names so callers do not overread a single number.

Added

  • sentence_length_cv in unslop.scripts.stylometry.StyleProfile: coefficient of variation (σ/μ) of sentence word-counts. Scale-invariant burstiness — ~0.3 is AI-flat; 0.5–0.8 is typical human academic.
  • word_length_stdev in StyleProfile: per-sentence mean word-length, σ across the document. Zipf's abbreviation law makes word-length ≈ inverse rarity, so variance in that quantity is a cheap surrogate for surprisal variance.
  • Voice-match LLM prompt now reports cv and word_length_stdev as DivEye-style targets, with explicit rewrite guidance.
  • Six new unit tests in TestDivEyeProxies (uniform / bursty / scale-invariance / monotone / mixed-register / empty).

Changed

  • IMPLEMENTATION_TRACE.md: new row maps DivEye research → proxies → tests; Category 15 line in "What research we are NOT using yet" now reads "partial".

CI status

  • 397 pytest passing (+1 skipped)
  • ruff clean, mypy clean (13 files)
  • verify_repo.py green
  • benchmarks/check_regression.py: no regression (92.0% AI-ism reduction vs baseline 92.0%)

Install

pip install --upgrade unslop==0.5.3

Don't miss a new unslop release

NewReleases is sending notifications on new releases.