DotCheck/valla-text-v14_3
DotCheck/valla-text-v14_3
`Valla@14.3` is a text detector. It maps a UTF-8 string and an explicit lang code to \(p \in [0,1]\), an estimate of \(P(\mathrm{AI})\) for the writing, not for the truth of the claim.
Latin writing shares Rask and Comenius plus a named tiny per language. Chinese is Ma Jianzhong 2.2, independent of that trio. Ancestor Hub ids sit in the bases table and YAML base_model only.
- Latin group (
en,es,pt,fr,it,de,nl): Rask + Comenius + named tiny (Sweet, Bello, Ribeiro, Littre, Ascoli, Grimm, Vries), then a 4-parameter stack \(p=\sigma(w0 zr + w1 zc + w_2 \delta + b)\) at cut 0.5. - Chinese group (
zh): Ma Jianzhong 2.2.
Unsupported lang fails closed (unsupported_language). There is no silent English fallback. Traditional-Chinese-dominant input is not scored (und).
Model description
Text is cleaned (TC1) before hashing and scoring: wiki-style citations stripped, whitespace collapsed, #category tokens dropped. The same cleaner is used in Express and the extension.
Latin languages share one Rask forward and one Comenius forward per packed unit, then a language-specific tiny and stack. Chinese loads Ma Jianzhong only when text_stack_head_zh_v2_2.npz is present. Shared towers are not safe for concurrent forwards: the text lane serializes GEMMs.
In this repo: README.md, `LICENSE`, `NOTICE`, `CITATION.cff`, and the eight .npz heads listed above. Upstream encoder checkpoints are not redistributed here.
Architecture
text + lang
→ TC1 clean
→ if lang in {en, es, pt, fr, it, de, nl}:
Rask + Comenius + named tiny
(Sweet, Bello, Ribeiro, Littre, Ascoli, Grimm, Vries)
→ p = sigma(w0 zr + w1 zc + w2 delta + b)
→ if lang == zh:
Ma Jianzhong
→ else: unsupported_language (no score)
→ pInference
Open weights: the live .npz heads in this repository (Apache-2.0), used with the frozen upstream bases named above. This is not a transformers AutoModel package.
Product scoring: Check or Pro API. Hub storefront: `see-whats-real`.
Minimum length and fair-use caps are product policy at Express, not properties of the heads.
Training data
English fit AI is commercial-clean self-generation (Qwen2.5-7B, Mistral-7B, and Grok-4.5). Holdout AI is a smaller disjoint generator (Qwen2.5-1.5B; encyclopedic-heavy). English humans are a warehouse sample: Gutenberg.org windows 40%, Wikipedia 35%, WikiText 25%, sliced to 520–1100 characters. Other Latin languages keep their prior wiki / WikiText / Gutenberg mixes. Chinese humans are Wikipedia, modern prose, and books (OpenCC t2s). Chinese fit AI is grok-4.6, Qwen2.5-7B, and Mistral-7B (encyclopedic / everyday / assistant_chat). Chinese exam AI is Yi-1.5-6B + SmolLM2 (encyclopedic; n=400 human / 480 AI). No NC datasets. No published holdout scraped from live ChatGPT or Claude.
Evidence files: text_public_exam_v12.json (public EN), text_gates_v12.json (cousin jsonl, not public), text_gates_{lang}.json.
Evaluation
Absolute floors on every language head: human mean \(P(\mathrm{AI}) \le 0.12\), AI mean \(\ge 0.85\), balanced accuracy \(\ge 0.90\), all at threshold \(0.5\).
English (public claim)
Public English floats are RAID-lite overall (Wikipedia blocks; news is observed only). The frozen jsonl holdout is one-lab Qwen-1.5B and is not the public claim. Rank-first beat of @11 on that holdout still holds (BEAT_V11_HOLDOUT_OK). Canary/style v2 remain watches.
Other language heads (same floors)
<!-- sync:text-lang-start --> | Lang | Person | Wire | Human | AI | balacc | |------|--------|------|------:|---:|--------:| | zh | Ma Jianzhong | `inhouse-text-zhv2 | 0.047 | 0.922 | 0.954 | | es | Bello | inhouse-text-es@14 | 0.029 | 0.993 | 0.982 | | fr | Littre | inhouse-text-fr@14 | 0.021 | 0.990 | 0.978 | | pt | Ribeiro | inhouse-text-pt@14 | 0.042 | 0.964 | 0.958 | | de | Grimm | inhouse-text-de@14 | 0.034 | 0.966 | 0.978 | | it | Ascoli | inhouse-text-it@14 | 0.016 | 0.943 | 0.972 | | nl | Vries | inhouse-text-nl@14` | 0.056 | 0.963 | 0.950 | <!-- sync:text-lang-end -->
Portuguese lang=pt uses the Portuguese 14.3 head.
Intended use
- Reproduce the eight heads and the holdout tables.
- Research on synthetic-text detection in the eight supported languages.
Out of scope: languages outside {en, zh, es, pt, fr, it, de, nl}; Traditional Chinese; plagiarism, factual verification, or authorship; a product SLA from the Hub files alone.
Limitations
- Latin holdout AI is Qwen2.5-1.5B, disjoint from fit. Chinese exam AI is Yi-1.5-6B + SmolLM2 (encyclopedic). Live ChatGPT, Claude, and other closed generators are not a published holdout row.
- Short, heavily edited, or machine-translated text has higher variance on this stack.
zhis Simplified Chinese (Ma Jianzhong). Other scripts and Traditional-Chinese-dominant text are out of domain: no score, no English fallback.
License
`LICENSE` — Apache License 2.0 for DotCheck heads in this repository. Upstream bases: `NOTICE`.
Citation
`CITATION.cff` · wire inhouse-text@14 / Valla@14.3 · https://dotcheck.ai/docs
