Cross Model

From Apertium
Jump to navigation Jump to search
Main article: Crossdics

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</l>
        <r>$lemmaB</r>

    </e>
    <e r="RL">
      <p>
        <l>$lemmaB</l>
        <r>$lemmaC</r>

    </e>
  </pattern>
  <action-set>
    <action>
      <e>
        <p>
          <l>$lemmaA</l>
          <r>$lemmaC</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</l>
          <r>$lemmaB</r>

      </e>
      <e>
        <p>
          <l>$lemmaB</l>
          <r>$lemmaC</r>

      </e>
    </pattern>
    <action-set>
      <action>
        <e>
          <p>
            <l>$lemmaA</l>
            <r>$lemmaC</r>

        </e>
      </action>
    </action-set>
  </cross-action>
</cross-model>

In the example above:

  • $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 the action element. Besides that, we force the value of the first element to be the same. There is another symbol (?) that can be used if we don't want to use the value afterwards.
  • the symbol * is a sequence of 0 or more elements.
  • @tailA and @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 the action element).

How to use these symbols (?,*) and variables ($, @) is explained in the section Cross Model Elements

See also

External links