TextHumanize 0.29.0 — Unified Quality Score
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) withload_eval_corpus()filtering andindex_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-benchmarkand--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