Flokey82 / go_gens

Various small attempts at procedural generation, AI, simulation and whatnot.
Apache License 2.0
19 stars 6 forks source link

[genstory|genreligion|genlanguage] Word associations #15

Open Flokey82 opened 1 year ago

Flokey82 commented 1 year ago

The “Small World of Words” English word association norms for over 12,000 cue words https://smallworldofwords.org/en/project/research https://link.springer.com/article/10.3758/s13428-018-1115-7

This will be useful to extract domain information for deitys, derive holy symbols or numbers, etc.

Flokey82 commented 1 year ago

https://github.com/dariusk/ea-thesaurus seems to be very useful

The Edinburgh Associative Thesaurus dataset is public sector data available under an Open Government License. As such you are free to

copy, publish, distribute and transmit the Information; adapt the Information; exploit the Information commercially and non-commercially for example, by combining it with other Information, or by including it in your own product or application.

voidshard commented 1 year ago

I wonder how hard it is to determine word association counts like this?

Given a text corpus we could

.. It might be useful to have say; dark cults based on Lovecraft, orders of knights based on Chaucer etc.

I might give it a try this evening for giggles

Flokey82 commented 1 year ago

Please do :D I'd love to hear your thoughts on this... I'd like to kinda be able to distill themes out of associated terms given some text. The lib that I stumbled over in the other issue (prose) seems to be quite useful... it even has a tutorial on how to train your own model (or I guess refine the existing one?) for tokenization. :)

voidshard commented 1 year ago

🤔 I'm thinking that religion / culture / language have a similar property of dividing, merging and mutating over time. I'd say for a worldgen we might consider.

type Mutable<T> interface { Mutate(numberMutations int) Merge(other Mutable<T>, ratio float64) Mutable<T> Divide( ? something ) (Mutable<T> A, B) }

We can start a .. root culture (?). A culture is sort of an umbrella term for language + geography + custom + religion + (probably a thousand other things but ..eh). So // all of these, including Culture, implement Mutable type Culture struct { Language Language Religion Religion Tradition Tradition }

The language is maybe easiest conceptually; we have root words, place names and what not. Mutate might apply an iteration of adding or removing chars, running together words, simplifying or whatever. Ie "Havar-Kaneth" ("Three-Waterfalls" - a city name) might reduce to "Havaneth" during a mutation. A 'merge' might take rules from the merging language and apply them both ways ("Havinef") to some proportion of words (ie. if language A absorbs 10% of language B we only modify / accept some words, not merge everything). Split with languages probably means we output two languages based on the original with some number of (different) mutations each.

For religion we have (I think?) a similar idea. We probably have a base world creation myth ("the gods Adir and Malin predated all time, they become lovers and created the world for their children") to which a mutation might imply we add something to the myth "but Adir was already promised to the great Vinath, who vowed to destroy the abomination" or alter some words & thus the meaning (replace "children" with "servants", or "created the world " with "created a prison for their children"). Hopefully we could establish

teaching: <100> // religion-1 strongly believes this teaching: <30> // religion-1 generally believes this teaching: <50> // religion-2 is a bit different, but this isn't so different that either is up in arms teaching: <90> // religion-3 believes that Vinath is in the right, s/he is entitled to vengeance. This is probably regarded as outright heresy by religion-1.

Tradition is sort of like a set of teachings or practices, but in this case distinct from those related to religion. Like .. the Huns love of horse riding .. or some island dwelling people's love of sailing.

Flokey82 commented 1 year ago

Excellent points :) Divergence is probably the easiest to achieve, since it essentially just boils down to a fork. Merging is a bit more tricky, but not impossible.

Also a good question: Do we want the religions to be purely ficticious or do we assume there has been a "true" creation mythos and an actual pantheon of real gods that all existing religions are kinda based on? So there'd be an actual truth that religions either follow, or reject... and based on their preferences they'll worship gods whose domains align with cultural virtues, etc

I have implemented culture "features/skills", which are based on the cultural origins and available resources... like seafaring, survival, woodcrafts, goldsmithing and all that :) It's not formalized yet, but I'm planning to do so.

voidshard commented 1 year ago

The skills are a good idea, we only have professions right now in /faction/ but we could extend that too.

Well, I think it'd be cool to have canonically true events, but probably after some time all the recollections of it are a bit distorted, some more and some less. Each religion then is probably a mixture of stories and myths, some mostly true, others mostly false .. We might then have divine interdictions that attempt to rectify the worst of the errors / correct people. Or disown people that go too far, spawning a new faith perhaps?

Flokey82 commented 1 year ago

My personal favorite would be a cult that mistakenly thinks that an evil, imprisoned god is actually benevolent or "misunderstood" and tries to free him/her/it :D

voidshard commented 1 year ago

Ooh religion might have ties to calendar too? :thinking:

https://www.popularmechanics.com/science/archaeology/a43645858/how-the-mayan-calendar-works/

Flokey82 commented 1 year ago

Holy cow... That's one overengineered calendar :D