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:
- AI safety — c4protocol / c4-meta-system
- Creative discovery — C4 Reqber
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