Skip to content
Hannah Scott edited this page Aug 10, 2017 · 12 revisions

Welcome to the wiki for Vowel System Sandbox -- a complex systems model of language change!

VoSS is intended to model vowel systems change and give researchers and linguists a venue for exploring the parameters of a simulation where agents imitate each other. This page will help you get started so that you can run your own simulation and watch language change in a microscopic model of a complex system. Currently VoSS models the changes in vowel inventory systems, but we are slowly expanding to add other components.

Agents Wiki Page
Parameters Wiki Page
Ways to contribute
Understanding the Output
Simulation Parameters

Use case (Normal Flow):

  1. User indicates that she wants to run a simulation using the default parameters.
  2. The system will show the parameters and display the dynamically-generated lexicon.
  3. The system will present the base convention with summary of parameters below a vowel chart indicating the live vowel convention.
  4. The user will confirm (via mouse-click in the chart) that they are ready to begin the simulation.
  5. The system will print the lexicon with average vowel pronunciations among adult agents and present the convention plot with full adult sampling and averages at step-wise intervals until the requisite number of cycles is complete.
  6. The user will confirm that they are ready to proceed.
  7. The system will present the final convention juxtaposed with the base convention averages without individual sampling.
  8. User confirms via mouse-click in the chart that she is finished viewing the final output.
  9. The system will close the chart and maintain the current simulation.

Interface

When you run Game_fns.py, a text menu will appear with a list of command keywords. You can run a simulation using the default parameters with "run", or go through a brief tutorial with "demo" if you want to set your own parameters. When you change the language or start a simulation, a window will pop up showing the base convention. Click on the chart to close it.

If "show" is ON, you'll see the results updated at every time step. Otherwise, a graphics window will pop up when the set number of cycles have completed. You can then run a new simulation by repeating the steps above, or enter "extend" to continue running the same simulation. You can also switch sampling modes (to "phones" or "vowels") or redraw the results using "draw" to get the shifting report (macroscopic view) or "draw last" to get the most recent mesoscopic view.

Action of the Program

Time Steps

Each “time step” goes through a process of reproduction, interaction between agents, increasing of the agents’ ages, updating of the convention, and removal of agents who have completed their lifespan. These actions are performed by four functions: reproduce, diffuse, increment and charon.

Diffuse
During each step, every agent who has completed less than 10% of their lifespan hears the vocabularies of an adjustable number of agents (the child’s “nuclear family” assigned at birth) plus an additional set of randomly selected words from the population. The number of family members can be changed using command ‘family’ from the menu. The number of randomly selected words from non-family can be changed with command ‘words’.

Interaction process and Phone->Vowel->Phone Transforms

  1. Child hears a word spoken by another agent in the community. When the word is spoken, the nucleus goes through a series of adjustments starting as the phone in the speaker’s rep to the vowel that the child hears. The coarticulation adjustments are applied to the phone, then a vowel is produced within phone_radius_noise (AKA vowel noise) of the adjusted phone.
  2. If the word is unknown, child adds it to their vocabulary.
  3. Child ‘de-assimilates’ the vowel using Phonology class methods.
  4. Child looks for a match to the ‘corrected’ vowel of the word in its repertoire. When more than one match exists within the perceptual margin, Child chooses the one with the highest weight. If all phones have zero weight, the closest acoustic match is returned.
  5. Child updates word history If a match is found, child adds the phone to the word’s history. If no match is found, child imitates the perceived vowel and adds it to its repertoire as well as the word’s history. The imitation is generated randomly as a phone within phone_radius of the de-assimilated vowel.
  6. Child iterates once through repertoire, identifying conflicts between weighted phones. Phone conflicts are resolved by shifting or merging (absorption or midpoint). Repertoire is updated once: only conflicts identified in initial pass are addressed.
  7. Child weighs phones to reflect possible changes in repertoire/vocabulary.

Increment
Increases each agent’s age by 1. If this results in an agent reaching the age of maturity (10% lifespan), that agent will ‘purge’ the extraneous vowels in their repertoire i.e. vowels which are not being used in any words and thus have a weight of 0. After that, they cease listening and only talk to the children and babies in the population.

increment(): for agent in population: agent.age += 1 if agent.age == age_of_maturity: remove vowels with weight == 0

Charon
Agents who have completed lifespan steps are ferried off to a land where the streets are paved with RAM, everyone gets their own dedicated cache and no data is ever deleted or corrupted.

If a non-ancestor group is removed, the cycle counter increments.

Charon is also the function that calls the sampling and proto reports (either phones or vowels, according to the sampling method).

Keywords: simulating language change complex system vowel diachronic synchronic modeling software

Blevins, Juliette (2004). _Evolutionary Phonology. _

Ohala, J. J. (1981). "The listener as a source of sound change."

Rosner, B. S. and J. B. Pickering (1994). Vowel Perception and Production.

Clone this wiki locally