syntax-prosody-ot / main

A webapp for the syntax-prosody analyst working in Optimality Theory, with automated Gen, Con and Eval. Download build files from syntax-prosody-ot/build
https://spot.sites.ucsc.edu/
GNU General Public License v2.0
12 stars 2 forks source link

SPOT

SPOT (Syntax-Prosody in Optimality Theory) is a JavaScript-based application for linguists who are studying the syntax-prosody interface in the theoretical framework of Optimality Theory (Prince and Smolensky 1993). The goal of SPOT is to do for work on the syntax-prosody interface what OTWorkplace already does for metrical phonology -- to enable rigorous theoretical work, particularly typological investigations, theory comparison (e.g., Match vs Align), and refinements to the precise formulation of constraints.

See https://spot.sites.ucsc.edu/ for news and updates.

Please contact Jenny Bellik or Nick Kalivoda (UC Santa Cruz) if you would like to see a new constraint or feature added to SPOT, or for assistance in developing an analysis in SPOT.

Features

All the code for SPOT is available on Github: https://github.com/syntax-prosody-ot/main

How to install locally

How to cite

Bellik, Jennifer, Ozan Bellik, Nick Kalivoda (2015-2021). Syntax-Prosody for OT. JavaScript application. https://spot.sites.ucsc.edu/

Below is some information for anyone interested in writing their own constraints:

Categories and the prosodic hierarchy

Prosodic and syntactic categories that our constraints recognize are defined in the array named categoryPairings (in the file prosodicHierarchy.js). For a node to be recognized by Match and other constraints that establish correspondence, the node's value for "cat" must be one of the categories listed in categoryPairings.

Constraints

All constraint files are in the folder constraints. Each constraint is a function. Uniform argument structure must be maintained across all constraints so that makeTableau will work. The necessary argument structure is: (s, p, c), where

Though the argument structure is fixed, the names of the argments can vary from constraint to constraint, and it's not a problem if not all arguments are actually used in the function.

Every constraint is going to be a recursive function, since it needs to traverse the whole tree (possibly two trees, for interface constraints).