This model is the baseline moral presence detector from the papers:
Human Values in a Single Sentence: Moral Presence, Hierarchies, and Transformer Ensembles on the Schwartz Continuum
Víctor Yeste, Paolo Rosso (2026), arXiv:2601.14172
Do Schwartz Higher-Order Values Help Sentence-Level Human Value Detection? When Hard Gating Hurts
Víctor Yeste, Paolo Rosso (2026), arXiv:2602.00913
It is a classifier over the moral presence created from the 19 refined Schwartz basic values, trained on the English, machine-translated portion of the ValueEval'24 / ValuesML corpus.
Inputs: a single sentence (news / political text, in English).
Outputs: a probability for moral presence of one or more of the 19 Schwartz values.
Labels: we collapse “attained” and “constrained” into a single binary label per value (value is expressed vs. not expressed).
This is the text-only DeBERTa-base baseline used in the paper for moral presence.
Intended use
Research on human value detection and moral language.
Baseline / starting point for work on:
Schwartz value theory in NLP
Moral/value-aware text analysis in news and political discourse
The model was not trained or audited for safety-critical or high-stakes decision-making.
Labels
The 19 labels follow the refined Schwartz value continuum:
Self-direction: thought
Self-direction: action
Stimulation
Hedonism
Achievement
Power: dominance
Power: resources
Face
Security: personal
Security: societal
Tradition
Conformity: rules
Conformity: interpersonal
Humility
Benevolence: caring
Benevolence: dependability
Universalism: concern
Universalism: nature
Universalism: tolerance
The presence of any of them is summarized in a single label: Presence.
How to use
1. Quick start: direct use with Transformers
Because this model uses a custom architecture (EnhancedDebertaForSequenceClassification with extra feature inputs), it is loaded via AutoModelForSequenceClassification(..., trust_remote_code=True) rather than the generic pipeline("text-classification"), which only supports a fixed list of built-in model classes.
python
1import torch
2from transformers import AutoTokenizer, AutoModelForSequenceClassification
34model_id ="VictorYeste/moral-presence-detection-deberta-baseline"56tokenizer = AutoTokenizer.from_pretrained(model_id)7model = AutoModelForSequenceClassification.from_pretrained(8 model_id,9 trust_remote_code=True,# important for custom model code10)1112values =[13"Presence",14]1516id2label ={i: label for i, label inenumerate(values)}1718defpredict_presence(text, threshold=0.50):19 enc = tokenizer(text, return_tensors="pt", truncation=True)20with torch.no_grad():21 outputs = model(**enc)2223 logits = outputs.logits.squeeze(0)# (1,)24 probs = torch.sigmoid(logits)# tensor of shape (1,)25 probs = probs.cpu().numpy()2627 active = probs >= threshold
28 active_labels =[id2label[i]for i, is_on inenumerate(active)if is_on]2930return{31"probs":{id2label[i]:float(p)for i, p inenumerate(probs)},32"labels": active_labels,33}3435example ="We must do more to protect the environment and future generations."36print(predict_presence(example))
Note: this is a model that returns the label with score in [0,1]. You still need to choose a threshold to decide what counts as “present”.
2. Usage with a custom threshold
For research use, you will often want to:
Apply a sigmoid over logits
Use a label-wise or global threshold (e.g., 0.3 instead of 0.5)
The predict_presence function above already takes a threshold argument, so you can simply do:
predict_presence(example, threshold=0.30)
and tune the threshold on your own validation set depending on your precision/recall preferences.
Training data
The model was trained on the English, machine-translated portion of the ValueEval’24 / ValuesML dataset:
Domain: news articles and political manifestos
Unit of analysis: individual sentences
Label: Presence based on the 19 refined Schwartz values
Each value has attained and constrained annotations in the original data
Presence variable in the paper ((z_s)) is defined as “any of the 19 labels is positive”, but this model directly predicts the 19 values.
Important: the original dataset is distributed under a restricted Data Usage Agreement.
You must obtain the data separately from the ValueEval/ValuesML organisers (e.g. via Zenodo) and respect their license.
A small soft-voting ensemble of three DeBERTa-based models obtains the best overall performance (macro–F₁ ≈ 0.33).
For full details, please refer to the papers:
Human Values in a Single Sentence: Moral Presence, Hierarchies, and Transformer Ensembles on the Schwartz Continuum
Víctor Yeste, Paolo Rosso (2026), arXiv:2601.14172
Do Schwartz Higher-Order Values Help Sentence-Level Human Value Detection? When Hard Gating Hurts
Víctor Yeste, Paolo Rosso (2026), arXiv:2602.00913
Limitations and bias
The model is trained on news and political texts; it may not generalise to:
Social media
Everyday conversations
Other genres or languages
Values are annotated at the sentence level; many real-world value cues are only clear in broader context.
Rare values (e.g., Humility, Hedonism, Universalism: tolerance) have few positive examples and are harder to predict.
No systematic bias or fairness analysis has been conducted; the model should not be used for profiling individuals or making high-stakes decisions.
If you use this model, please:
Keep humans in the loop.
Treat outputs as noisy indicators, especially for rare labels.
License
The model weights and code in this repository are released under the Apache License 2.0.
See the LICENSE file (or the license field in this model card) for details.
Note: This does not grant you any rights over the underlying training data (ValueEval/ValuesML).
Please obtain and use that data under its own license and Data Usage Agreement.
Citation
If you use this model or the associated code in your research, please cite:
@misc{yeste2026humanvaluessinglesentence,
title={Human Values in a Single Sentence: Moral Presence, Hierarchies, and Transformer Ensembles on the Schwartz Continuum},
author={Víctor Yeste and Paolo Rosso},
year={2026},
eprint={2601.14172},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2601.14172},
}
@misc{yeste2026schwartzhigherordervalueshelp,
title={Do Schwartz Higher-Order Values Help Sentence-Level Human Value Detection? When Hard Gating Hurts},
author={Víctor Yeste and Paolo Rosso},
year={2026},
eprint={2602.00913},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2602.00913},
}
You may also want to cite the ValueEval / ValuesML dataset:
@misc{ValueEval24Zenodo,
author = {{The ValuesML Team}},
title = {Touch{\'e}24{-}ValueEval},
year = {2024},
month = {8},
version = {2024-08-09},
publisher = {Zenodo},
doi = {10.5281/zenodo.13283288},
url = {https://doi.org/10.5281/zenodo.13283288}
}