Cross Model
Jump to navigation
Jump to search
- Main article: Crossdics
Contents
Cross Model
Defining cross actions
Cross actions are needed to cross certain language pairs correctly.
These patterns and actions are described in XML, as follows:
<!DOCTYPE cross-model SYSTEM "crossmodel.dtd"> <cross-model> <cross-action id="pattern-1" a="author"> <pattern>...</pattern> <action-set>...</action-set> </cross-action> ... <cross-action id="pattern-n" a="author"> <pattern>...</pattern> <action-set>...</action-set> </cross-action> </cross-model>
Click on each element in the schema above or read more about cross model elements.
Example of pattern-action
Pattern
<cross-action id="pattern-1" a="ebenimeli"> <description>Pattern 1</description> <pattern> <e> <p> <l>$lemmaA<v n="X"/></l> <r>$lemmaB<v n="Y"/></r>
</e> <e r="RL"> <p> <l>$lemmaB</l> <r>$lemmaC</r>
</e> </pattern> <action-set> <action> <e> <p> <l>$lemmaA<v n="X"/></l> <r>$lemmaC<v n="Y"/></r>
</e> </action> </action-set> </cross-action>
Example of how this cross action could be applied.
Default cross action
By default, the apertium-crossdics
tool uses a simple cross model (schemas/cross-model.xml
) defining only a default pattern-action rule.
<cross-model> <cross-action id="default" a="ebenimeli"> <description>Default pattern</description> <pattern> <e> <p> <l>$lemmaA<v n="cat"/><t n="tailA"/></l> <r>$lemmaB<v n="cat"/><t/></r>
</e> <e> <p> <l>$lemmaB<v n="cat"/><t/></l> <r>$lemmaC<v n="cat"/><t n="tailC"/></r>
</e> </pattern> <action-set> <action> <e> <p> <l>$lemmaA<v n="cat"/><t n="tailA"/></l> <r>$lemmaC<v n="cat"/><t n="tailC"/></r>
</e> </action> </action-set> </cross-action> </cross-model>
In the example above:
<v n="cat"/>
is a variable that can store just one element (for example,
). In this example we use a variable because we need to use the value in theaction
element. Besides that, we force the value of the first
element to be the same. There is another symbol (<v/>
) that can be used if we don't want to use the value afterwards.- the tag
<t/>
is a sequence of 0 or more
elements. <t n="tailA"/>
and<t n="tailC"/>
are also sequences of 0 or more
elements, but, in this particular case, we store the value in a variable because we need to use it afterwards (in theaction
element).
These special tags are explained in the section Cross Model Elements
Limitations
Some pairs use bidix pardefs, e.g.
<e><p><l>lemmaA</l><r>lemmaB</r></p> <par n="vblex_adj"/></e>
It does not seem to be possible to put par elements into the crossmodel. What you can do is run
awk '/<par [^>]*n="vblex_adj"/{gsub(/<\/[lr]>/, "<s n=\"vblex_adj\"/>&")} {print}' <orig.bi.dix >new.bi.dix
to add a fake s-tag, then run crossdics, and then remove the fake s-tag afterwards. This seems to work.
See also
External links
- Full example of cross model.
- Cross model DTD