Skip to content

Commit f6c1871

Browse files
authored
Update README.md
1 parent c1b2b22 commit f6c1871

1 file changed

Lines changed: 111 additions & 0 deletions

File tree

README.md

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,113 @@
11
# voss
22
Complex system model of language change
3+
4+
GETTING STARTED
5+
Installation and libraries
6+
You'll need Python 3.4+ to run VoSS
7+
You'll also need the TKinter library.
8+
9+
Running the program
10+
Linux
11+
From the ".../Language-Science-Models-Lab/voss" directory, enter
12+
>>python3 Game_fns.py
13+
14+
Using IDLE in Windows/Linux
15+
Open "Game_fns.py".
16+
Use the f5 key or "Run > Run Module" from the menu.
17+
18+
The command menu will show in the terminal or IDLE shell.
19+
Use "run" to run a simulation using the default parameters.
20+
Use "demo" to get a walk-through and setthe various parmeters.
21+
22+
Setting up simulations
23+
(There is a much longer, more detailed file available on request
24+
if you need more information on how the program works.)
25+
26+
PARAMETERS / COMMANDS
27+
run
28+
Starts a new game with current settings. No arguments needed.
29+
30+
New games begin with one group of agents with a starting age equivalent to half of an agent lifespan, and with repertoires of vowels which are close imitations to the base convention prototypes. These are generated using the guess_by_margin method, except that the margin is set to .1 x perception ERB.
31+
32+
From a higher-level perspective, this is meant to be like a group of people who all speak the same dialect suddenly getting dumped into an isolated environment (say, an island) and immediately reproducing and growing a population there.
33+
34+
At every ‘time step,’ all agents advance in age by one. If the population size is less than the max population size limit, a new group of agents will be ‘born’ i.e. appended to the population with an age of zero. The game will pause after a number of cycles and show the results in a graphic output window, after which the menu will appear and accept commands again.
35+
36+
37+
*extend*
38+
continue running the current game for another set of cycles. Does not reset any of the parameters or replace the agents.
39+
40+
*save*
41+
Saves 3 files: 1 .txt and 2 .eps
42+
The ‘save’ command writes a condensed copy of the output to a txt file. The file will include the text step reports (assuming ‘show’ is turned on), the final text report showing the displacement values by word, and the lexicon report (if ‘report’ has been called prior to saving) and the ‘details’ report showing the agents’ repertoires (if that report has been called up already).
43+
44+
*cycles*
45+
Set the number of agent groups tracked over lifespan.
46+
Input: int >= 1
47+
Default: 1; set in Game_fns.init()
48+
This is a pretty safe parameter; the only danger is that if you set the cycles really high then it will take a long time to run and you may have to abort (ctrl+c).
49+
50+
*size*
51+
set the population peak limit.
52+
53+
At every step, the population will either grow (if the number of live agents is less than the size limit) or stay the same if the population has reached the size limit. If the oldest group has reached the lifespan limit, it will be removed at the end of the step and a new group will be added at the beginning of the next.
54+
55+
*details*
56+
Shows the vocabularies of all live agents.
57+
58+
*lifespan*
59+
set the age at which agents are removed from population.
60+
61+
The age of maturity is (.10 * lifespan) + 1 and represents the point at which agents transition from being children to adults and from interactive listeners to speakers only. This is also where agents ‘purge’ their extraneous vowels so that adults have only vowels with a weight strictly greater than 0.
62+
63+
*show*
64+
shows live agents’ repertoires as layered points in the vowel space, followed by the mean centers for each prototype at the end of each step.
65+
66+
what happens if you change it: If ‘show’ is off, the runtime is decreased, but you aren’t able to see live changes. You’ll still see the final results, and you can get the final sampling with the “draw last” command when it finishes. If ‘show’ is on, the game takes longer.
67+
68+
Combining this command with the “color” option will display the vowels with color-coding.
69+
70+
71+
*Symbols*
72+
Toggles the mean center markers to show the IPA symbols or spots. The symbols don’t save in the eps files, so if you save it will automatically use the spots instead.
73+
74+
*protos*
75+
specify the prototypes in the base convention.
76+
input: string of prototype names separated by commas and spaces e.g.
77+
>>I, I:, retracted_a, u
78+
79+
*margin*
80+
The perception defines the radius of the circle centered on an incoming signal and within which an agent will recognize that the incoming vowel matches a phone in its repertoire. The agent ‘de-assimilates’ the vowel before matching it. If no match is found within perception margin, the agent will imitate the deassimilated vowel and store the imitation as a phone.
81+
82+
*prox*
83+
set a supplement (in ERB) for the proximity margin.
84+
input: float (can be negative). The final margin will be vowel.weight + prox for each percept. If the result is a negative number, it will default to 0 ERB.
85+
86+
*phone* (imitation / phone_radius)
87+
The ‘phone’ command sets the phone_radius variable, which is the radius of the circle within which an agent creates an imitation of a signal it couldn’t match. The circle’s center is the ‘corrected’ (de-assimilated) version of the signal.
88+
89+
*noise* (vowel production / phone_radius_noise)
90+
The ‘noise’ command sets the phone_radius_noise variable, which is the radius around an agent’s percept (after being coarticulated/assimilated), within which the agent utters a vowel when saying a word.
91+
92+
*report*
93+
prints a table with current stats from the game, including
94+
1. the active prototypes and their displacement from the starting positions,
95+
2. the words in the lexicon and the number of agents using each prototype to pronounce that word
96+
3. the number of agents who have multiple variants of convention prototypes in their repertoires (i.e. “near splits”)
97+
98+
*demo*
99+
interactively set up a new game.
100+
The program will give a description of each parameter followed by a prompt for input, then run the game and pause for another command after the cycles have completed.
101+
102+
*language*
103+
use one of the preset lists of vowels defined in Game_fns.
104+
105+
The program will list the names of the language presets available. To use one, enter the name as it appears in the list. A window will pop up showing a preview of the base convention for the preset with circles indicating the initial effective proximity margin around each class.
106+
107+
Click in the window to close it. If you are satisfied with it and the rest of the parameters, enter “run” to start a game. Otherwise you can make any changes (including overriding the language preset to be used) before starting.
108+
109+
The presets are based on research from wikipedia, the U of C Phonetic Inventory and a handy website “A Survey of some Vowel Systems.” They have not (yet) been corroborated by any expert and quite possibly contain some inaccuracies.
110+
111+
*sampling*
112+
options: "phones" or "vowels"
113+
In the program, ‘sampling’ refers to the collection of the agents’ pronunciations of words in the lexicon, which are represented by colored dots in the chart. Sampling is shown at every step if ‘show’ is on, and at the end if ‘show’ is off. Sampling never includes babies’ vowels/phones--unless you’re in ‘micro’ mode, where it will show The Chosen One’s phones even when they are a baby. The sampling options are ‘phones’ and ‘vowels’. These have to be consistent (meaning, whichever one is used for sampling will also be used to get prototypes for the convention).

0 commit comments

Comments
 (0)