CoolFace
Modelpublic

DotCheck/valla-text-v14_3

sourceHugging Faceapache-2.0updated 16d agoView on Hugging Face
0likes
Model Card

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

FieldValue
Hub idDotCheck/valla-text-v14_3
English wireinhouse-text@14
Public tokenValla@14.3
English artifacttext_stack_head_v14_3_en.npz
Latin bases`Oxidane/tmr-ai-text-detector` (MIT), `intfloat/e5-small` (MIT), `prajjwal1/bert-tiny` (MIT)
Rollback bases`fakespot-ai/roberta-base-ai-text-detection-v1` (Apache-2.0) — Valla rollback @12
Chinese base`hfl/chinese-macbert-base` (Apache-2.0)
Headstext_stack_head_v14_3_{en,es,pt,fr,it,de,nl}.npz + zh_v2_2
lang`en\zh\es\pt\fr\it\de\nl (pt uses the Portuguese 14.3 head; zh` = Simplified Chinese)
Output\(p \in [0,1]\) — estimated \(P(\mathrm{AI})\)
ServeCPU FastAPI POST /v1/analyze-text with required lang

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
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)
  → p

Inference

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.

EnglishOther LatinChinese (zh-Hans)
Fit AIQwen2.5-7B + Mistral-7B + Grok-4.5Qwen2.5-7B + Mistral-7Bgrok-4.6 + Qwen2.5-7B + Mistral-7B
Holdout AIQwen2.5-1.5BQwen2.5-1.5BYi-1.5-6B + SmolLM2 (400/480 encyclopedic)
HumanGut 40 / wiki 35 / WT 25wiki / WikiText / GutenbergWikipedia + modern + books (OpenCC t2s)

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)

MetricFloorMeasured
mean \(P(\mathrm{AI})\) \human\(\le 0.12\)0.029
mean \(P(\mathrm{AI})\) \AI\(\ge 0.85\)0.984
balanced accuracy\(\ge 0.90\)0.979

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.
  • zh is 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