Demons, deities, and directional deltas

Tanay Agrawal

|

7/9/26

sanskrit

A while back, I set up the coin-flip test for my 21 documented semantic shifts, a prediction for each written down in advance, and one question. Does each word move toward its new meaning? Let's see.

19 out of 21

Here's every word from my validation table (simplified here; full version on the preprint), run through the anchor test on the primary model (word2vec, sandhi-split corpus). Positive Δ means the word moved in the documented direction.

WordMeaning shift (simplified)Δ
haritawny, golden → horse, monkey, divine epithet+0.677
arkaray, hymn of praise → the sun+0.639
brahmanprayer, sacred utterance → the absolute+0.387
yogayoking, joining → spiritual discipline+0.357
kṣatramight, dominion → the warrior class+0.344
uttamahighest, uppermost → best, most excellent+0.322
uttaraupper, higher → later, superior, northern+0.301
somasoma plant, pressed juice → the moon+0.277
asuralord, mighty one → demon+0.275
guṇastrand, cord, bowstring → quality, virtue+0.251
ātmanbreath → the Self+0.208
bhṛtyaa dependent → servant+0.159
aṃśusoma stalk → ray of the moon/sun+0.147
setubond, fetter → bridge, dam+0.072
śūdraa tribe → the labor class+0.057
varuṇasovereign of all → god of waters+0.054
tejassharpness, fire → splendor, spiritual power+0.036
arimiser → enemy / lord+0.030
vratadivine command → personal vow+0.014
pādafoot → quarter−0.100
gocow → earth, rays, speech−0.132

19 of the 21 shifts move in the attested direction. Yay! Back to the coin: the probability of getting 19 or more heads out of 21 fair flips is about 0.00011. So it's very unlikely the model is just guessing.

The fall of asura

My favorite result is asura. There's a nice history for this one.

In the early Ṛg-Veda, asura means "lord, mighty one." It's used for the biggest gods: Indra, Varuṇa, Agni 1. By the time of the Epics, asura means "demon," the classic enemy of the gods.

The plot twist is next door in Iran. The ancient Iranian cognate ahura went the opposite way and stayed divine (think Ahura Mazdā, the supreme god of Zoroastrianism) 2. Meanwhile, deva, from the same Indo-Iranian root as Avestan daēva, stayed "god" in Sanskrit while daēva became "demon" in Iranian 3. Two sister languages took the same pair of words and flipped them in opposite directions.

That gives me a built-in control. I ran deva through the exact same anchor set as asura (divine vs. demonic). If my method just pushes everything toward "demon," deva would move that way too.

It doesn't. In the Vedic period, deva and asura sit almost exactly the same distance from the divine and demonic anchors, each within 0.02 of even (0.65/0.67 and 0.64/0.65). That fits: at the start, both words just meant "powerful being." Then they split apart:

WordΔ toward "demon"
asura+0.275
deva−0.159

asura heads toward the demons and deva goes back toward the divine. That matches the philology. I guess my models aren't so bad after all :)

Watching the company change

The anchor test gives a single number directing the change, but I really wanted to understand what was actually happening under the hood. I inspected the nearest neighbors of each of the words, for my qualitative analysis and confirmation.

Below is a sample check, with some of asura's closest words in each period:

EraSelected nearest neighbors
Vedicmahat 'great' (#1), devānām 'of the gods' (#2), viṣṇoḥ 'of Viṣṇu' (#6), sāvitram 'of Savitṛ (sun deity)' (#8)
Upaniṣadicbhogāya 'for worldly enjoyment' (#2), abhimānam 'ego, pride' (#10), aviduṣām 'of the ignorant' (#11), sūkara 'hog, pig' (#12)
Epicdānava 'demon' (#1), uraga 'serpent' (#2), piśāca 'flesh-eating ghoul' (#4), daitya 'titan, enemy of the gods' (#10)
The numbers in parentheses are each word's rank among the 12 nearest neighbors.

The table shows the pejoration story clearly. asura starts out among the gods, passes through a middle period where it hangs out with ego, indulgence, and ignorance, and ends up surrounded by demons and ghouls. The model learned this history purely from which words asura appeared next to, which I think is fascinating.

Conclusion

This answers my first research question: yes, diachronic word embeddings can recover documented semantic shifts in Sanskrit, even with sandhi, heavy inflection, and a fraction of the data modern NLP is used to.

But 19 isn't 21. Next post, we look at the two words that got away, and what they say about the limits of this whole approach.

Thanks for reading! As always, I'd love to hear your thoughts, suggestions, and questions, so please do reach out.

References

  1. Semantic Change in Sanskrit, Jiyalal Kamboj, https://books.google.com/books/about/Semantic_Change_in_Sanskrit.html?id=JGwhAAAAMAAJ ↩

  2. The Word Asura in the Ṛgveda, P. L. Bhargava, Annals of the Bhandarkar Oriental Research Institute, 1983. ↩

  3. Autochthonous Aryans? The Evidence from Old Indian and Iranian Texts, Michael Witzel, Electronic Journal of Vedic Studies, 2001. ↩