Moral Geometry of Scripture and Ideology

An exploratory analysis of 28 foundational texts across six moral dimensions (v7, April 2026)

By Marc Frame

Summary

This is a first-pass attempt at using sentence embeddings to map 28 religious, philosophical, and political texts onto the six moral dimensions in Moral Foundations Theory (Jonathan Haidt et al., 2009/2012). Three of the six dimensions produce clear, believable results: authority, loyalty, and sanctity. The other three (care, fairness, liberty) are noisier (see Limitations). Nothing here is ready for serious conclusions, but the results are interesting enough to keep going.

Note on the corpus. A few texts here (Mein Kampf, The Doctrine of Fascism, Kaczynski's Industrial Society) are included only as analytical stress tests. They are not endorsed.

How It Works

Sentence embedding models map each passage to a fixed-length vector in a high-dimensional space: semantically similar passages land close together. That geometry is what we project onto moral dimensions.

We use OpenAI's text-embedding-3-large (3072 dimensions, same model family as ChatGPT) to embed every chunk of every corpus. Then we do three things:

1. Build an axis vector per dimension. For each of Haidt's six foundations we hand-write roughly twenty matched sentence pairs (pro- vs. anti-pole). For care/harm, a positive anchor is "We have an obligation to help those who are suffering" and its negative is "The suffering of others is no concern of ours." We average the embeddings of all positive anchors and all negative anchors, subtract, and normalize. The result is an axis vector pointing from the negative pole toward the positive pole in embedding space.

2. Project each chunk onto each axis. Each book is split into chunks of about 500 tokens (~350 words). For each chunk we take the cosine similarity between its embedding and each axis vector (same sign convention as the original: positive means toward the "good" pole of that foundation). We average across chunks to get a corpus-level mean per dimension.

3. Calibrate against a null baseline. Raw cosine scores are small on their own. We embed a large Wikipedia sample as a null distribution for each dimension, then report how many standard deviations each corpus mean sits above or below that baseline (z vs. Wikipedia). In the score table at the end of this page, cells show the raw cosine means; asterisks flag |z| ≥ 2 (rough signal); values with |z| < 1 are effectively noise.

Visualizations

Each tab filters the charts to a specific group. All Corpora shows the full 28-text view; the group tabs re-normalize scores within that group.

Moral Profile Heatmap

How to read. Rows are texts; columns are moral dimensions. Green = positive pole (compassion, fairness, pro-liberty, hierarchy, loyalty, purity); red = negative pole. Stronger color and bolder numbers mean a stronger signal. A column where everything is the same color usually means the axis isn't distinguishing much.
Moral Profile Heatmap

Radar Charts

How to read. Each hexagon is one text. The six spokes are the six dimensions. A large, round shape means high across everything; a flat shape means near-average on everything. Lopsided shapes show which dimensions a tradition leans into. Compare shapes, not absolute sizes.
Radar Charts

Moral Space Map (PCA)

How to read. Each dot is a text, placed so that morally similar texts end up close together. The arrows show which dimensions pull in which direction. Texts near the authority arrow scored high on authority. The percentages show how much of the total variation each axis captures.
Corpus Map

Clustering

How to read. Texts that merge low in the tree are morally similar; texts that only merge near the top are very different. A text that joins the tree late on its own is an outlier that doesn't fit any group.
Clustering Dendrogram

Score Distributions per Dimension

How to read. Each panel is one dimension. The wide shapes show how spread out each book's chunk scores are: wide means lots of variation across the book, narrow means consistently scored. The white dot is the mean. If all books look the same on a given panel, that dimension isn't discriminating between them.
Score Distributions

Dimension Independence

How to read. Pairwise correlations between all six dimensions. Near-zero means two dimensions are measuring different things. Above 0.7 means they are mostly redundant and should be read together.
Dimension Correlations

Topic vs. Side Taken

How to read. Horizontal = how much this chunk is about the moral topic at all. Vertical = which side it takes. Top-right = talks about the topic and takes the positive side. Bottom-right = talks about it but takes the negative side. Left half = the topic barely comes up. Books with lots of left-half chunks have their score diluted by off-topic material.
Topic vs. Side Taken

Underlying Factors

How to read. Instead of assuming the six named dimensions are all independent, this chart lets the data speak. Each column is an underlying pattern the data revealed. High values mean that named dimension is mostly captured by that underlying pattern. If two named dimensions load onto the same factor, they are measuring the same thing.
Factor Loadings
Old Testament, New Testament, Quran. Scores normalized within this group.

Moral Profile Heatmap

Abrahamic Heatmap

Radar Charts

Abrahamic Radar

Moral Space Map

Abrahamic Scatter

Clustering

Abrahamic Dendrogram

Score Distributions

Abrahamic Violins
Abrahamic, Confucian, Hindu, Buddhist, Taoist texts. Scores normalized within this group.

Moral Profile Heatmap

Religions Heatmap

Radar Charts

Religions Radar

Moral Space Map

Religions Scatter

Clustering

Religions Dendrogram

Score Distributions

Religions Violins
Iliad, Meditations, The Republic. Scores normalized within this group.

Moral Profile Heatmap

Classical Western Heatmap

Radar Charts

Classical Western Radar

Moral Space Map

Classical Western Scatter

Clustering

Classical Western Dendrogram

Score Distributions

Classical Western Violins
All political and philosophical ideologies (16 texts, classical through modern). Scores normalized within this group.

Moral Profile Heatmap

Ideologies Heatmap

Radar Charts

Ideologies Radar

Moral Space Map

Ideologies Scatter

Clustering

Ideologies Dendrogram

Score Distributions

Ideologies Violins
Mill, Locke, Paine, Smith, Bentham, and other texts of the classical liberal tradition. Scores normalized within this group.

Moral Profile Heatmap

Liberal Canon Heatmap

Radar Charts

Liberal Canon Radar

Moral Space Map

Liberal Canon Scatter

Clustering

Liberal Canon Dendrogram

Score Distributions

Liberal Canon Violins
Fascist and authoritarian political texts. Analytical targets only; not endorsed.

Moral Profile Heatmap

Authoritarian Heatmap

Radar Charts

Authoritarian Radar

Moral Space Map

Authoritarian Scatter

Clustering

Authoritarian Dendrogram

Score Distributions

Authoritarian Violins
Stirner, Nietzsche, Kaczynski, Kropotkin, and other anti-establishment or niche writers. Scores normalized within this group.

Moral Profile Heatmap

Dissident Heatmap

Radar Charts

Dissident Radar

Moral Space Map

Dissident Scatter

Clustering

Dissident Dendrogram

Score Distributions

Dissident Violins

What Worked and What Didn't

Three dimensions produce results that are hard to argue with. On authority, the Analects of Confucius comes first, the Communist Manifesto comes last, and everything in between falls more or less where you'd expect. On loyalty, the Iliad leads. On sanctity, the Old Testament and Quran top the charts. The clustering puts Confucian, Hindu, and Abrahamic traditions together and keeps them well separated from revolutionary and anarchist texts. None of that was baked in; it fell out of the projections.

Care, fairness, and liberty are messier: rankings for Mill, Paine, Smith, and the fascist corpora behave in ways that make sense once you read the salience vs. stance issue in Limitations, not as a naive endorsement score.

Limitations

Future improvements

Chunking

Try different segmentation strategies: variable-length chunks, sentence- or paragraph-boundary splits, overlapping windows, and ablations on token count. The goal is to see which scheme best matches how moral content actually appears in long texts.

Axis definition

Refine each moral axis beyond the current ~20 hand-written anchor pairs: more pairs, broader phrasing, systematic sweeps over pole balance, and comparisons of sentence-level vs. phrase-level vs. lexical anchors.

Intent correction (salience vs. stance)

Train or apply a model that labels whether a passage argues for or against the positive pole of a dimension. When intent opposes the naive cosine sign (e.g. anti-tyranny rhetoric that still looks tyranny-heavy in embedding space), flip the contribution: use −s for that chunk's scalar projection onto the axis (or equivalently −z after calibration) so stance and vocabulary line up. Needs a reliable intent signal; a cheap baseline is negation / evaluative cue heuristics, a stronger one is a supervised stance classifier.

Embedding models

Re-run the full pipeline with other embedding families (e.g. open sentence-transformers, different dims, multilingual models) and compare stability of rankings and cluster structure. Single-model results are not guaranteed to transfer.

Contrastive and stance-aware training

Beyond post-hoc sign flips: contrastive pairs for pro/con passages, or axis vectors trained from explicit evaluative sentences only, so the geometry encodes endorsement and not just topic co-occurrence.

Register

Stronger handling of genre: per-register baselines, or paraphrase-to-neutral-register before embedding, on top of the existing orthogonalization step.

Scale and validation

Expand beyond 28 texts and validate against human ratings on sampled passages so model scores track annotators, not just word-list sanity checks.

Scores (all corpora)

Cell values are mean cosine similarity to each axis vector. * = |z| ≥ 2 vs. the Wikipedia null on that dimension. Grayed cells are within the noise band (|z| < 1).

Corpus Care / Harm Fairness / Cheating Liberty / Oppression Authority / Subversion Loyalty / Betrayal Sanctity / Degradation
Analects of Confucius (Legge) −0.031+0.028−0.034+0.166 *−0.015+0.020
Bentham, Morals & Legislation −0.000+0.010−0.023+0.081 *+0.042−0.046
Bhagavad Gita (Arnold) −0.002−0.033+0.001+0.133 *−0.011+0.074 *
Communist Manifesto −0.016+0.041−0.109 *−0.124 *−0.025−0.074
Dhammapada (Muller) −0.008−0.017+0.010+0.126 *−0.052+0.022
Federalist Papers −0.058+0.058−0.005+0.020−0.017−0.017
Iliad (Homer, Butler) −0.028−0.051−0.022+0.108 *+0.060−0.010
Industrial Society (Kaczynski) −0.025−0.014−0.098 *−0.052−0.116−0.108 *
Conquest of Bread (Kropotkin) −0.032+0.042−0.069−0.067−0.018−0.063
Leviathan (Hobbes) −0.021+0.004+0.019+0.066−0.048+0.017
Second Treatise (Locke) −0.048+0.035+0.034+0.014−0.041−0.007
Meditations (Marcus Aurelius) −0.037+0.009+0.035+0.118 *−0.054+0.040
Capital Vol. I (Marx) −0.010−0.009−0.043+0.039−0.043−0.059
Mein Kampf (Hitler, Murphy) −0.050−0.001−0.125 *+0.006−0.020−0.051
On Liberty (Mill) −0.035+0.044+0.027+0.034−0.087−0.063
Utilitarianism (Mill) −0.024+0.056+0.001+0.065−0.063−0.034
Doctrine of Fascism (Mussolini & Gentile) −0.044+0.008−0.136 *−0.009−0.042−0.071
New Testament (KJV) +0.028−0.016+0.037+0.102 *+0.041+0.051 *
Beyond Good and Evil (Nietzsche) −0.041−0.021−0.065+0.027−0.091−0.073
Old Testament (KJV) −0.005−0.001+0.016+0.106 *+0.048+0.053 *
Common Sense (Paine) −0.066+0.044+0.027−0.037+0.000−0.025
Quran (Rodwell) +0.005−0.007−0.000+0.128 *+0.033+0.030
Theory of Moral Sentiments (Smith) −0.063+0.004+0.034+0.073−0.074−0.008
The Social Contract (Rousseau) −0.048+0.025−0.027+0.020−0.061−0.038
The Ego and Its Own (Stirner) −0.046+0.047−0.032−0.029−0.099−0.034
Tao Te Ching (Legge) −0.054−0.027−0.066+0.149 *−0.038+0.033
The Prince (Machiavelli) −0.052−0.073−0.079+0.045−0.030−0.005
The Republic (Plato) −0.006+0.019−0.045+0.069−0.046−0.009

* = |z| ≥ 2 vs. Wikipedia on that axis. Grayed = |z| < 1.

Text corpora: 28 public-domain English translations. Model: OpenAI text-embedding-3-large. Baseline: Wikipedia. MFT framework: Graham, Haidt & Nosek (2009); Haidt (2012), The Righteous Mind.