Language Drift

Language Drift preview image

1 collaborator

Default-person Jeremy Needle (Author)

Tags

(This model has yet to be categorized with any tags)
Parent of 1 model: Child of Language Drift
Model group MAM-2013 | Visible to everyone | Changeable by everyone
Model was written in NetLogo 5.0.4 • Viewed 320 times • Downloaded 53 times • Run 0 times
Download the 'Language Drift' modelDownload this modelEmbed this model

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

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

;; 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.

Uploaded by When Description Download
Jeremy Needle about 12 years ago Final version Download this version
Jeremy Needle over 12 years ago Added locality, noise, lifespans Download this version
Jeremy Needle over 12 years ago Added realistic formant values, alternative simple learning procedures, subsetting. Download this version
Jeremy Needle over 12 years ago base function Download this version
Jeremy Needle over 12 years ago Initial upload Download this version

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 pdf Final writeup about 12 years ago, by Jeremy Needle Download
Needle_Jeremy_poster.pdf pdf Poster about 12 years ago, by Jeremy Needle Download

This model does not have any ancestors.

Children:

Graph of models related to 'Language Drift'