C4 Cognitive Classifier v1

27-class cognitive state classifier family. Both models map text into the Z₃³ cognitive topology using 3 independent heads (Time, Scale, Agency).

This repository hosts the ONNX inference files. There are two variants:

Variant File Base model Size Mean val accuracy Tokenizer source Best for
light (default) c4_bert_v1.onnx DistilBERT ~416 MB 85.9% this repo Laptops, fast SaaS, first tries
heavy c4_mdeberta_v2.onnx mDeBERTa-v3-base ~1.1 GB 96.5% C4-Cognitive-Classifier-Heavy Best accuracy, multilingual, research

The heavy model is also available as a self-contained repo at HangJang/C4-Cognitive-Classifier-Heavy, which includes its own mDeBERTa tokenizer and model card.

State Space

Axis Values Meaning
Time (t) 0=Past, 1=Present, 2=Future Temporal orientation of thought
Scale (s) 0=Concrete, 1=Abstract, 2=Meta Level of abstraction
Agency (a) 0=Self, 1=Other, 2=System Relational stance

The full 27-state space (3×3×3) represents all combinations. Each axis is predicted independently via a 3-way softmax head.

Performance

light — DistilBERT (c4_bert_v1.onnx)

Metric Value
Validation accuracy 85.9% (t=90.6%, s=88.0%, a=79.1%)
Inference (ONNX, CPU) ~4.3 ms p50 (Apple M-series)
Model size 416 MB

heavy — mDeBERTa-v3-base (c4_mdeberta_v2.onnx)

Head Accuracy
Time (t) 98.1%
Scale (s) 97.1%
Agency (a) 94.2%
Mean 96.5%

Usage

With Deep Self Mirror (DSM)

# Light (default)
dsm me ~/Downloads/conversations.json

# Heavy
dsm me ~/Downloads/conversations.json --c4-model heavy

# Web UI
streamlit run dsm_web.py
# Choose Light or Heavy in the "Model settings" panel.

Raw inference (light)

import onnxruntime as ort
import numpy as np
from transformers import AutoTokenizer

session = ort.InferenceSession("c4_bert_v1.onnx")
tokenizer = AutoTokenizer.from_pretrained("HangJang/C4-Cognitive-Classifier-v1")

text = "Propose a novel approach to decentralized identity"
tokens = tokenizer(text, return_tensors="np", padding=True, truncation=True, max_length=512)

outputs = session.run(None, {
    "input_ids": tokens["input_ids"],
    "attention_mask": tokens["attention_mask"],
})

t = int(np.argmax(outputs[0][0]))  # Time: 0/1/2
s = int(np.argmax(outputs[1][0]))  # Scale: 0/1/2
a = int(np.argmax(outputs[2][0]))  # Agency: 0/1/2

print(f"C4 State: ({t}, {s}, {a})")

Raw inference (heavy)

import onnxruntime as ort
import numpy as np
from transformers import AutoTokenizer

session = ort.InferenceSession("c4_mdeberta_v2.onnx")
# The heavy tokenizer lives in the dedicated heavy repo:
tokenizer = AutoTokenizer.from_pretrained("HangJang/C4-Cognitive-Classifier-Heavy")

text = "Я думаю о будущем и строю планы на многие годы вперёд."
tokens = tokenizer(text, return_tensors="np", padding=True, truncation=True, max_length=256)

outputs = session.run(None, {
    "input_ids": tokens["input_ids"],
    "attention_mask": tokens["attention_mask"],
})

t = int(np.argmax(outputs[0][0]))
s = int(np.argmax(outputs[1][0]))
a = int(np.argmax(outputs[2][0]))

print(f"C4 State: ({t}, {s}, {a})")

Notes

  • The heavy model is multilingual (English, Russian, and 100+ languages) thanks to the mDeBERTa-v3-base encoder.
  • INT8 quantization was tested but degraded accuracy substantially, so both releases keep FP32 weights for maximum quality.
  • Downstream projects interpret the raw (t,s,a) coordinates according to their domain:

Citation

@misc{c4_cognitive_classifier_v1,
  title = {C4-Cognitive-Classifier-v1: Z₃³ Cognitive Topology from Natural Language},
  author = {Selyutin, I.G.},
  year = {2026},
  url = {https://huggingface.co/HangJang/C4-Cognitive-Classifier-v1}
}
Downloads last month
444
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support