Big picture concepts - adamb924/mortal-engine GitHub Wiki

Concepts internal to Mortal Engine

Morphology

“Morphology” means the same thing that it does in lingustics. It's a system that maps between morphological structure and phonological or orthographic forms.

In Mortal Engine, every morphology consists of one or more morphological models.

Model

Many (all?) languages have different morphological systems for nouns, verbs, numbers, etc. In Mortal Engine, you represent this by having different models for different categories. You'll have one model for nouns, another model for verbs, and so forth.

Writing System

A writing system is just a way to represent the language. It could be orthographic, or IPA, or anything you like.

One of the neat things you can do with Mortal Engine is transduce between writing systems easily. You could use it to convert a text from one orthography to another, or from orthography to phonetic transcription, or from phonetic transcription to orthography.

See <writing-systems>.

Parsing

A parsing in Mortal Engine is just a string of morphemes. These are always written like this: [Stem][Plural][Accusative]

Things that Mortal Engine can do to your input

Each of these has a related test. Using the command line utility, the only way to get Mortal Engine to do these things is by putting them in test files. If you link to the library, then of course the sky is the limit.

Parsing

Parsing an input means assigning a morphological analysis to the input, or failing. (For spellchecking, for instance, you may not care what the parsing is, just that a possible parsing exists.) For instance you could provide “sebɛ” and get back “[Stem][Ezafa]”.

Generation

With generation, you begin with a morphological analysis (and a stem), and you get back the form in a particular writing system. For instance you could put in “[Stem][Ezafa]” (and specify the stem), and get back “sebɛ” or “سیب”.

Transduction

Transduction involves changing from one writing system to another; it's actually just a parsing followed by a generation. For instance, you could provide the phonetic input “sebɛ” and get the orthographic output “سیب” (or vice versa).

Stem suggestion

You can give Mortal Engine an input, and request it to list what possible stems might be. For instance, a model of Turkish might suggest the following possible stems for “evlerinizdenmiş”: “evlerinizdenmiş”, “evlerinizden”, “evleriniz”, “evler”, “ev”.