Skip to content

TextHumanize 0.29.0 — Unified Quality Score

Choose a tag to compare

@ksanyok ksanyok released this 08 Jun 20:17
· 10 commits to main since this release

Highlights

Unified TextHumanize Quality Score

quality_score_report() (plus texthumanize quality and --quality-score) returns a single explainable score (0..1) with a letter grade across seven dimensions: semantic similarity, naturalness, readability, AI-pattern resistance, watermark cleanliness, edit balance, and processing speed. It supports an optional reference text, custom dimension weights, and a fast mode, and emits strengths, weaknesses, and recommendations under the text-humanize.quality_score.v1 schema.

from texthumanize import humanize, quality_score_report

result = humanize("Furthermore, it is important to note...", lang="en")
score = quality_score_report(result.text, original=result.original, lang="en")
print(score["score"], score["grade"], score["verdict"])

Also in this release

  • Licensed eval corpus + indexing — packaged CC0 text-humanize.eval_corpus.v1 (EN/RU/UK across human / raw-AI / lightly-edited / heavily-edited) with load_eval_corpus() filtering and index_eval_corpus().
  • Contributor JSON packs — public loaders/validators for AI markers, synonyms, collocations, and watermark samples, plus a marker-pack review workflow.
  • Detector benchmark + CI quality gate — offline detector_benchmark() / texthumanize detector-benchmark and --fail-under-quality.
  • Performance hardening — short-text fast path, cached compiled regex/language packs, memory-bounded streaming/batch, lazy heavy imports, and a hot-path profiler with p50/p95 and memory peaks.

Full details in CHANGELOG.md.

🤖 Generated with Claude Code