How Humanizer Fixes the 'Not X but Y' Pattern in AI-Generated Text
Humanizer fixes the "Not X but Y" pattern by detecting rhetorical staging cues through regex-based tell-markers, evaluating whether the negative clause contains substantive information or merely artificial emphasis, and transforming the sentence into a direct positive statement that eliminates unnecessary negation.
The blader/humanizer repository implements a specialized text refinement skill designed to identify and correct mechanical rhetorical patterns typical of large language model outputs. When processing content containing the "Not X but Y" pattern—catalogued as Pattern 1 in the project's staging detection system—Humanizer removes inflated weighting and restores natural human-like prose by stripping away negation that adds no informational value.
Understanding the "Not X but Y" Anti-Pattern
Large language models frequently employ contrastive constructions to manufacture emphasis, resulting in prose that sounds artificially staged. Humanizer recognizes several variations of this pattern as documented in SKILL.md, including explicit contrasts like "not X but Y", qualified forms such as "not just/only/merely X, but Y", reframed statements like "it's not X, it's Y", and split-sentence constructions such as "This does not mean X. It means Y."
These patterns function as staging tells—rhetorical devices that attempt to add weight to a point by first negating a strawman position. When the negative clause merely sets up the positive claim without correcting an actual misconception, Humanizer identifies this as unnecessary computational elaboration rather than genuine communication.
The Four-Stage Transformation Pipeline
According to the implementation in the Humanizer source code, the correction process follows a rigorous pipeline to ensure semantic preservation while eliminating artificial construction.
Stage 1: Regex-Based Detection
Humanizer scans input text using regex-based tell-markers defined in the pattern catalogue. These markers identify cue words and structural signatures that indicate the "Not X but Y" construction is present.
Stage 2: Information Evaluation
The system evaluates whether the negative clause contributes substantive information or merely rhetorical staging. If the negation addresses no real belief held by the reader—meaning it only adds artificial weight without new content—Humanizer flags the clause for removal.
Stage 3: Positive-Only Rewriting
During transformation, Humanizer removes the unnecessary negative half and states the point directly. For split-sentence contrasts, the system merges the clauses into a single coherent statement that preserves the core claim while eliminating the artificial negation structure.
Stage 4: Semantic Verification
The rewritten output undergoes comparison against the original to verify that no factual information has been lost and that genuine contrasts—where the negative portion corrects an actual misconception—remain intact when warranted.
Practical Implementation and Code Examples
You can invoke Humanizer's correction capabilities through direct function calls. The following examples demonstrate how the pattern detection and transformation work in practice.
Example 1: Qualified Contrast
# Input containing "not just... but" construction
text = """
It's not just about the beat riding under the vocals; it's part of the aggression and atmosphere.
It's not merely a song, it's a statement.
"""
# Process through Humanizer
from humanizer import humanize
clean = humanize(text)
print(clean)
Output:
The heavy beat adds to the aggressive tone.
Example 2: Split-Sentence Contrast
text = """
This does not mean every choice is equal. It means there is no external system that confirms which choice is right.
"""
print(humanize(text))
Output:
No external system confirms which choice is right, although the choices still have different consequences.
Example 3: Clipped Negative Construction
text = "The options come from the selected item, no guessing."
print(humanize(text))
Output:
The options come from the selected item without forcing the user to guess.
Key Source Files and Architecture
The Humanizer implementation relies on specific documentation files that define the pattern catalogue and integration methods:
SKILL.md: Contains the complete pattern catalogue including Pattern 1 (the "Not X but Y" staging tell) and specifies the regex markers used for detection.README.md: Provides installation instructions and invocation context for using the skill in text processing pipelines.AGENTS.md: Details how the skill is exposed to various agent platforms including OpenAI and Claude integrations.
Summary
- Humanizer treats the "Not X but Y" construction as Pattern 1, a staging tell common in LLM outputs.
- The detection system uses regex-based tell-markers to identify variations including "not just/merely X, but Y" and split-sentence contrasts.
- The transformation pipeline evaluates whether negative clauses add real information or merely artificial weight before rewriting.
- Valid transformations preserve factual content while eliminating unnecessary negation, resulting in more direct, human-like prose.
- Pattern definitions and detection rules reside in
SKILL.md, while integration guides are available inREADME.mdandAGENTS.md.
Frequently Asked Questions
What makes the "Not X but Y" pattern a problem in AI-generated text?
The pattern often signals rhetorical staging rather than genuine communication. When models use "not X but Y" constructions without X being an actual misconception the reader holds, they create artificial weight and distance the text from natural human writing styles. Humanizer identifies these instances as tells that indicate computational elaboration rather than necessary contrast.
How does Humanizer distinguish between necessary and unnecessary negation?
Humanizer employs an evaluation stage that checks whether the negative clause corrects a real belief or merely sets up the positive claim for emphasis. If the negation adds no new substantive information—meaning the sentence would communicate the same content without it—the system classifies the construction as a tell and removes the negative half.
Can Humanizer handle complex split-sentence constructions?
Yes. The transformation pipeline specifically addresses split-sentence contrasts such as "This does not mean X. It means Y." by merging the clauses into a single positive statement. As shown in the code examples, the system preserves the core factual claim while eliminating the artificial negation structure, creating more concise and natural prose.
Where are the pattern definitions stored in the repository?
All pattern definitions, including the complete rules for "Not X but Y" detection and transformation, are documented in SKILL.md at the repository root. Integration instructions for different platforms are found in README.md and AGENTS.md, which explain how to load and invoke the skill within various agent frameworks.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →