Language Drift
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model demonstrates that language shifts can arise from a very simple model of noisy statistical learning. In this model, a group of adults speak a language, while a group of children listen and learn from those adults. Children grow up and become adults; over time, language shifts occur in the overall language of the population.
HOW IT WORKS
Agents are divided into adults and children. Adults have a personal lifespan in Ticks, assigned at random between 1 and the value of the 'lifespan' slider.
At each tick, children listen to adults, learning their own language (represented as a vowel sound in the form of an F1,F2 value-pair). Each adult increases their current age by one tick, dying if their new age exceeds their lifespan. For each adult that dies in this way, a child is chosen at random to 'graduate' to adulthood. Ungraduated children are killed before the next tick begins.
Children learn their language according to the chosen learning method (switches 'method-mean?', etc.), which correspond to simple statistical learning options; they learn from a set of adults constrained by the chosen locality setting (switches 'learn-subset?', etc.).
HOW TO USE IT
The sliders for 'start-f1', 'start-f2', 'population-size', 'noise-level', and 'lifespan' set the initial values of these factors for the 'setup' button.
The switches for 'learn-subset?', 'learn-local?', 'learn-nearest?' constrain the adults each child can listen to. Only one should be 'on' per model run. The slider for 'learn-subset' controls the size of the set used for subset and nearest methods; 'learn-radius' controls the region used for the local method.
The switches for 'method-mean?', 'method-median?', 'method-one?' choose the statistical learning method of the children; only one should be 'on' per model run.
The view shows the location of the adults and children, which is not itself informative; instead, there is an array of statistical plots provided to monitor the state of the language and how it is changing over time.
THINGS TO NOTICE
Notice the trajectory of the mean F1 and F2, as well as the changing position of the values cluster on the vowel space plot.
THINGS TO TRY
Try varying the noise level within the low regime (0.01, 0.1) and at more extreme values (> 0.3); notice the effect on the mean trajectories and the vowel space plot.
Comments and Questions
;; swtiches: learn-subset?,learn-local?,learn-nearest?,method-mean?,method-median?,method-one? ;; sliders: learn-subset,learn-radius breed [adults adult] breed [children child] adults-own [f1 f2 my-lifespan age] children-own [f1 f2 my-group] to setup clear-all create-adults population-size / 2 [ ; initialize adult formants near start-f1,-f2 (use random-normal) ; use realistic f1 (700), f2 (2000), deviation set f1 random-normal start-f1 150 set f2 random-normal start-f2 500 set color red set ycor random-ycor set xcor random-xcor set my-lifespan random lifespan ] create-children population-size [ ; children start with no language set color blue set ycor random-ycor set xcor random-xcor ] reset-ticks end to go ;; Run one generation (tick) ask children [ set my-group adults ;; default to all adults ;; none of these are intended to work together, though they theoretically could if learn-local? [set my-group adults in-radius learn-radius] ;; all adults within radius ;; if learn-radius is set too small, too many children die isolated to graduate to fill dying adult slots. problem :/ if learn-subset? [set my-group n-of learn-subset my-group] ;; random N of adults if learn-nearest? [set my-group min-n-of learn-subset adults [distance myself]] ;; nearest N adults ifelse any? my-group ;; don't attempt learn if my-group is empty, instead die [listen] [die] ] ask adults [ set age age + 1 ;; increment age if age > my-lifespan [die] ;; die if new age exceeds my-lifespan ] ask n-of (population-size - count adults) children [ ; only enough children graduate to replace deaths set breed adults set color red ; children get lifespan upon graduation set my-lifespan random lifespan + 1 ] ask children [die] ; remaining children are cleaned out before 50 new created create-children population-size [ set color blue set ycor random-ycor set xcor random-xcor ] plot-vowel-space tick end to listen ; agent listens to all speaking agents (adults), computes idiolect ; learn-mean is one possible strategy: learn-mode ; noisy listening/learning is also possible ;; none of these are intended to interact, though it may be possible; this is still better than multiple setup buttons, because of the combinations ;; if none are picked, it's just pure noise effect if method-one? [learn-one] if method-mean? [learn-mean] if method-median? [learn-median] ; add noise as % of total (not current?) ;; this means that f2 has more absolute noise, because it's a larger value; problem? set f1 f1 + random-normal 0 noise-level * start-f1 set f2 f2 + random-normal 0 noise-level * start-f2 if f1 < 200 [set f1 200] if f2 < 500 [set f2 500] if f1 > 1200 [set f1 1200] if f2 > 3500 [set f2 3500] end to learn-mean ;;adopts mean of adults set f1 mean [f1] of my-group set f2 mean [f2] of my-group end to learn-one ;;randomly copies one adult set f1 one-of [f1] of my-group set f2 one-of [f2] of my-group end to learn-median ;;learns median of adults set f1 median [f1] of my-group set f2 median [f2] of my-group end to plot-vowel-space ask adults [ plotxy f2 f1] end
There are 5 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
EECS 472 Poster Slam.pptx | powerpoint | Poster Slam slides | about 12 years ago, by Jeremy Needle | Download |
JeremyNeedle_5-13.txt | html | Progress update 5-13 | over 12 years ago, by Jeremy Needle | Download |
JeremyNeedle_5-20.txt | html | Progress update 5-20 | over 12 years ago, by Jeremy Needle | Download |
JeremyNeedle_5-27.txt | html | Progress update 5-27 | over 12 years ago, by Jeremy Needle | Download |
JeremyNeedle_6-3.txt | html | Progress update 6-3 | over 12 years ago, by Jeremy Needle | Download |
Language Drift.png | preview | Preview for 'Language Drift' | over 12 years ago, by Jeremy Needle | Download |
Needle_Jeremy_FinalPaper.pdf | Final writeup | about 12 years ago, by Jeremy Needle | Download | |
Needle_Jeremy_poster.pdf | Poster | about 12 years ago, by Jeremy Needle | Download |