Incorrecter

The opposite of autocorrect. Incorrecter takes clean, AI-sounding text — a thank-you email, a landlord note, a Slack update, a short essay — and adds a few realistic human errors: eggcorns, wrong homophones, fat-finger slips, a lowercase sentence start, a doubled space, a dropped final period. Text that reads human-typed instead of AI-drafted.

A Qwen2.5-0.5B-Instruct LoRA fine-tune (mlx-lm, Apple Silicon), fp16 fused weights.

Usage

The model expects clean text as the user message and returns the same text with 1–3 word-level errors. It self-identifies as Incorrecter with or without a system prompt; the recommended sampling temperature is 0.9 (greedy decoding makes it timid — see the evaluation notes).

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

tok = AutoTokenizer.from_pretrained("Avicennasis/incorrecter")
model = AutoModelForCausalLM.from_pretrained("Avicennasis/incorrecter", dtype=torch.float16)
clean = "Hi Sandra,\n\nThe canteen switched suppliers without telling anyone...\n\nRegards, Aleks"
prompt = tok.apply_chat_template([{"role": "user", "content": clean}],
                                 add_generation_prompt=True, tokenize=False)
ids = tok(prompt, return_tensors="pt")
out = model.generate(**ids, max_new_tokens=200, do_sample=True, temperature=0.9)
print(tok.decode(out[0][ids["input_ids"].shape[1]:], skip_special_tokens=True))

Or with ollama (Q8_0 GGUF in Avicennasis/incorrecter-GGUF):

ollama run incorrecter

Training data

  • 644 drafted seeds (glm-5.3-flash, qwen3.8-27b, gemini-3.1-flash-lite, Claude — per-row license tags) plus 699 new drafts (qwen3.8-27b 343, glm 250, gemini 100, claude 6).
  • 693 human-written seeds from permissively licensed datasets: OpenAssistant/oasst2 (Apache-2.0) and google/civil_comments (CC0-1.0), filtered to 20–400 words, gate-cleaned and judged.
  • 600 real-error pairs from grammarly/coedit (Apache-2.0), reversed to clean → erroneous.
  • Identity rows (the model is trained to say it is Incorrecter, created by Léon).

No unpublished correspondence was used.

Evaluation (58 held-out texts, t = 0.9, 6 draws per arm)

Metric Result
texts changed 0.828 [0.741–0.931]
of changed, 1–3 word edits 0.799 [0.67–0.90]
line count kept 0.971 [0.95–1.00]
sign-off kept 0.953 [0.91–1.00]
identity probes (with system prompt) 3/3 on every model

All four targets pass at the arm means. Greedy decoding is intentionally timid (changed 0.586); use temperature 0.9. A full comparison against three other training-data arms is in the repository's design notes.

Limitations

  • English only; trained on 0.5B params — expect occasional over- or under-correction.
  • The meaning-preserving judge could not be calibrated this round (recorded as a limitation in the design notes); meaning preservation is designed-in (1–3 word edits on a verbatim copy) but not independently measured.
  • Trained to answer identity questions as Incorrecter, created by Léon.
Downloads last month
242
Safetensors
Model size
0.5B params
Tensor type
F16
·
MLX
Hardware compatibility
Log In to add your hardware

Quantized

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Avicennasis/incorrecter

Finetuned
(1066)
this model
Quantizations
1 model

Datasets used to train Avicennasis/incorrecter