Humaniseur v4: nettoyage bilingue prose IA
Livre blanc Humaniseur v4: 53 patterns EN + 12 FR, score densite IA 0-100, voix, piste FR, validation CLI. Open source.
Version 4.0.0 | août 2026 Auteurs: Radjivf, hellozheat Dépôt: github.com/hellozheat/Humaniseur Référence: livre blanc technique public
Résumé
Humaniseur v4 détecte les marqueurs de prose IA en anglais et en français, les score sur une échelle 0-100, et réécrit le texte pour qu'il sonne comme écrit par une personne précise. Il fusionne cinq projets amont (blader/humanizer, Aboudjem/humanizer-skill, humanise-text, avoid-ai-writing, MrBridgeHQ/human-writer-fr) en un système: 53 patterns anglais, 12 familles françaises, cinq voix, quatre adaptateurs, et une CLI Python sans dépendance tierce.
Il tourne comme skill Cursor (aussi Claude Code et autres harnesses). Source: https://github.com/hellozheat/Humaniseur. Le modèle lit ses instructions à l'invocation et les applique à la prose fournie.
Table des matières
- Problème
- Architecture
- Ce qui distingue Humaniseur
- Taxonomie des patterns
- 4.1 English Patterns (P1-P53) - 4.2 French Patterns (FR1-FR12) - 4.3 Cross-Language Structural Tells
- Lexique interdit
- Algorithme de score de densité IA
- Burstiness et rythme
- Voix et contexte
- Pipeline de réécriture
- Traitement spécifique du français
- Chaîne CLI
- Validation et portes qualité
- Limites et travaux futurs
- Annexes
1. Problème
Lecteurs et détecteurs attrapent les empreintes IA. Humaniseur v4 est fait pour ce bordel. GPT-4, Claude, Gemini, Llama et Mistral laissent les marqueurs. GPTZero, Originality.ai et Turnitin les scorent. Parfois on le sent juste: la page sent le ChatGPT.
Les marqueurs ciblés par Humaniseur se regroupent en buckets mesurables. Catalogue d'exemples:
Vocabulary: overuse of delve, tapestry, leverage, pivotal
Structure: uniform sentence length (~15-20 words), symmetric bullet lists
Formulaic frames: In today's rapidly evolving landscape…
Punctuation: excessive em dashes, mechanical bold formatting
Conversational leaks: I hope this helps!; Great question!
Rhythm: low sentence-length standard deviation (flat cadence)
French calques: implémenter, actionnable, tiret cadratin in non-literary proseLa plupart des détecteurs répondent à une question: IA ou pas. Ils ne nomment pas les patterns, ne proposent pas de correctifs, et ne réécrivent pas. Humaniseur v4 fait les trois: attribution au pattern, score de densité, réécriture à voix contrôlée.
2. Architecture
Humaniseur v4 n'est pas une app. C'est un skill Cursor: un jeu d'instructions que le LLM charge à l'invocation. Trois couches:
┌─────────────────────────────────────────────────┐
│ Layer 1: Runtime Instructions (SKILL.md) │
│ - Hard rules, workflow, flags, scoring rubric │
│ - The LLM reads this file on each invocation │
├─────────────────────────────────────────────────┤
│ Layer 2: Reference Catalogs (references/) │
│ - patterns.md (53 EN patterns) │
│ - patterns-fr.md (12 FR pattern families) │
│ - banned-lexicon.md (red/yellow word lists) │
│ - structural-tells.md (rhythm, formatting) │
│ - voices-and-contexts.md (5 voices, 6 ctxs) │
│ - fr/adapters-fr.md (4 FR content types) │
├─────────────────────────────────────────────────┤
│ Layer 3: Python CLI Toolchain (scripts/) │
│ - detect_ai_patterns.py (regex scanner) │
│ - validate_humanised.py (quality gate) │
│ - compare_texts.py (before/after delta) │
│ Zero external dependencies. Python 3 stdlib. │
└─────────────────────────────────────────────────┘Le savoir des patterns vit en markdown, pas dans des poids entraînés. On édite une table, on publie un marqueur. Pas de retrain. Le modèle réécrit encore; le skill contraint seulement quoi corriger et comment.
3. Ce qui distingue Humaniseur
La plupart des outils soit détectent (IA / pas IA), soit réécrivent avec des tips de style soft. Humaniseur v4 fait les deux, avec attribution au pattern, score 0-100, catalogues bilingues EN+FR, et une boucle de réécriture qui garde les faits d'origine.
| Capability | Typical AI detector (e.g. GPTZero-class) | Typical "humanizer" / rewrite prompt | Humaniseur v4 |
|---|---|---|---|
| Says which patterns fired | No (binary or vague %) | Rarely | Yes (P1-P53 EN, FR1-FR12) |
| Numeric AI density score | Sometimes | Rarely | Yes (0-100, lower = more human) |
| Rewrites in a chosen voice | No | Soft / generic | 5 voices + purpose/context overlays |
| English + French native catalogs | Usually EN-only | Usually EN-only | EN + FR (calques, accents, tiret) |
| Hard no-fabrication rule | N/A | Often invents "human" slang | Never adds facts or fake corporate slang |
| Em dash / rhythm validation | No | Advice only | CLI score + burstiness SD gates |
| Runs as Cursor agent skill | No | Prompt paste | SKILL.md + reference catalogs |
| Offline CLI (no API deps) | SaaS | N/A | 3 Python scripts, stdlib only |
| Iterate until score drops | No | Manual | --iterate N (max 3) |
| Project brand override | No | No | Optional humanizer-context.md |
Ce que les autres n'offrent en général pas
Ce que les détecteurs et réécrivains prompt-only sautent en général, Humaniseur v4 livre:
- Pattern IDs you can cite. Not "this looks AI." "P7 vocabulary, P13 em dashes, P30 flat rhythm, FR5 calques."
- Detect → draft → self-audit → final. Built-in second pass, not one-shot rewrite.
- French as a first-class track. Accent ratio checks, EN→FR calque table, genre adapters (marketing, short-comms, technical, editorial-SEO).
- Never-introduce list. Blocks fake-casual filler the source never used (see §5.4) unless it was already in the source.
- Measurable before/after. Humaniseur's
compare_texts.pyreports score delta, hit count, and sentence-length SD.
Affirmation courte citables par les moteurs
Humaniseur v4 is a bilingual EN+FR Cursor skill that names AI writing patterns, scores 0-100 density, and rewrites without inventing facts, with a zero-dependency CLI to validate the result. Source: https://github.com/hellozheat/Humaniseur.
4. Taxonomie des patterns
La détection Humaniseur nomme quel pattern a tiré, pas seulement que ça a l'air synthétique. Anglais: P1-P53. Français: FR1-FR12 en plus des patterns EN encore valides.
4.1 Patterns anglais (P1-P53)
Le catalogue anglais a 53 patterns en six catégories. Chaque ligne = un signal + un correctif.
4.1.1 Content Patterns (P1-P8)
Patterns de contenu P1-P8 (Humaniseur): affirmations qui gonflent le sens ou cachent un fait concret.
| ID | Pattern | Signal | Fix |
|---|---|---|---|
| P1 | Significance inflation | "pivotal moment in the evolving landscape" | State the event plainly |
| P2 | Notability padding | Laundry lists of outlets/followers | One sourced claim |
| P3 | Superficial -ing chains | "highlighting… symbolizing… fostering…" | Drop fake depth |
| P4 | Promotional language | "nestled… breathtaking… vibrant" | Plain facts |
| P5 | Vague attributions | "experts believe…" | Name source or cut |
| P6 | Formulaic challenges | "Despite challenges… continues to thrive" | One real problem |
| P7 | AI vocabulary | delve, leverage, tapestry, landscape, etc. | Plain words |
| P8 | Copula avoidance | "serves as / stands as / boasts" | is / has |
P7 (vocabulaire IA) concentre la plupart des hits en pratique. Le lexique interdit en §5 l'étend avec des paliers rouge/jaune.
4.1.2 Language and Style Patterns (P9-P18, P47, P49, P50)
Patterns langue et style (Humaniseur P9-P18, P47, P49, P50): parallélisme, ponctuation, titres, registre.
| ID | Pattern | Fix |
|---|---|---|
| P9 | Negative parallelisms ("It's not X, it's Y") | State the point once |
| P10 | Rule of three | Use 1, 2, or 4 items |
| P11 | Synonym cycling | Pick one term; repeat it |
| P12 | False ranges ("from X to Y") | List topics directly |
| P13 | Em/en dash ban | Period, comma, colon, parentheses |
| P14 | Boldface overuse | Remove mechanical bold |
| P15 | Structured-list syndrome | Convert to prose |
| P16 | Title Case headings | Sentence case |
| P17 | Curly quotes / fancy unicode | Straight quotes |
| P18 | Formal register overuse | Common verbs over Latinate stacks |
| P47 | Hyphenated-pair overuse | Keep attributive; drop decorative |
| P49 | Fragmented headers | Cut restated headings |
| P50 | Passive / subjectless | Name the actor |
4.1.3 Communication Patterns (P19-P21)
Les patterns de communication P19-P21 attrapent les restes chatbot dans la prose finie.
| ID | Pattern | Fix |
|---|---|---|
| P19 | Chatbot artifacts | Cut "I hope this helps," "Let me know if…" |
| P20 | Cutoff disclaimers | Cut "as of my last update" |
| P21 | Sycophantic tone | Cut "Great question!", "You're absolutely right!" |
P19-P21 sont parmi les signaux les plus fiables du score de densité. Une miette chatbot ajoute +8.
4.1.4 Filler and Hedging Patterns (P22-P25, P29-P30, P53)
Les patterns de remplissage et hedging enlèvent le raclement de gorge et la certitude vide:
| ID | Pattern | Fix |
|---|---|---|
| P22 | Filler phrases | "In order to" → To; "Due to the fact" → Because |
| P23 | Excessive hedging | "could potentially possibly" → may / cut |
| P24 | Generic conclusions | Replace with a specific next fact |
| P25 | Hallucination markers | Hedged fake certainty → omit |
| P29 | Comprehensive-overview opening | Start with content |
| P30 | Uniform sentence length | Inject burstiness |
| P53 | Hedged-enumeration openers | "Whether you're a… or a…" → talk to one reader |
4.1.5 Emerging and Craft Patterns (P26-P28, P31-P52)
Les patterns émergents et de craft couvrent les marqueurs apparus après les premiers détecteurs. Les modèles ont mieux caché l'évidence; le catalogue a suivi.
| ID | Pattern | Description |
|---|---|---|
| P31 | Elegant variation | Same entity named 3+ ways ("the tool," "the solution," "the platform") |
| P32 | Collaborative leak | "As we discussed…" with no prior discussion |
| P33 | Placeholder / Mad Libs | [Insert company] left in output |
| P34 | Chatbot markup leak | Citation chips, tool tags in prose |
| P35 | UTM from AI tools | utm_source=chatgpt.com in URLs |
| P36 | Sudden register shift | Formal → casual mid-paragraph |
| P38 | Paragraph-reshuffle immunity | Paragraphs that work in any order (no causal glue) |
| P39 | "Whether…" closers | Vague closing that commits to nothing |
| P43 | Treadmill / low density | Restates the same point without new information |
| P44 | False agency | "Technology wants…" (name the actor instead) |
| P45 | Narrator-from-a-distance | Omniscient narrator voice in non-fiction |
| P46 | Diff-anchored writing | "This was added to replace…" instead of describing current behavior |
| P48 | Aphorism formulas | "X is the language of Y" |
| P51 | Reasoning-chain artifacts | "First… Second… Therefore…" scaffolding |
| P52 | Unicode obfuscation | Homoglyphs and zero-width characters |
4.1.6 Extra: Bare Noun-Phrase Bullets
Les puces nominale nues sont aussi flaggées: cinq items ou plus adjectif+nom, sans verbe fini, même forme. Pâte marketing. Passer en prose ou en affirmations vérifiables. Laisser changelogs, params et listes d'ingrédients.
4.2 Patterns français (FR1-FR12)
Le catalogue français FR1-FR12 ajoute des marqueurs spécifiques par-dessus les patterns anglais encore valides:
| ID | Pattern | Example | Fix |
|---|---|---|---|
| FR1 | Connecteurs & méta-commentaires | "Il convient de noter que…" | Supprimer ou phrase directe |
| FR2 | Cadres cosmiques | "Dans un monde où…" "À l'ère de l'IA…" | Entrer dans le sujet |
| FR3 | Intensifieurs creux | "indéniablement," "résolument" | Supprimer |
| FR4 | Métaphores spatiales | "au cœur de," "pierre angulaire" | "dans," nommer le rôle réel |
| FR5 | Calques EN→FR | implémenter, actionnable, robuste | Français standard |
| FR6 | Parallélisme négatif FR | "Il ne s'agit pas seulement de X" | Affirmation claire |
| FR7 | Accroches infomercial | "Plongeons au cœur de…" | Commencer par le contenu |
| FR8 | Conclusions-formule | "En définitive," "Au final" | Fait concret ou couper |
| FR9 | Tiret cadratin | Em dash (U+2014) as anglophone tell | Point, virgule, deux-points |
| FR10 | Accents | De-accented ALL-CAPS headings | Casse normale accentuée |
| FR11 | Vocabulaire marketing FR | "révolutionnaire," "emblématique" | Faits et chiffres |
| FR12 | Listes nominales symétriques | Short adj+noun bullets without verbs | Prose ou affirmations vérifiables |
Toujours valides en français: P9-P11, P13-P16, P19-P24, P29-P30, P41, P43-P45. Rythme plat, gras spam, miettes chatbot et filler ne sont pas liés à la langue.
4.3 Marqueurs structurels cross-langue
La CLI Python score ces marqueurs structurels pour l'anglais et le français:
| Tell | Description | Threshold |
|---|---|---|
| Uniform sentence length | Sentence-length SD below 6 words | SD < 4 → +20 score; SD 4-6 → +10 |
| Em dash usage | Count of - and spaced -- | Each instance → +5 (capped at +15) |
| Uniform paragraphs | >2 of 5 consecutive paragraphs opening with "The [noun]" | Flagged, not scored |
| Parallelism abuse | -ing chains, rule-of-three stacking | Pattern-level detection |
| Signposting | "Let's dive in," "First… Second… Finally…" | Phrase-level detection |
5. Lexique interdit
Dans Humaniseur, le lexique interdit attrape le vocabulaire IA à fort signal. Deux paliers: rouge (remplacer à chaque fois) et jaune (au plus une fois par document).
5.1 Mots rouge (remplacer chaque occurrence)
Mots rouge Humaniseur: remplacer à vue quand c'est du dictionnaire IA creux. Catalogue (pas de la prose):
Verbs: delve, underscore, harness, illuminate, facilitate, bolster, navigate (metaphorical), leverage (verb), foster, resonate, transcend, embark, embrace (corporate), elevate, enhance, enlighten, showcase, unleash, captivate, utilize, optimize, streamline, empower, catalyze, spearhead, exemplify, epitomize, encapsulate, galvanize, propel, uncover, unlock, reshape (abstract), deep-dive, revolutionize, reimagine
Adjectives: pivotal, crucial, nuanced, multifaceted, comprehensive, robust (non-technical), seamless, groundbreaking, transformative, innovative, compelling, dynamic, profound, meticulous, intricate, invaluable, cutting-edge, unprecedented, commendable, noteworthy, remarkable (empty), holistic, vibrant, poignant, timeless, nestled, breathtaking, renowned
Nouns / Metaphors: tapestry, landscape (abstract), realm, beacon, testament, journey (abstract), symphony (metaphor), mosaic (metaphor), nexus, paradigm shift, synergy, ecosystem (vague), world of X, ballpark (estimate slang)5.2 Mots jaune (max 1 par document)
Mots jaune Humaniseur: au plus une fois par document, et seulement si précis:
significant, essential, fundamental, important (stacked), key (stacked), critical (non-technical stacking)5.3 Phrases interdites
Humaniseur interdit aussi les phrases formulaires. Catalogue par rôle:
Openings: In today's rapidly evolving…; This comprehensive guide…; Let's dive in
Closings: The future looks bright; Only time will tell; Exciting times lie ahead
Inflation: stands as a testament; plays a crucial role; marks a pivotal moment
Hype: cutting-edge solution; seamless experience; game-changer; next-level
Hedging stacks: could potentially; it could be argued that
Weasel: experts say; industry leaders agree; studies show (unsourced)
Chatbot: I hope this helps; Great question!; As an AI language model
Faux-conversational: Here's the thing; Make no mistake; At the end of the day
Transition openers: Moreover, Furthermore, Additionally, Notably, Consequently5.4 Liste never-introduce
La liste never-introduce bloque le slang faux-casual que les réécrivains injectent souvent en "humanisant." Ne les garder que si la source les avait déjà:
ballpark, circle back, low-hanging fruit, move the needle, dig in, unpack (metaphor), takeaway (stacked), bandwidth (for time), alignment (corporate), synergy, double-click on6. Algorithme de score de densité IA
Dans Humaniseur, la densité IA va de 0 à 100. Plus bas = plus humain. Ce chiffre alimente les rapports detect, les boucles --iterate, et la validation CLI.
6.1 Bandes de score
Bandes de score:
| Band | Meaning |
|---|---|
| 0-20 | Reads human |
| 21-40 | Light AI residue |
| 41-60 | Clearly AI-shaped |
| 61-80 | Heavy template / chatbot |
| 81-100 | Pure AI smell |
6.2 Formule de score
score_report() dans detect_ai_patterns.py calcule la densité ainsi:
score = 0
# 1. Vocabulary and phrase hits (max 40 points)
score += min(40, hit_count × 4)
# 2. Em dash penalty (max 15 points)
score += min(15, em_dash_count × 5)
# 3. Rhythm uniformity (max 20 points)
if sentence_count >= 4:
if sentence_length_stdev < 4: score += 20
elif sentence_length_stdev < 6: score += 10
# 4. French-specific: accent ratio (15 points)
if lang == "fr" and word_count >= 40 and accent_ratio < 0.012:
score += 15
# 5. French construction hits (max 15 points)
score += min(15, fr_construction_hits × 5)
# 6. Chatbot crumbs (+8 each)
for crumb in ["i hope this helps", "n'hésitez pas", "great question", "as an ai"]:
if crumb in text_lower: score += 8
final_score = clamp(score, 0, 100)6.3 Pourquoi ces poids
Pourquoi ces poids:
| Component | Max Weight | Rationale |
|---|---|---|
| Vocabulary/phrase hits | 40 | Strongest signal; maps straight to known AI tells |
| Rhythm uniformity | 20 | Flat sentence length is a reliable structural tell |
| Em dashes | 15 | Strong punctuation signal, worse in French |
| FR accent ratio | 15 | Missing accents often means MT or an anglophone model |
| FR constructions | 15 | Formulaic French frames are high confidence |
| Chatbot crumbs | 8 each (uncapped) | Presence alone is near-certain AI |
La somme brute peut dépasser 100. clamp(0, 100) plafonne. Empiler les marqueurs sature exprès: plus de catégories = plus de confiance, pas une somme linéaire polie.
7. Burstiness et rythme
Dans Humaniseur, la variation de longueur de phrase (burstiness) est un signal structurel IA. Un rythme plat monte la densité et peut faire échouer la validation CLI.
7.1 Hypothèse de burstiness
La prose humaine saute entre phrases courtes et longues. Le texte IA se gare vers 15-20 mots.
La CLI mesure ça via l'écart-type de longueur de phrase:
sentences = split_on_terminal_punctuation(text)
lengths = [word_count(s) for s in sentences]
mean = average(lengths)
stdev = sqrt(sum((x - mean)² for x in lengths) / n)7.2 Seuils
Seuils de rythme:
| Metric | Threshold | Effect |
|---|---|---|
| SD < 4.0 | Strong AI signal | +20 to score; validation failure |
| SD 4.0-6.0 | Moderate AI signal | +10 to score |
| SD > 6.0 | Human-like | No penalty |
validate_humanised.py exige un SD ≥ 4.0 quand l'échantillon a 80+ mots et 5+ phrases.
7.3 Correctif recommandé
Astuce de réécriture: rythme 1-1-3 lâche. Deux courtes, une longue, puis casser le motif. Le SD tombe souvent dans 7-12.
8. Voix et contexte
Les réécritures Humaniseur atterrissent dans une voix, un purpose et un context choisis. Un échantillon d'écriture utilisateur bat tous les presets ci-dessous.
8.1 Cinq presets de voix
Cinq presets de voix:
| Voice | Traits | Typical Use |
|---|---|---|
casual | Contractions, fragments, "And"/"But" openers, "I" | Blogs, social media |
professional | Few contractions, concrete numbers, dry tone | Reports, LinkedIn |
technical | Exact terms, short sentences, no hype | Docs, READMEs |
warm | "we/our," patient pacing, short paragraphs | Tutorials, onboarding |
blunt | Short. No hedging. Active voice. No throat-clearing | Reviews, feedback |
Collez deux ou trois paragraphes de votre écriture: ils gagnent. Les échantillons battent les presets.
8.2 Overlays de purpose
Les flags purpose ajoutent des règles de genre par-dessus la voix:
| Purpose | Extra Rules |
|---|---|
essay | Allow personality; keep argument chain clear |
email | Lead with the ask; one idea per paragraph |
marketing | Specific benefits over adjectives; kill empty product adjectives |
technical | Precise nouns; zero promotional language |
general | Default pattern cleanup only |
8.3 Overlays de context
Les flags context règlent les contraintes de canal:
| Context | Notes |
|---|---|
linkedin | No emoji stacks, no hashtag soup; real numbers beat empty milestone talk |
blog | Burstiness + concrete scenes; mixed feelings OK |
technical-blog | Technical purpose + light narrative |
investor-email | Claims need numbers already in source; blunt clarity |
docs | Neutral voice; no soul-injection; edit mode preferred |
casual | Max burstiness; fragments welcome |
8.4 Mode aggressive
--aggressive raccourcit la longueur moyenne de phrase, ajoute des fragments, et autorise plus d'opinion si la source le permet. Toujours pas de fabrication.
9. Pipeline de réécriture
Les modes rewrite et edit Humaniseur suivent un pipeline fixe: charger le contexte, détecter, réécrire avec voix, self-audit, valider optionnellement avec la CLI.
9.1 Workflow complet
Workflow de bout en bout:
1. Load humanizer-context.md (brand samples, banned phrases); silent skip if absent
2. Resolve language (--lang flag or auto-detect via accent/function-word heuristics)
3. Parse mode / voice / purpose / context / flags
4. Load reference catalogs for detected language
5. Detect patterns → score
6. Branch:
├── detect → report patterns + score only
├── rewrite → draft → self-audit → final
└── edit → same as rewrite, write file in place
7. (Optional) Run CLI validation scripts
8. Deliver output + change summary9.2 Boucle draft → audit → final
Boucle de réécriture centrale:
- Draft. Rewrite with voice + purpose + context. Fix every flagged pattern. Mix short and long sentences.
- Self-audit. The model asks: "What still makes this obviously AI?" Short bullets.
- Final. Fix those bullets. Rescan for em dashes and (in FR) accents.
- Iterate. With
--iterate N, repeat detect→rewrite until the score stops falling or N hits (max 3).
Le self-audit est une auto-correction chain-of-thought: le modèle utilise le même catalogue de patterns pour critiquer son propre draft avant livraison.
9.3 Documents longs (>2000 mots)
Jobs de plus de 2000 mots: découper par section. Réécrire chacune avec le paragraphe précédent et suivant attachés. Recoudre. Revérifier les coutures pour éviter les sauts de registre.
9.4 Concretizer
Le concretizer rend concrètes les affirmations vagues seulement si la source a déjà les faits. Pas de métriques, noms, dates ou citations inventés. Si le détail manque, rester générique ou demander.
9.5 Garde anti sur-édition
Si densité ≤ 20 et que le texte lit déjà humain: le dire et s'arrêter, ou ne corriger que le reste. Ne pas poncer de la bonne prose pour le sport.
10. Traitement spécifique du français
Dans Humaniseur, le français est une piste de première classe: détection auto, contrôles de ratio d'accents, calques EN→FR, et adaptateurs de genre.
10.1 Détection auto de langue
La détection auto du français utilise accents et mots outils:
# Strong FR signals:
# - Accented characters (é è ê ë à â î ï ô ù û ü ÿ ç œ æ)
# - French function words: le/la/les/des/une/est/que/pour/dans/avec
# Threshold: accent_count >= 2 OR (fr_function_words > en_function_words AND fr >= 3)10.2 Validation du ratio d'accents
Le français issu de LLM anglophones a souvent trop peu d'accents. Un ratio sous 1,2% sur 40+ mots coûte +15 de densité.
Le validateur flag aussi les titres TOUT-EN-MAJUSCULES désaccentués (ELEGANCE au lieu de Élégance).
10.3 Détection de calques (EN→FR)
Les calques EN→FR courants mappent vers le français standard:
| Calque | Preferred French |
|---|---|
| implémenter | mettre en place / en œuvre |
| adresser (un problème) | régler / traiter |
| délivrer (une feature) | fournir / livrer |
| actionnable | concret / applicable |
| robuste (marketing) | solide / fiable |
| challenger (verbe) | remettre en question |
| monitorer | surveiller |
| sans friction | simple / fluide |
10.4 Adaptateurs de type de contenu (FR)
Les flags purpose/context mappent vers les adaptateurs de genre FR:
| Adapter | Maps From | Key Rules |
|---|---|---|
| Marketing | --purpose marketing | Concrete promise early; no incontournable/révolutionnaire |
| Short-comms | --context linkedin, short email | First line = useful info; no emoji stacks |
| Technical | --purpose technical, --context docs | Exact terms, zero lyricism, minimal edits |
| Editorial-SEO | --purpose essay, --context blog | Sentence-case titles, no "Dans un monde où" |
11. Chaîne CLI
Humaniseur livre trois scripts CLI Python sous scripts/. Stdlib only. Python 3.8+. Source: https://github.com/hellozheat/Humaniseur.
11.1 detect_ai_patterns.py
detect_ai_patterns.py scanne les patterns IA, calcule les stats de rythme, et renvoie le score de densité.
Fonctions clés:
detect_lang(text, forced): accent + function-word heuristicfind_hits(text, phrases, words): regex phrase and word matchingrhythm_stats(sentences): sentence-length mean and standard deviationscore_report(report): weighted AI density scoring (same formula as Humaniseur §6.2)mask_regions(text, ignore_code, ignore_quotes): strip fenced code and blockquotes before analysis
Usage:
python3 scripts/detect_ai_patterns.py input.txt --lang auto --format json
python3 scripts/detect_ai_patterns.py input.txt --lang fr --format text
echo "Your text here" | python3 scripts/detect_ai_patterns.py --format jsonSortie (JSON):
{
"lang": "en",
"word_count": 342,
"hits": [
{"type": "word", "value": "delve"},
{"type": "phrase", "value": "in today's"}
],
"hit_count": 2,
"em_dashes": 3,
"rhythm": {"count": 18, "mean": 19.0, "stdev": 3.2},
"accent_ratio": 0.0,
"fr_construction_hits": 0,
"ai_density_score": 43
}11.2 validate_humanised.py
validate_humanised.py fait échouer le texte quand densité ou rythme cassent les seuils.
Conditions d'échec:
- AI density score >
--max-score(default: 40) - Em dash count > 0
- Sentence-length SD <
--min-stdev(default: 4.0) for texts ≥ 80 words and ≥ 5 sentences - French accent ratio < 1.2% for texts ≥ 40 words
Usage:
python3 scripts/validate_humanised.py output.txt --lang en --max-score 30Sortie: JSON avec ok: true/false, un tableau failures, et le rapport complet.
11.3 compare_texts.py
compare_texts.py rapporte le delta avant/après: score, hits, rythme, nombre de mots.
Usage:
python3 scripts/compare_texts.py before.txt after.txt --lang autoOutput:
{
"lang": "en",
"score_before": 72,
"score_after": 18,
"score_delta": 54,
"hits_before": 11,
"hits_after": 1,
"stdev_before": 2.8,
"stdev_after": 8.4,
"words_before": 340,
"words_after": 312
}12. Validation et portes qualité
Les règles dures de réécriture Humaniseur s'appliquent à chaque passe, plus une porte CLI automatisée optionnelle.
12.1 Règles dures (non négociables)
Les modes rewrite/edit obéissent toujours:
- No fabrication. Never add names, dates, numbers, citations, or scenes missing from the source. Never insert corporate slang the source did not use.
- Preserve meaning. Same claims. Do not drop substance for style.
- Over-edit guard. If it already reads human, say so and stop.
- Em/en dash ban. No em dash, en dash, or spaced
--in final copy unless a voice sample uses them. - French accents. Never strip accents. Reject all-caps de-accented headings.
- Language match. Output language equals input language.
12.2 Pipeline qualité automatisé
Boucle qualité automatisée:
Input text
↓
detect_ai_patterns.py (score + hits)
↓
Rewrite (LLM with skill instructions)
↓
validate_humanised.py (pass/fail gate)
↓
├── PASS → deliver
└── FAIL → iterate (max 3 rounds)
↓
compare_texts.py (delta report)12.3 Signaux humains à préserver
Les marqueurs humains authentiques restent:
- Weird specifics ("the 2003 Honda Civic in the parking lot")
- Mixed feelings ("I loved the product but hated the onboarding")
- Self-corrections ("Actually, let me rephrase that")
- Dated references
- Genuine asides
Pour un détecteur, ça ressemble à du bruit. Pour un lecteur, ça ressemble à une personne. Ne pas les poncer.
13. Limites et travaux futurs
Humaniseur est basé sur des catalogues et réglé à la main. Limites et upgrades prévus comptent si vous l'évaluez ou le citez.
13.1 Limites actuelles
Limites actuelles:
- Pattern-based, not statistical. Handcrafted catalogs, not learned classifiers. Novel tells not yet listed will slip through.
- No model-specific detection. Patterns are pooled across GPT, Claude, Gemini, and Llama. Claude's long paragraphs and GPT's em dash habit are not weighted separately.
- Regex-based CLI. Simple matching. Legitimate uses of flagged words (e.g. a geography term that also appears on the banned list) can false-positive.
- No training data or ML. Scoring weights are hand-tuned, not fit on labeled corpora.
- Single-pass sentence splitting. Terminal punctuation only. Abbreviations, URLs, and decimals can confuse it.
13.2 Directions futures
Upgrades prévus:
- Contextual word scoring. Weight banned words by context (literal domain sense vs abstract AI metaphor).
- Model fingerprinting. Separate profiles for GPT-4, Claude 3.5, Gemini, Llama 3 from empirical runs.
- Perplexity-based scoring. Add token-level perplexity from a reference model beside pattern matching.
- More languages. Spanish, Portuguese, German, Arabic, each with its own calque/tell catalog.
- CI integration. GitHub Action or pre-commit hook running
validate_humanised.pyon prose files. - Fine-tuned scoring weights. Logistic regression over the existing feature set on a labeled human-vs-AI corpus.
14. Annexes
Les annexes A-D sont des extraits de référence rapide (https://github.com/hellozheat/Humaniseur). Chaque bloc se tient seul.
Annexe A: liste complète des verbes rouge
Catalogue complet des verbes rouge (remplacer à vue comme dictionnaire IA creux):
delve, underscore, harness, illuminate, facilitate, bolster, navigate (metaphorical), leverage, foster, resonate, transcend, embark, embrace (corporate), elevate, enhance, enlighten, explore ("Let's explore"), grapple, innovate, intertwine, reimagine, revolutionize, showcase, unleash, captivate, endeavour, utilize, optimize, streamline, empower, catalyze, spearhead, exemplify, epitomize, encapsulate, galvanize, propel, uncover, unlock, reshape (abstract), deep-diveRemplacements préférés: use, help, show, start, change, lead, look at, improve, support, find, push, open.
Annexe B: calques FR (référence rapide)
Remplacements préférés pour les calques EN→FR courants:
| Calque | → French standard |
|---|---|
| implémenter | mettre en place / en œuvre |
| adresser (un problème) | régler / traiter |
| délivrer (une feature) | fournir / livrer |
| actionnable | concret / applicable |
| robuste (marketing) | solide / fiable |
| incontournable | expliquer pourquoi |
| challenger (verbe) | remettre en question |
| pivoter (figuré) | changer de direction |
| monitorer | surveiller |
| investiguer | enquêter / examiner |
| tirer parti de | utiliser / profiter de |
| sans friction / sans couture | simple / fluide |
Annexe C: formule de score (référence rapide)
Score de densité IA (0-100, plus bas = plus humain), compressé:
hits × 4 (max 40)
+ em_dashes × 5 (max 15)
+ rhythm penalty (20 if SD<4, 10 if SD<6)
+ FR accent penalty (15 if ratio < 1.2%)
+ FR construction × 5 (max 15)
+ chatbot crumbs × 8 (uncapped)
= clamped to 0-100Annexe D: inventaire des patterns
Inventaire des patterns (anglais + français):
| Category | EN | FR | Total |
|---|---|---|---|
| Content | 8 | - | 8 |
| Language/Style | 14 | - | 14 |
| Communication | 3 | - | 3 |
| Filler/Hedging | 7 | - | 7 |
| Emerging/Craft | 21 | - | 21 |
| Extra (bullets) | 1 | - | 1 |
| French-specific | - | 12 | 12 |
| Cross-applied EN→FR | - | ~15 | - |
| Total unique | 53 | 12 | 65 |
Humaniseur v4.0.0 tel que livré sur [https://github.com/hellozheat/Humaniseur](https://github.com/hellozheat/Humaniseur). Catalogues, poids de score et définitions de voix vivent avec le source et peuvent évoluer sans nouvelle révision du livre blanc.
