Zheat Logo

    Humaniseur v4: nettoyage bilingue de prose IA

    Livre blanc Humaniseur v4: 53 patterns EN + 12 FR, score densite IA 0-100, voix, piste FR, validation CLI. Open source et utilisable en CLI.

    Suivre sur LinkedIn

    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

    1. Problème
    2. Architecture
    3. Ce qui distingue Humaniseur
    4. Taxonomie des patterns

    - 4.1 English Patterns (P1-P53) - 4.2 French Patterns (FR1-FR12) - 4.3 Cross-Language Structural Tells

    1. Lexique interdit
    2. Algorithme de score de densité IA
    3. Burstiness et rythme
    4. Voix et contexte
    5. Pipeline de réécriture
    6. Traitement spécifique du français
    7. Chaîne CLI
    8. Validation et portes qualité
    9. Limites et travaux futurs
    10. 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 prose

    La 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.

    CapabilityTypical AI detector (e.g. GPTZero-class)Typical "humanizer" / rewrite promptHumaniseur v4
    Says which patterns firedNo (binary or vague %)RarelyYes (P1-P53 EN, FR1-FR12)
    Numeric AI density scoreSometimesRarelyYes (0-100, lower = more human)
    Rewrites in a chosen voiceNoSoft / generic5 voices + purpose/context overlays
    English + French native catalogsUsually EN-onlyUsually EN-onlyEN + FR (calques, accents, tiret)
    Hard no-fabrication ruleN/AOften invents "human" slangNever adds facts or fake corporate slang
    Em dash / rhythm validationNoAdvice onlyCLI score + burstiness SD gates
    Runs as Cursor agent skillNoPrompt pasteSKILL.md + reference catalogs
    Offline CLI (no API deps)SaaSN/A3 Python scripts, stdlib only
    Iterate until score dropsNoManual--iterate N (max 3)
    Project brand overrideNoNoOptional 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:

    1. Pattern IDs you can cite. Not "this looks AI." "P7 vocabulary, P13 em dashes, P30 flat rhythm, FR5 calques."
    2. Detect → draft → self-audit → final. Built-in second pass, not one-shot rewrite.
    3. French as a first-class track. Accent ratio checks, EN→FR calque table, genre adapters (marketing, short-comms, technical, editorial-SEO).
    4. Never-introduce list. Blocks fake-casual filler the source never used (see §5.4) unless it was already in the source.
    5. Measurable before/after. Humaniseur's compare_texts.py reports 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.

    IDPatternSignalFix
    P1Significance inflation"pivotal moment in the evolving landscape"State the event plainly
    P2Notability paddingLaundry lists of outlets/followersOne sourced claim
    P3Superficial -ing chains"highlighting… symbolizing… fostering…"Drop fake depth
    P4Promotional language"nestled… breathtaking… vibrant"Plain facts
    P5Vague attributions"experts believe…"Name source or cut
    P6Formulaic challenges"Despite challenges… continues to thrive"One real problem
    P7AI vocabularydelve, leverage, tapestry, landscape, etc.Plain words
    P8Copula 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.

    IDPatternFix
    P9Negative parallelisms ("It's not X, it's Y")State the point once
    P10Rule of threeUse 1, 2, or 4 items
    P11Synonym cyclingPick one term; repeat it
    P12False ranges ("from X to Y")List topics directly
    P13Em/en dash banPeriod, comma, colon, parentheses
    P14Boldface overuseRemove mechanical bold
    P15Structured-list syndromeConvert to prose
    P16Title Case headingsSentence case
    P17Curly quotes / fancy unicodeStraight quotes
    P18Formal register overuseCommon verbs over Latinate stacks
    P47Hyphenated-pair overuseKeep attributive; drop decorative
    P49Fragmented headersCut restated headings
    P50Passive / subjectlessName the actor

    4.1.3 Communication Patterns (P19-P21)

    Les patterns de communication P19-P21 attrapent les restes chatbot dans la prose finie.

    IDPatternFix
    P19Chatbot artifactsCut "I hope this helps," "Let me know if…"
    P20Cutoff disclaimersCut "as of my last update"
    P21Sycophantic toneCut "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:

    IDPatternFix
    P22Filler phrases"In order to" → To; "Due to the fact" → Because
    P23Excessive hedging"could potentially possibly" → may / cut
    P24Generic conclusionsReplace with a specific next fact
    P25Hallucination markersHedged fake certainty → omit
    P29Comprehensive-overview openingStart with content
    P30Uniform sentence lengthInject burstiness
    P53Hedged-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.

    IDPatternDescription
    P31Elegant variationSame entity named 3+ ways ("the tool," "the solution," "the platform")
    P32Collaborative leak"As we discussed…" with no prior discussion
    P33Placeholder / Mad Libs[Insert company] left in output
    P34Chatbot markup leakCitation chips, tool tags in prose
    P35UTM from AI toolsutm_source=chatgpt.com in URLs
    P36Sudden register shiftFormal → casual mid-paragraph
    P38Paragraph-reshuffle immunityParagraphs that work in any order (no causal glue)
    P39"Whether…" closersVague closing that commits to nothing
    P43Treadmill / low densityRestates the same point without new information
    P44False agency"Technology wants…" (name the actor instead)
    P45Narrator-from-a-distanceOmniscient narrator voice in non-fiction
    P46Diff-anchored writing"This was added to replace…" instead of describing current behavior
    P48Aphorism formulas"X is the language of Y"
    P51Reasoning-chain artifacts"First… Second… Therefore…" scaffolding
    P52Unicode obfuscationHomoglyphs 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:

    IDPatternExampleFix
    FR1Connecteurs & méta-commentaires"Il convient de noter que…"Supprimer ou phrase directe
    FR2Cadres cosmiques"Dans un monde où…" "À l'ère de l'IA…"Entrer dans le sujet
    FR3Intensifieurs creux"indéniablement," "résolument"Supprimer
    FR4Métaphores spatiales"au cœur de," "pierre angulaire""dans," nommer le rôle réel
    FR5Calques EN→FRimplémenter, actionnable, robusteFrançais standard
    FR6Parallélisme négatif FR"Il ne s'agit pas seulement de X"Affirmation claire
    FR7Accroches infomercial"Plongeons au cœur de…"Commencer par le contenu
    FR8Conclusions-formule"En définitive," "Au final"Fait concret ou couper
    FR9Tiret cadratinEm dash (U+2014) as anglophone tellPoint, virgule, deux-points
    FR10AccentsDe-accented ALL-CAPS headingsCasse normale accentuée
    FR11Vocabulaire marketing FR"révolutionnaire," "emblématique"Faits et chiffres
    FR12Listes nominales symétriquesShort adj+noun bullets without verbsProse 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:

    TellDescriptionThreshold
    Uniform sentence lengthSentence-length SD below 6 wordsSD < 4 → +20 score; SD 4-6 → +10
    Em dash usageCount 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 stackingPattern-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, Consequently

    5.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 on

    6. 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:

    BandMeaning
    0-20Reads human
    21-40Light AI residue
    41-60Clearly AI-shaped
    61-80Heavy template / chatbot
    81-100Pure 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:

    ComponentMax WeightRationale
    Vocabulary/phrase hits40Strongest signal; maps straight to known AI tells
    Rhythm uniformity20Flat sentence length is a reliable structural tell
    Em dashes15Strong punctuation signal, worse in French
    FR accent ratio15Missing accents often means MT or an anglophone model
    FR constructions15Formulaic French frames are high confidence
    Chatbot crumbs8 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:

    MetricThresholdEffect
    SD < 4.0Strong AI signal+20 to score; validation failure
    SD 4.0-6.0Moderate AI signal+10 to score
    SD > 6.0Human-likeNo 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:

    VoiceTraitsTypical Use
    casualContractions, fragments, "And"/"But" openers, "I"Blogs, social media
    professionalFew contractions, concrete numbers, dry toneReports, LinkedIn
    technicalExact terms, short sentences, no hypeDocs, READMEs
    warm"we/our," patient pacing, short paragraphsTutorials, onboarding
    bluntShort. No hedging. Active voice. No throat-clearingReviews, 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:

    PurposeExtra Rules
    essayAllow personality; keep argument chain clear
    emailLead with the ask; one idea per paragraph
    marketingSpecific benefits over adjectives; kill empty product adjectives
    technicalPrecise nouns; zero promotional language
    generalDefault pattern cleanup only

    8.3 Overlays de context

    Les flags context règlent les contraintes de canal:

    ContextNotes
    linkedinNo emoji stacks, no hashtag soup; real numbers beat empty milestone talk
    blogBurstiness + concrete scenes; mixed feelings OK
    technical-blogTechnical purpose + light narrative
    investor-emailClaims need numbers already in source; blunt clarity
    docsNeutral voice; no soul-injection; edit mode preferred
    casualMax 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 summary

    9.2 Boucle draft → audit → final

    Boucle de réécriture centrale:

    1. Draft. Rewrite with voice + purpose + context. Fix every flagged pattern. Mix short and long sentences.
    2. Self-audit. The model asks: "What still makes this obviously AI?" Short bullets.
    3. Final. Fix those bullets. Rescan for em dashes and (in FR) accents.
    4. 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:

    CalquePreferred French
    implémentermettre en place / en œuvre
    adresser (un problème)régler / traiter
    délivrer (une feature)fournir / livrer
    actionnableconcret / applicable
    robuste (marketing)solide / fiable
    challenger (verbe)remettre en question
    monitorersurveiller
    sans frictionsimple / fluide

    10.4 Adaptateurs de type de contenu (FR)

    Les flags purpose/context mappent vers les adaptateurs de genre FR:

    AdapterMaps FromKey Rules
    Marketing--purpose marketingConcrete promise early; no incontournable/révolutionnaire
    Short-comms--context linkedin, short emailFirst line = useful info; no emoji stacks
    Technical--purpose technical, --context docsExact terms, zero lyricism, minimal edits
    Editorial-SEO--purpose essay, --context blogSentence-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 heuristic
    • find_hits(text, phrases, words): regex phrase and word matching
    • rhythm_stats(sentences): sentence-length mean and standard deviation
    • score_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 json

    Sortie (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:

    1. AI density score > --max-score (default: 40)
    2. Em dash count > 0
    3. Sentence-length SD < --min-stdev (default: 4.0) for texts ≥ 80 words and ≥ 5 sentences
    4. French accent ratio < 1.2% for texts ≥ 40 words

    Usage:

    python3 scripts/validate_humanised.py output.txt --lang en --max-score 30

    Sortie: 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 auto

    Output:

    {
      "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:

    1. No fabrication. Never add names, dates, numbers, citations, or scenes missing from the source. Never insert corporate slang the source did not use.
    2. Preserve meaning. Same claims. Do not drop substance for style.
    3. Over-edit guard. If it already reads human, say so and stop.
    4. Em/en dash ban. No em dash, en dash, or spaced -- in final copy unless a voice sample uses them.
    5. French accents. Never strip accents. Reject all-caps de-accented headings.
    6. 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:

    1. Pattern-based, not statistical. Handcrafted catalogs, not learned classifiers. Novel tells not yet listed will slip through.
    2. 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.
    3. 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.
    4. No training data or ML. Scoring weights are hand-tuned, not fit on labeled corpora.
    5. Single-pass sentence splitting. Terminal punctuation only. Abbreviations, URLs, and decimals can confuse it.

    13.2 Directions futures

    Upgrades prévus:

    1. Contextual word scoring. Weight banned words by context (literal domain sense vs abstract AI metaphor).
    2. Model fingerprinting. Separate profiles for GPT-4, Claude 3.5, Gemini, Llama 3 from empirical runs.
    3. Perplexity-based scoring. Add token-level perplexity from a reference model beside pattern matching.
    4. More languages. Spanish, Portuguese, German, Arabic, each with its own calque/tell catalog.
    5. CI integration. GitHub Action or pre-commit hook running validate_humanised.py on prose files.
    6. 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-dive

    Remplacements 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émentermettre en place / en œuvre
    adresser (un problème)régler / traiter
    délivrer (une feature)fournir / livrer
    actionnableconcret / applicable
    robuste (marketing)solide / fiable
    incontournableexpliquer pourquoi
    challenger (verbe)remettre en question
    pivoter (figuré)changer de direction
    monitorersurveiller
    investiguerenquêter / examiner
    tirer parti deutiliser / profiter de
    sans friction / sans couturesimple / 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-100

    Annexe D: inventaire des patterns

    Inventaire des patterns (anglais + français):

    CategoryENFRTotal
    Content8-8
    Language/Style14-14
    Communication3-3
    Filler/Hedging7-7
    Emerging/Craft21-21
    Extra (bullets)1-1
    French-specific-1212
    Cross-applied EN→FR-~15-
    Total unique531265

    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.