Understanding Weak Alone Patterns in Humanizer: Detection and Rewrite Strategy

Weak alone patterns in the Humanizer library are linguistic markers that lack sufficient strength to identify AI-generated text in isolation, requiring at least one additional tell in the same passage before triggering a rewrite operation.

The blader/humanizer repository implements a nuanced approach to humanizing AI-generated text by categorizing detection patterns based on their evidentiary strength. Understanding how to properly handle weak alone patterns is essential for developers building rewrite pipelines that avoid over-editing naturally written prose.

What Makes a Pattern "Weak Alone"?

According to the core skill definition in SKILL.md, a pattern marked weak alone "needs company from other tells in the same passage before you act"【SKILL.md#L29】. This designation exists because these patterns frequently appear in legitimate human writing; acting on them in isolation would produce false positives and unnecessary edits.

Common examples of weak alone patterns defined in the codebase include:

  • Dashes as universal connectors – each dash is considered weak alone【SKILL.md#L62-L63】
  • Stacked qualifiers such as "could potentially possibly be argued" – weak alone【SKILL.md#L71-L72】
  • Over-hyphenated adjective pairs like "data-driven" – weak alone【SKILL.md#L80-L81】
  • Passive-voice constructions without a clear subject – weak alone【SKILL.md#L86-L87】
  • Curly quotation marks – weak alone【SKILL.md#L106-L107】

These patterns share the characteristic of being stylistic choices that human writers regularly employ, unlike stronger tells that almost exclusively indicate AI generation.

How to Use Weak Alone Patterns in Rewrite Operations

The Humanizer framework implements a conditional rewrite logic that evaluates contextual density before applying transformations. Follow this operational sequence when processing text containing weak alone markers:

  1. Mark all tells in the text, including weak alone patterns and strong indicators
  2. Assess the context: verify that the paragraph contains at least one additional tell (weak or strong) alongside the weak alone pattern
  3. Apply the edit only when the density condition is met, replacing the weak alone element with a more natural alternative
  4. Preserve the text when the weak alone pattern appears in isolation, respecting the writer's stylistic intent

This approach ensures that rewrites target only passages exhibiting multiple AI-generation artifacts rather than sanitized natural prose.

Implementation Example

The following Python implementation demonstrates how to programmatically evaluate whether to edit a weak alone pattern based on tell density:

def should_edit_weak_alone(paragraph: str, tells: List[str]) -> bool:
    """
    Return True if the paragraph contains a weak‑alone pattern *and*
    at least one other tell (weak or strong) in the same paragraph.
    """
    weak_alone = {"dash", "stacked_qualifier", "hyphenated_pair",
                  "passive_voice", "curly_quotes"}
    has_weak = any(t in weak_alone for t in tells)
    has_other = len(tells) > 1  # at least one additional tell

    return has_weak and has_other

When processing a paragraph containing multiple tells, the rewrite routine executes transformations only when should_edit_weak_alone returns True:


# Example paragraph containing two weak‑alone tells

para = ("The new policy — announced without warning — affects thousands of "
        "workers. It could potentially possibly be argued that the policy "
        "might have some effect on outcomes.")
tells = ["dash", "stacked_qualifier"]   # detected tells

if should_edit_weak_alone(para, tells):
    # Replace dash with commas and collapse qualifiers

    rewritten = ("The new policy, announced without warning, affects thousands "
                 "of workers. The policy may affect outcomes.")
    print(rewritten)

The function returns False for isolated weak alone patterns, preventing the removal of stylistically appropriate dashes or qualifiers that appear alone in otherwise natural text.

Summary

  • Weak alone patterns require corroborating tells before triggering edits to avoid false positives in rewrite operations.
  • The SKILL.md file defines these patterns at specific line ranges (L29, L62-L107) and mandates contextual evaluation before action.
  • Implementation requires checking tell density: a weak alone pattern must appear alongside at least one other tell in the same paragraph.
  • Code implementations should use conditional logic like should_edit_weak_alone() to enforce these editorial guardrails.

Frequently Asked Questions

What happens if I edit a weak alone pattern without additional tells?

Editing a weak alone pattern in isolation risks over-correction of natural human writing. According to the Humanizer skill definition, these patterns appear frequently in legitimate prose (such as em-dashes or curly quotes), so acting on them alone would strip valid stylistic choices from the text.

How many additional tells are needed to act on a weak alone pattern?

The Humanizer framework requires at least one additional tell in the same passage. The logic checks len(tells) > 1 to ensure the weak alone pattern has "company" from another marker—whether that second tell is weak or strong does not matter, only that the density of AI indicators suggests genuine machine generation.

Where are weak alone patterns defined in the Humanizer codebase?

All weak alone designations reside in SKILL.md at the repository root. The introductory rule appears at line 29, while specific pattern examples are documented at lines 62-107, including dashes (L62-L63), stacked qualifiers (L71-L72), hyphenated pairs (L80-L81), passive voice (L86-L87), and curly quotes (L106-L107).

Can weak alone patterns become strong tells in specific contexts?

No, the classification remains fixed regardless of context. However, the cumulative effect of multiple weak alone patterns can satisfy the density requirement for a rewrite. Two weak alone patterns in the same paragraph provide sufficient evidence to trigger editing, even though neither pattern alone would justify modification.

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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →