Panel 4 scores a word on eight axes. Each axis is defined once per model,
from two lists of anchor words, and the axis is only ever as good as
those lists, so here they are in full.
Why these axes and not others
An axis earns its place here by clearing three bars. It has to be
interpretable without training, so a reader can predict which way
their own word should fall before they look. It has to be
anchorable at both ends by ordinary words that are unambiguously
at one pole, which rules out most interesting-sounding ideas: there is
no clean five-word list for "irony" or "beauty". And it has to be
cheap, one dot product against a direction computed once per
model, because Panel 4 renders for all 20,660 words in every model.
The four this started with cover the dimensions lexical research keeps rediscovering
as the ones that separate words at all: valence (positive /
negative), register (formal / casual), abstractness
(concrete / abstract), and frequency (common / rare). Between them
they explain most of what people mean when they say two words "feel
different".
The four added since exist because those four leave real gaps.
Arousal (mild / intense) is the second axis of the standard
valence–arousal–dominance model of affect, and without it
rage and sadness look alike: both negative,
wildly different in intensity. Dominance (powerless / powerful)
is the third, and separates sovereign from
fragile independently of whether either is a good thing.
Technicality (everyday / technical) is not the same as formality:
enzyme is technical without being formal, and
furthermore is formal without being technical.
Magnitude (small / big) is the most consistently reported
dimension of physical semantics after valence.
Two axes we tried and dropped, for the record. Modern / archaic
failed the anchor bar: the vocabulary is frequency-ranked, so it contains
thou and alas but not thine,
hath or whence, and a two-word pole is not an
axis. Body / mind failed the independence bar: it scored almost
identically to concrete / abstract, so it added a slider without adding
information.
| Axis | Positive pole | Negative pole |
| common / rare |
the, and, make, time, people |
esoteric, quixotic, abstruse, recondite, perfidious |
| abstract / concrete |
justice, idea, freedom, concept, theory |
rock, table, dog, chair, hand |
| formal / casual |
therefore, moreover, utilize, furthermore, consequently |
gonna, stuff, yeah, kinda, okay |
| technical / everyday |
algorithm, molecular, enzyme, polynomial, voltage |
thing, food, house, water, walk |
| positive / negative |
wonderful, joy, love, excellent, delight |
awful, hate, misery, terrible, grief |
| intense / mild |
furious, rage, terror, frenzy, agony |
calm, gentle, mild, quiet, soothing |
| powerful / powerless |
powerful, mighty, dominant, commanding, sovereign |
helpless, fragile, weak, subordinate, inferior |
| big / small |
enormous, vast, massive, gigantic, immense |
tiny, petite, slight, miniature, slender |
Listed in the order Panel 4 shows them, grouped lexical, register,
affect, physical. The four older axes are anchored partly in deliberately rare words
(quixotic, gonna) that extraction has to add on
top of the vocabulary. The last four are anchored only in words the
vocabulary already contains, which is why they could be added without
re-extracting 14.2 GB of embedding shards.
The arithmetic
Take the mean vector of the positive anchors, subtract the mean vector of
the negative anchors, normalise the result: that is the axis, a direction
in the model's own embedding space. A word's raw score is the dot product
of its unit vector with that direction, which lands roughly in
−1..+1 and in practice within about ±0.05. The score you see
is that value's percentile rank across the whole vocabulary, which is why
the wording is "more abstract than 90% of the words here" and never "90%
abstract".
What this is not
These are not labels the model assigns, and not dimensions the model
has. They are directions we defined by picking ten words per
axis, and a different ten would move every score. Nothing about the
model says formality lives on one axis; the claim is only that words the
anchors treat as formal end up on the same side. The anchors themselves
sit at the extremes of their own axis by construction, so seeing
enzyme top the technical axis is not evidence of anything;
the interesting cases are the words that were never anchors.
The failure mode worth knowing
Anchors are deliberately extreme, which is exactly why a
frequency-ranked vocabulary does not contain them: quixotic
and gonna are not common words. Extraction therefore adds
the anchor words explicitly, on top of the vocabulary. When it does not,
an axis whose anchors are missing is dropped without complaint, which is
how two of the four axes silently disappeared on the first run against
real embeddings. Code:
pipeline/personality_axes.py.