Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/kdelwat/onset
- Owner: kdelwat
- License: mit
- Created: 2016-07-20T07:19:55.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-03-01T04:39:27.000Z (almost 2 years ago)
- Last Synced: 2024-04-14T12:32:24.307Z (10 months ago)
- Topics: flask, linguistics, phonetics, phonology, python, vue
- Language: Python
- Homepage: https://onset.cadel.me
- Size: 864 KB
- Stars: 34
- Watchers: 5
- Forks: 7
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: HISTORY.md
- License: LICENSE
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.
+ WikipediaA 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!