Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kdelwat/onset

A language evolution simulator, using realistic phonetic changes.
https://github.com/kdelwat/onset

flask linguistics phonetics phonology python vue

Last synced: 3 months ago
JSON representation

A language evolution simulator, using realistic phonetic changes.

Awesome Lists containing this project

README

        

# Onset

Onset is a language evolution simulator, which evolves a list of words
in [IPA form](https://en.wikipedia.org/wiki/International_Phonetic_Alphabet)
according to realistic phonological rules.

The frontend is built with [Vue](https://vuejs.org/) and the CSS
framework [Bulma](http://bulma.io/). It communicates with the backend using
simple REST endpoints.

The backend is built with Python and [Flask](http://flask.pocoo.org/).

## Directory Structure

+ `src` is the source code for the Vue frontend
+ `app` is the source code for the Python API, written in Flask.
+ `engine` is the source code for the evolution engine which is called by Flask.
+ `app/templates/` contains the Webpack-generated index file, served with Flask.
+ `app/static/` contains static assets generated by Webpack.
+ `config` contains Webpack configuration files, generated using [vue-cli](https://github.com/vuejs/vue-cli)

## Build Setup

``` bash
# install Python dependencies
pip install -r requirements.txt

# install Javascript dependencies
npm install

# build frontend
npm run build

# run using Flask's development server
python run.py

# or use PyPy for a speed boost
pypy3 run.py
```

To install development requirements, which will allow testing, validation, and
script usage:

```bash
pip install -r requirements-dev.txt
```

To validate the YAML data:

``` bash
pykwalify -d engine/data/rules.yaml -s engine/data/rules.schema.yaml
pykwalify -d engine/data/diacritics.yaml -s engine/data/diacritics.schema.yaml
```

To run the tests:

```bash
py.test
```

## Sources

A variety of sources were used for the information needed to build this app.
Please see the `LICENCE.md` file in the `engine/data` directory for specific
data sources.

The following papers were used when implementing the algorithms:

+ Harold R. Bauer (1988) *The ethologic model of phonetic development: I. Phonetic contrast estimators*, Clinical Linguistics & Phonetics, 2:4, 347-380, DOI: 10.3109/02699208808985265
+ Carol Stoel-Gammon (2010) *The Word Complexity Measure: Description and application to developmental phonology and disorders*, Clinical Linguistics & Phonetics, 24:4-5, 271-282, DOI: 10.3109/02699200903581059
+ Carterette, E. and Jones, M. (1974) *Informal Speech: Alphabetic and Phonetic Texts with Statistical Analyses and Tables* (Berkeley: University of California Press).

General information on the linguistics underpinning the app is from:

+ [Trask's Historical Linguistics](https://www.amazon.com/Trasks-Historical-Linguistics-Larry-Trask/dp/0340927658) by Larry Trask.
+ [Introductory Phonology](https://www.amazon.com/Introductory-Phonology-Bruce-Hayes/dp/1405184116) by Bruce Hayes.
+ Wikipedia

A lot of technical inspiration was taken from the source code
of [panphon](https://github.com/dmort27/panphon/). In particular, the deparsing
algorithm and YAML data files were inspired by panphon's approach. Please check
it out!