Instructions to use tmadl/ID-decentering-scorer-ensemble with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use tmadl/ID-decentering-scorer-ensemble with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
Integrated Decentering Text Scorer: Qwen LoRA Ensemble
A continuous 0β9 scorer of decentering in short reflective English text β the capacity to step back from immediate experience and observe thoughts, feelings, and perspectives as constructed events rather than identifying with them.
The training signal was built around a decentering-aligned textual maturity indicator from related work on adult ego-development measurement (Madl & Cook-Greuter, in review). That work identifies multiple maturity indicators; the one used here was selected as the most closely aligned with reflective distance from one's own meanings, affects, and identifications. In this release, the indicator is used as an imperfect, theory-motivated proxy for decentering expression in text. The adult-developmental sentence-completion material used during training provides dense reflective text and source material for contrastive pair construction; it is not the task definition.
The released scorer is an equal-weight ensemble of two independently trained Qwen LoRA adapters. Averaging is used to preserve diversity across independently trained members while avoiding validation-set-specific weighting.
Boundary note: the scorer estimates decentering expressed in text, not a stable attribute of the writer. It should not be used to infer a person's mindfulness, wisdom, overall maturity, mental health, or developmental stage, or to profile, rank, classify, or make decisions about identifiable individuals.
Across independent validation corpora, the scorer shows a consistent decentering-related signal from short free-text passages. Convergent associations with established decentering measures fall in the r β +0.35 to +0.47 range: MPoDT-Trait composite correlations are r = +0.41 across all stems and r = +0.47 after applying the mechanical eligibility filter (n=35), while a larger independent EQ-20 decentering anchor gives r β +0.35β0.36 (n=124). These validation analyses are reported in Madl & Lazar (in revision).
These are cross-method construct-validity estimates for a brief, text-derived measure β not classification-accuracy scores β and should be interpreted in light of reliability limits, method variance, and the difficulty of measuring reflective capacities from short passages. Additional validation shows theory-aligned associations across essays, conflict diaries, pandemic-worry text, and an exploratory 24-month meditation-practice sensitivity analysis (Hedges g = +0.82, p = .038; n=44).
License
The LoRA adapter weights and accompanying repository materials are released under CC-BY-NC-4.0. This permits non-commercial use, including research, teaching, personal experimentation, and other uses not primarily intended for commercial advantage or monetary compensation. See LICENSE.
Commercial use is not granted under CC BY-NC 4.0. Separate commercial licenses may be available for reviewed research, evaluation, or internal-tooling use cases; see COMMERCIAL.md. Such licenses do not by default permit clinical, forensic, educational, employment, surveillance, consumer-profiling, targeted-persuasion, or other decision-making uses involving identifiable individuals.
The base models (unsloth/Qwen3.5-27B and unsloth/Qwen3.6-27B) are not redistributed here and retain their own licenses. Training corpora and third-party materials retain their own terms; see NOTICE.
Copyright Β© 2026 Tamas Madl. All rights not granted under CC BY-NC 4.0 or a separate written commercial license are reserved.
Intended use
This model is intended for research use: scoring English text for decentering expressed in the passage, especially in psychological and social-science text analysis, contemplative-science studies, persuasion / belief-change research, and human-AI interaction or AI-safety studies concerned with reflective agency. Scores are most defensible at the level of texts, conditions, corpora, or repeated-measures aggregates.
The model scores texts, not people. A single text's score should not be treated as a stable attribute of the writer.
Do not use the scorer for individual profiling, clinical or forensic assessment, educational or employment evaluation, eligibility decisions, surveillance, content-moderation decisions, targeted persuasion, consumer self-insight products, or any other use that ranks, classifies, or makes decisions about identifiable individuals.
Transfer outside written reflective English text has not been validated. In particular, the scorer should not be used on impersonal or argumentative text as if it measured decentering β in the CMV validation (see below) it behaves as a length proxy in that register.
Research context
This scorer is part of a broader research programme on how AI dialogue affects users' reflective agency: whether people remain able to inspect the perspectives, warrants, and interpretive frames through which an exchange shapes their reasoning (Madl & Lazar, A Receiver-Side Blind Spot in AI Safety, in review).
In that programme, decentering is the construct anchor for frame-aware reflection: holding an introduced interpretive frame as local and contestable rather than operating through it as one's own standpoint. The scorer is a candidate text-derived research instrument for that construct, not a measure of reflective agency, receiver-side examinability, or user-aware AI safety as a whole.
Related scorers for the other two construct anchors are:
- Integrative Complexity scorer (for the perspective-collapse / content object):
tmadl/IC-Qwen3.5-ORPO-400 - Intellectual Humility scorer (for the calibration-collapse / belief-holding and updating):
tmadl/IH-scorer-v2
How to use
This is a two-adapter ensemble. The repository ships both LoRAs in subdirectories (v9_best/, v13_qwen36_best/). The supplied inference_example.py loads each adapter sequentially (one at a time, single-GPU memory budget), scores all texts, and returns the per-text mean.
pip install -U unsloth bitsandbytes accelerate
from inference_example import score_texts
scores = score_texts(["I noticed I was getting reactive again, and held back.",
"I was angry, and I knew she was wrong."])
Single-member usage (β half the cost, but without the validation benefits of the ensemble):
from inference_example import score_texts
scores = score_texts(texts, members=["v9_best"])
# or members=["v13_qwen36_best"]
Under the hood each member is loaded via unsloth.FastModel.from_pretrained(member_dir, ...), scored, unloaded, and the next is loaded. The first call downloads both base models (Qwen3.5-27B and Qwen3.6-27B) on demand. Inference at 4-bit needs β₯ 24 GB VRAM (one member is loaded at a time).
The scoring head is logit-EV decoding: a single forward pass extracts logits at the assistant generation position over the ten digit tokens "0"β¦"9", applies softmax, and returns the expected value Ξ£ d Β· softmax(logits)[d] β continuous in [0, 9]. Each adapter was trained against the exact system prompt embedded in inference_example.py (SYSTEM_PROMPT). Do not modify it without retraining β prompt mismatch will degrade scores.
See inference_example.py for the full runnable example, including a CLI.
Optional text-eligibility filters
Decentering is meaningfully scoreable only when a passage contains first-person or self-relevant material the author could be identified with, such as a belief, value, feeling, identity, or perspective. When a passage lacks such material, scores are more likely to reflect length and surface features than the construct.
For heterogeneous inputs, eligibility filtering can improve construct validity; in the validation corpora reported here, it increased some convergent correlations by roughly +0.05 to +0.10. For confirmatory analyses, pre-specify the filtering rule and report the unfiltered view as a sensitivity check. For exploratory analyses, report both views transparently.
This package ships two filters that operationalise the preconditions:
| filter | what it does | runtime | dependency |
|---|---|---|---|
mechanical (extract_scoreable.py) |
sentence-level keep-if: first-person pronoun, belief / interior-state marker, or |VADER compound| β₯ 0.4 | deterministic, local, milliseconds per text | vaderSentiment |
LLM v2.2 (extract_scoreable_v2_2.py) |
annotator-prompted DeepSeek V4 Pro extracts spans where the construct's preconditions hold; high-recall calibration that explicitly includes author-owned external-topic stances | one API call per text | DeepSeek / OpenRouter API key |
extract_scoreable.py also exposes an earlier llm_extract_many (v1 prompt) kept only for reproducibility of pre-v2.2 analyses. v1 is deprecated β it was over-restrictive (~32 % empty output on essay-format text) and is superseded by v2.2 for any new work.
Typical use β mechanical filter (recommended default)
from extract_scoreable import mech_extract
from inference_example import score_texts
eligible = [mech_extract(t) for t in texts]
mask = [bool(e.strip()) for e in eligible]
scores = score_texts([e for e, m in zip(eligible, mask) if m])
# carry the mask alongside the scores so filter-on / filter-off
# views remain reproducible
LLM filter (heterogeneous-register inputs; mixed factual + reflective)
import asyncio, os
os.environ["OPENROUTER_API_KEY"] = "sk-..." # required
from extract_scoreable_v2_2 import extract_many_v2_2
from inference_example import score_texts
joined, spans = asyncio.run(extract_many_v2_2(texts, concurrency=25))
mask = [bool(j) and j != "__LLM_ERROR__" for j in joined]
scores = score_texts([j for j, m in zip(joined, mask) if m])
When to use which
- Default to
mech_extract. Deterministic and local; in the heterogeneous validation settings reported here, it recovers most of the observed validity gain without requiring an external API. - Use LLM v2.2 when texts are long or mixed-register, or in pre-specified confirmatory analyses where the extractor version, prompt, provider, and failure-handling rules are frozen in advance. It picks up author-owned external-topic stances and self-distancing constructions that the keyword-based mechanical filter misses, at the cost of an API call per text.
- Skip filtering when input is already uniformly first-person reflective (sentence-completion stems, diary entries, single-emotion reports). Save the eligibility flags anyway for sensitivity checks.
The eligibility_features.compute() helper returns the underlying per-text features (first_person_ratio, belief_marker_n, affect_intensity, plus the mech-eligibility composite) for diagnostics or for users who prefer to set their own thresholds.
Training target construction
The scorer is trained to estimate decentering expression in short reflective text. Adult-developmental sentence-completion material was used because it provides compact passages in which reflective distance, identification, emotional stance, and meaning-making structure are observable, and because it supports contrastive pair construction. The training target is not the original developmental-stage score; it is a decentering-aligned maturity indicator from Madl & Cook-Greuter's in-review operationalisation of ego-development scoring, building on the Loevinger / WUSCT tradition and later adult-developmental extensions.
In that upstream work, computational modelling and prompt-search methods were used to operationalise ego-development ratings and identify multiple maturity indicators. This scorer uses only the maturity indicator judged most aligned with decentering, not the full developmental-stage scoring system.
This target is intentionally treated as imperfect. The model is therefore trained with contrastive Bradley-Terry pairs rather than direct regression to developmental stage or to the proxy maturity indicator score. High-confidence high/low buckets provide the main decentering contrast; within-postconventional pairs preserve graded reflective-distance differences among later meaning-making forms; and within-stage pairs force the model to distinguish texts with different proxy scores even when developmental stage is held constant. The within-stage pairs are included specifically to discourage stage or bucket shortcut learning.
The resulting model should be read as a decentering-expression scorer calibrated on developmental sentence-completion material, not as an automated EDT rater.
Proxy-target scoring and training pair construction
Proxy maturity-indicator scores were generated for WUSCT-tradition sentence-completion material using the procedure described in Madl & Cook-Greuter (in review). The resulting scores were used to construct contrastive training pairs for decentering expression, not as developmental-stage labels and not as direct regression targets.
- 8,181 WUSCT-tradition sentence completions spanning conventional and later adult-developmental levels
- 1,182 additional Stage-3/4 items from the longest-text subset
Pairwise examples were constructed to reduce dependence on developmental-stage shortcuts and suppress superficial bucket learning. Pairs are length-matched and grouped into three types, weighted to contribute approximately equally to the loss:
| Pair type | Weight | Role |
|---|---|---|
| cross_bucket | 0.44 | Main high-vs-low decentering-proxy contrast |
| within_pc | 1.64 | Graded differences within later (post-conventional) adult-developmental material |
| within_stage | 9.43 | Same-stage contrast; suppresses stage / bucket shortcut learning |
The within-stage bucket is the anti-shortcut signal: it forces the model to distinguish texts that have different proxy scores even when their developmental-stage label is identical. It is consistently the smallest of the three buckets in any given data generation (e.g. 3,930 within-stage pairs in v9_best's training set; 6,419 in v13_qwen36_best's) and is up-weighted by a corresponding factor to contribute as much to the loss as the other two. Per-member total pair counts are in the Training table below.
Training
Both members share the same training scheme β Bradley-Terry pairwise loss on the expected value of the digit-token softmax β but differ in base model, LoRA initialisation, and training-data composition. These differences are intended to increase ensemble diversity.
v9_best |
v13_qwen36_best |
|
|---|---|---|
| Base | unsloth/Qwen3.5-27B (4-bit NF4 β QLoRA) |
unsloth/Qwen3.6-27B (4-bit NF4 β QLoRA) |
| LoRA init | warm-start from a prior WUSCT-tradition sentence-completion LoRA | fresh LoRA (no warm-start) |
| Adapter | r=32, Ξ±=64, no dropout, targets: q/k/v/o + gate/up/down_proj |
r=16, Ξ±=32, no dropout, same target modules |
| Training pairs | ~62 k length-matched contrastive pairs | ~106 k length-matched contrastive pairs (broader content distribution) |
| Trainer | Bradley-Terry pairwise (custom), mae_temp = 0.85 |
same |
| Loss | pairwise on E[digit softmax] | same |
The deployed model averages two adapters: v9_best and v13_qwen36_best. They are strongly correlated on training-format text (per-stem r β 0.93) but are not interchangeable across the validation battery, motivating the equal-weight ensemble.
Training data
| source | scale | use | notes |
|---|---|---|---|
| Reflective sentence-completion calibration material | 0β9 (mapped) | both members | Includes Cook-Greuter-scored post-conventional and Stage-4 material; see NOTICE. |
| Lanning (2018) ego-development items | 0β9 (mapped) | both members | rating β₯ 6 selected. See NOTICE. |
| Second hand-scored WUSCT-tradition sentence-completion corpus | 0β9 (mapped) | v13_qwen36_best only |
Additional Cook-Greuter-scored material with broader content distribution. See NOTICE. |
| Decentering-aligned maturity indicator scoring | 0β9 | both β proxy target | Operationalises the selected decentering-aligned indicator, not EDT stage. See "Training target construction" above for details. |
Bradley-Terry preference pair construction (cross_bucket / within_pc / within_stage), bucket counts, length-matching, and per-bucket weights are documented in "Training target construction" above.
Validation
Six independent corpora; per-text scoring with the ensemble, aggregated per participant where applicable.
Interpretation note. Correlations reported below are cross-method validity estimates. They compare automated text-derived scores against independent self-report, human-coded, behavioural, or longitudinal anchors, and should not be read as percentage accuracy. As with human-coded developmental or reflective-capacity measures, observed correlations are attenuated by rater/criterion reliability, text brevity, construct mismatch, and within-person variability. For general context, Gignac & Szodorai's 2016 review of individual-differences research found correlations of approximately r = .10, .20, and .30 to correspond to relatively small, typical, and relatively large effects, respectively; fewer than 3% of meta-analytic correlations were as large as r = .50.
1. Convergent validity β text-based decentering self-reports
Hanley MPoDT-Trait (Hanley et al. 2020; n=35 sentence-completion participants). An established text-based decentering measure. Per-participant mean of stem-level ensemble scores; Pearson r vs each MPoDT subscale.
| outcome | all stems (629) | mech-eligible (504, 80%) |
|---|---|---|
| HanleyTotal | +0.392 | +0.451 |
| Meta-awareness | +0.415 | +0.493 |
| Disidentification | +0.419 | +0.432 |
| Non-reactivity | +0.113 | +0.172 |
| Composite (0.375Β·Dis-id + 0.375Β·Meta + 0.25Β·Non-react) | +0.414 | +0.472 |
Not every sentence is meaningfully scoreable for decentering β purely factual statements ("Paris is the capital of France") say nothing about the writer's ability to step back from their experience, so any score on them is dominated by length and surface features rather than the construct. mech-eligible = retained by the deterministic mechanical eligibility filter: stems containing first-person pronouns, belief markers, or moderate VADER affect (|compound| β₯ 0.4). See "Optional text-eligibility filters" above for the full rationale.
EQ-20 decentering (Fresco et al. 2007; MGHaging cohort, n=124 participants). EQ-20 (Experiences Questionnaire) 11-item Decentering subscale. Per-participant mean ensemble score (averaged across available waves) vs grand-average EQ-20 decentering.
| view | n | Pearson r |
|---|---|---|
| all stems | 124 | +0.356 |
| mech-eligible | 124 | +0.352 |
| mech β§ LLM-scoreable | 124 | +0.362 |
| t1 baseline only, mech | 52 | +0.417 |
All p < .001 at n=124.
2. External validation beyond sentence completions
WASSA empathic reactions (Buechel et al. 2018; n=1,860 free-text essays). Theory: decentering β empathic concern (positive), holding personal distress constant.
| view | empathy r | Ξ² (controls: distress + log-length) | z |
|---|---|---|---|
| raw essay | +0.349 | +0.161 | +11.7 |
| construct-scoreable (LLM-filtered) | +0.383 | +0.180 | +12.6 |
| both filters | +0.397 | +0.191 | +13.0 |
The convergent signal survives residualisation on personal distress (r = +0.250 raw, p < 10β»Β²βΉ) β i.e., decentering tracks the "compassionate-not-fused" partition of empathic engagement, not the fused-distress component.
Grossmann conflict diary (Grossmann 2021, Study 1; n=403 first-person events β₯ 100 chars, from 298 subjects). Trained raters coded five Brienza wise-reasoning subscales. Subject-clustered SEs; controls: log event length + survey wave. Theory: decentering β wise reasoning, primarily Search-for-Resolution and Perspective-Taking; null on Compromise / Limits / Change (specificity).
| subscale | Ξ² (std) | p |
|---|---|---|
| Search-for-Resolution (primary) | +0.186 | .005 |
| Perspective-Taking (secondary) | +0.103 | .065 |
| Compromise (discriminant null) | +0.050 | .39 |
| Limits (discriminant null) | +0.016 | .70 |
| Change (discriminant null) | +0.001 | .98 |
Primary anchor significant; discriminant nulls clean (no construct-creep into generic wisdom overlap).
RW3D pandemic worry text (van der Vegt, 2023; n=1,152 persons, 3 monthly waves, 2,304 lagged pairs). Free-text descriptions of current pandemic worries + 8 emotion ratings per wave. Between-vs-within decomposition with baseline-affect controls.
- Trait axis (person-mean decentering β mean negative affect): Ξ² = +0.012, p = .47 β null (theory-aligned: no anti-theory result).
- Within-person (decentering at wave t β negative affect at t+1, person-centered, baseline-controlled): Ξ² = +0.036, p = .06 β directional, marginal.
3. Longitudinal sensitivity to meditation practice (MGHaging cohort, n=44 at 24 mo)
Longitudinal meditation-intervention cohort with recorded meditation-practice compliance per participant.
| group definition | Ξ-decentering hi vs lo | Welch t-test | Hedges g |
|---|---|---|---|
| Any practice (>0) vs none (=0) | +0.226 vs β0.330 (n_hi=33, n_lo=11) | p = .038 | +0.82 |
| Practice > 0.1 vs β€ 0.1 | +0.297 vs β0.282 (n_hi=28, n_lo=16) | p = .010 | +0.87 |
In the primary descriptive contrast, participants with any recorded practice showed greater 24-month change in scorer-estimated decentering than participants with no recorded practice (g = +0.82, p = .038). A stricter practice threshold (> 0.1 vs β€ 0.1) gave the same direction with a larger point estimate (g = +0.87, p = .010). The continuous partial association between practice and Ξ-decentering, controlling baseline t1, was positive but non-significant (partial r = +0.159, p = .31).
Because compliance was not randomly assigned and the full-data sample is small, these results should be interpreted as longitudinal sensitivity / convergent-validity evidence rather than as a standalone causal estimate. The parent intervention included substantial noncompliance, so arm assignment alone is not the focus of this scorer-validation analysis. Comparable 12-month change estimates were smaller and non-significant.
4. Discriminant β CMV winning-arguments task (Tan et al. 2016; n=4,263 paired arguments)
For each Reddit r/ChangeMyView original post, one comment earned a Ξ award ("you changed my view") and another did not. Theory: decentering should NOT predict argumentative-rhetoric winning beyond what text length explains β this is an off-construct register (impersonal, argumentative, length-driven).
- Paired AUC: 0.546 (significant raw, but confounded with length: log-length AUC = 0.627).
- Length-matched β€ 10% subset (n=491): AUC = 0.447 β chance.
We report this as construct-boundary evidence: in this argumentative register, the apparent signal is largely explained by length and does not survive length matching. The scorer should therefore not be used for impersonal or argumentative text as if it measured decentering.
Limitations
- Language: trained on English text only. No claims about other languages.
- Domain: anchored on adult-developmental sentence-completion material in the Loevinger / WUSCT tradition, including adult-developmental extensions by Cook-Greuter. Best for short-to-medium reflective texts (β 50β500 chars typical). Validated on free-text essays, diary events, and pandemic-worry narratives; collapses to a length-proxy on argumentative text (see Validation β CMV).
- Length bias: Spearman Ο between score and text length β +0.2β0.3 across corpora (reduced from earlier checkpoints by progressive length-matching). When testing within-corpus effects, control log-length.
- Length truncation: default
max_seq_len = 384tokens; long passages are scored on the truncated prefix. For very long inputs passmax_seq_len = 1024or higher. - Aggregate where possible. Per-text scores are noisy; per-person means (averaging multiple texts per person) are where the validity numbers above were established.
- No individual decision use. The scorer has not been validated for decisions about identifiable people, with or without consent. It should not be used to infer stable psychological attributes, eligibility, risk, suitability, or treatment need.
- Single-pass deterministic. The released inference path returns one deterministic estimate and does not provide calibrated uncertainty intervals. Repeated stochastic scoring can be used for sensitivity checks, but should not be interpreted as validated measurement uncertainty.
- Score meaning: scores are relative estimates of decentering expressed in the passage. Higher scores indicate stronger textual evidence of stepping back from one's thoughts, affects, identities, or perspectives. Scores should not be read as percentile ranks, diagnostic categories, or developmental estimates of the writer.
Citation
If you use this model, please cite the released model repository, the Integrated Decentering manuscript, and the upstream adult-developmental decomposition used to construct the training target:
@misc{madl_decentering_scorer_2026,
author = {Madl, Tamas},
title = {Integrated Decentering Text Scorer: Qwen LoRA Ensemble},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/tmadl/ID-decentering-scorer-ensemble}},
note = {Model repository}
}
@unpublished{madl_lazar_id_revision,
author = {Madl, Tamas and Lazar, Sara W.},
title = {Integrated Decentering: Measuring the Consolidation of
Psychological Distance into Structure},
note = {Manuscript in revision},
year = {2026}
}
@unpublished{madl_cookgreuter_ego_dev_structure,
author = {Madl, Tamas and Cook-Greuter, Susanne},
title = {Evolutionary AI-Driven Discovery of the Psychological Structure
of Adult Ego Development},
note = {Manuscript in review at Frontiers in Psychology},
year = {2026}
}
If your use case concerns AI dialogue, reflective agency, belief change, framing, or autonomy-preserving AI interaction, please also cite:
@unpublished{madl_lazar_receiver_side_examinability,
author = {Madl, Tamas and Lazar, Sara W.},
title = {A Receiver-Side Blind Spot in AI Safety},
note = {Manuscript in review},
year = {2026}
}
Additional instrument citations are in NOTICE.
Contact
Tamas Madl β tamas.madl@ofai.at
Austrian Research Institute for Artificial Intelligence (OFAI)
- Downloads last month
- -