Datatypes for rule functions | |
| enum | Twol_Type { twol_left, twol_right, twol_both } |
| Different types of two-level rules. More... | |
| enum | Repl_Type { repl_left, repl_right, repl_up, repl_down } |
| Different types of replace rules. More... | |
| typedef contexts_t * | ContextsHandle |
| A list of transducer pairs. | |
Rule functions | |
| ContextsHandle | make_context (TransducerHandle t1, TransducerHandle t2) |
| ContextsHandle with a context pair of left context t1 and right context t2. | |
| ContextsHandle | append_context (ContextsHandle c1, ContextsHandle c2) |
| Add contexts c2 to contexts c1 and return the updated c1. | |
| TransducerHandle | make_rule (TransducerHandle t1, KeyPairSet *mappings, Twol_Type type, TransducerHandle t2, KeyPairSet *Pi) |
| A transducer that performs mappings defined in KeyPairSet mappings in context defined by transducers t1 and t2 (t1 precedes and t2 follows). Twol_Type type defines the type of mapping (obligatory/optional/not allowed) in context and elsewhere. Pi defines the alphabet known to the rule. | |
| TransducerHandle | make_replace (TransducerHandle t, Repl_Type type, bool optional, KeyPairSet *Pi) |
| A replace transducer that performs the mapping t everywhere. Repl_Type type defines whether left and right contexts are matched at the output or input level. optional defines if the mapping is optional. | |
| TransducerHandle | make_replace_in_context (TransducerHandle t, Repl_Type type, ContextsHandle c, bool optional, KeyPairSet *Pi) |
| A replace transducer that performs mapping t in context c. Repl_Type type defines whether left and right contexts are matched at the output or input level. optional defines if the mapping is optional. | |
| TransducerHandle | make_restriction (TransducerHandle t, Twol_Type type, ContextsHandle c, int direction, KeyPairSet *Pi) |
| A restriction transducer that performs the mapping t in all contexts of c. Twol_Type type defines the type of mapping (obligatory/optional/not allowed) in context and elsewhere. direction defines to which direction mapping can be done. | |
| void | delete_contexts_handle (ContextsHandle c) |
| Delete ContextsHandle c. | |
| typedef ContextsHandle ContextsHandle |
A list of transducer pairs.
A transducer pair represents the left and right context in a rule.
Definition at line 46 of file rule-layer.h.
| enum Repl_Type |
Different types of replace rules.
Use them with functions make_replace and make_replace_in_context. Their meaning is explained in both functions.
| repl_left | Repl_type 'repl_left' |
| repl_right | Repl_type 'repl_right' |
| repl_up | Repl_type 'repl_up' |
| repl_down | Repl_type 'repl_down' |
Definition at line 33 of file rule-layer.h.
| enum Twol_Type |
Different types of two-level rules.
Use these with functions make_rule and make_restriction. Their meaning is explained in both functions.
| twol_left | Twol_Type 'twol_left' |
| twol_right | Twol_Type 'twol_right' |
| twol_both | Twol_Type 'twol_both' |
Definition at line 21 of file rule-layer.h.
| ContextsHandle append_context | ( | ContextsHandle | c1, | |
| ContextsHandle | c2 | |||
| ) |
Add contexts c2 to contexts c1 and return the updated c1.
| void delete_contexts_handle | ( | ContextsHandle | c | ) |
Delete ContextsHandle c.
ContextsHandle c and all transducer pairs listed in c are deleted.
| ContextsHandle make_context | ( | TransducerHandle | t1, | |
| TransducerHandle | t2 | |||
| ) |
ContextsHandle with a context pair of left context t1 and right context t2.
| t1 | Left context. If NULL, interpreted as an epsilon transducer. | |
| t2 | Right context. If NULL, interpreted as an epsilon transducer. |
| TransducerHandle make_replace | ( | TransducerHandle | t, | |
| Repl_Type | type, | |||
| bool | optional, | |||
| KeyPairSet * | Pi | |||
| ) |
A replace transducer that performs the mapping t everywhere. Repl_Type type defines whether left and right contexts are matched at the output or input level. optional defines if the mapping is optional.
The result is equivalent to expression [~[.* PROJ(t) .*] PROJ(t)]* ~[.* PROJ(t) .*], where PROJ(t) is
| t | A transducer defining the mapping. | |
| type | The type of replacement rule, 'repl_up' or 'repl_down'. | |
| optional | Whether the replacement becomes optional, i.e. whether the resulting transducer is disjuncted with the pi machine [.*]. | |
| Pi | The alphabet (set) of key pairs known to the rule |
| TransducerHandle make_replace_in_context | ( | TransducerHandle | t, | |
| Repl_Type | type, | |||
| ContextsHandle | c, | |||
| bool | optional, | |||
| KeyPairSet * | Pi | |||
| ) |
A replace transducer that performs mapping t in context c. Repl_Type type defines whether left and right contexts are matched at the output or input level. optional defines if the mapping is optional.
The value of Repl_Type type defines where matching takes place in the following way:
For example (from Karttunen 1995) the rule defined by transducer {ab}:x, left context [a b] and right context [a] ('ab' is mapped to 'x' between 'ab' and 'a') yields the following relations when applied to the input string 'abababa' with different Repl_Types:
Repl_Type: repl_up repl_down repl_left repl_right
input level: a b a b a b a a b a b a b a or a b a b a b a a b a b a b a a b a b a b a
output level: a b x x a a b x a b a a b a b x a a b a b x a a b x a b a
Alphabet definition can affect the way the resulting transducer works. For instance, the rule defined by transducer_ {aa}:{bb}, left context [c] and right context [c] ('aa' is mapped to 'bb' between 'c' and 'c') yields the following relations when applied to the input string 'acaac' with different alphabet definitions:
Alphabet input output(s)
a, b and c 'acaac' 'acbbc'
a, b, c and a:b 'acaac' 'acabc', 'acbac', 'acbbc', 'bcabc', 'bcbac', 'bcbbc'
| t | A transducer defining the mapping. | |
| type | The type of replacement rule. | |
| c | The context where mapping occurs. | |
| optional | Whether the replacement becomes optional, i.e. whether the resulting transducer is disjuncted with the pi machine [.*]. | |
| Pi | The alphabet (set) of key pairs known to the rule |
| TransducerHandle make_restriction | ( | TransducerHandle | t, | |
| Twol_Type | type, | |||
| ContextsHandle | c, | |||
| int | direction, | |||
| KeyPairSet * | Pi | |||
| ) |
A restriction transducer that performs the mapping t in all contexts of c. Twol_Type type defines the type of mapping (obligatory/optional/not allowed) in context and elsewhere. direction defines to which direction mapping can be done.
| t | Transducer defining the mapping. | |
| type | The type of mapping rule.
| |
| c | Contexts where mapping can occur. | |
| direction | To which direction mapping can be done.
| |
| Pi | The alphabet (set) of key pairs known to the rule |
| TransducerHandle make_rule | ( | TransducerHandle | t1, | |
| KeyPairSet * | mappings, | |||
| Twol_Type | type, | |||
| TransducerHandle | t2, | |||
| KeyPairSet * | Pi | |||
| ) |
A transducer that performs mappings defined in KeyPairSet mappings in context defined by transducers t1 and t2 (t1 precedes and t2 follows). Twol_Type type defines the type of mapping (obligatory/optional/not allowed) in context and elsewhere. Pi defines the alphabet known to the rule.
| t1 | Left context transducer. | |
| mappings | A set of possible key pair mappings that can occur. | |
| type | The type of mapping rule.
| |
| t2 | Right context transducer. | |
| Pi | The alphabet (set) of key pairs known to the rule |
[c], mappings = [a:b] and t2 = [c], the resulting transducer yields the following outputs with input string 'acacaca' depending on the value of type:
type input output(s)
'twol_left' 'acacaca' 'acbcbca', 'bcbcbca', 'acbcbcb', 'bcbcbcb' (note that the alphabet must contain the pair a:b here)
'twol_right' 'acacaca' 'acacaca', 'acbcaca', 'acacbca', 'acbcbca'
'twol_both' 'acacaca' 'acbcbca'
More on two-levels rules in Koskenniemi: Two-Level Morphology: A General Computational Model fo Word-Form Recognition and Production (1983).
1.5.8