Difference between revisions of "Cross-model ro"

From Apertium
Jump to navigation Jump to search
Line 100: Line 100:
   
 
[[Category:Dixtools]]
 
[[Category:Dixtools]]
  +
  +
{{main|Cross Model}}
  +
  +
== <code>cross-model</code> element ==
  +
  +
<code>cross-model</code> element is a set of cross actions (<code>cross-action</code> elements).
  +
  +
<!DOCTYPE cross-model SYSTEM "crossmodel.dtd">
  +
<'''cross-model'''>
  +
<'''cross-action''' id="pattern-1" a="author">
  +
...
  +
</'''cross-action'''>
  +
<'''cross-action''' id="pattern-2" a="author">
  +
...
  +
</'''cross-action'''>
  +
...
  +
<'''cross-action''' id="pattern-n" a="author">
  +
...
  +
</'''cross-action'''>
  +
</'''cross-model'''>
  +
  +
== <code>cross-action</code> element ==
  +
  +
Each cross actions consists of a pair (pattern,action-set).
  +
  +
<'''cross-action''' id="pattern-1" a="author">
  +
<description>Cross action 1</description>
  +
<'''pattern'''>
  +
...
  +
</'''pattern'''>
  +
<'''action-set'''>
  +
<action>
  +
...
  +
</action>
  +
...
  +
<action>
  +
...
  +
</action>
  +
</'''action-set'''>
  +
</'''cross-action'''>
  +
  +
== <code>pattern</code> element ==
  +
<!--
  +
The <code>pattern</code> element defines "how" the candidate elements susceptible to be crossed "look like".
  +
-->
  +
  +
'''<pattern>'''
  +
''&lt;!-- Element in bilingual dictionary AB-->''
  +
'''<e>'''
  +
&lt;p>
  +
<l>$lemmaA<s n="..."/>...<s n="..."/></l>
  +
<r>$lemmaB<s n="..."/>...<s n="..."/></r>
  +
</p>
  +
'''</e>'''
  +
''&lt;!-- Element in bilingual dictionary BC-->''
  +
'''<e''' r="RL"'''>'''
  +
&lt;p>
  +
<l>$lemmaB<s n="n"/>...<s n="..."/></l>
  +
<r>$lemmaC<s n="n"/>...<s n="..."/></r>
  +
</p>
  +
'''</e>'''
  +
'''</pattern>'''
  +
  +
== <code>action-set</code> element ==
  +
  +
The <code>action-set</code> element is a list of actions to be performed when a pair of candidate elements matches the pattern.
  +
  +
'''<action-set>'''
  +
'''<action>'''
  +
<e>
  +
&lt;p>
  +
<l>$lemmaA<s n="n"/><s n="..."/>...<s n="..."/></l>
  +
<r>$lemmaC<s n="n"/><s n="..."/>...<s n="..."/></r>
  +
</p>
  +
</e>
  +
'''</action>'''
  +
'''<action>'''
  +
...
  +
'''</action>'''
  +
'''</action-set>'''
  +
  +
== Values for <code>&lt;s></code> element ==
  +
  +
=== Literals ===
  +
  +
<e>
  +
&lt;p>
  +
<r>$lemmaA<s n="adj"/></l>
  +
<r>$lemmaB<s n="adj"/></r>
  +
</p>
  +
</e>
  +
  +
Use literals (as in <code><s n="adj"/></code>) to match exactly that element.
  +
  +
=== Variables ===
  +
  +
There are two types of variables:
  +
  +
* '''<code><v n="..."/></code> tag''': one <code>&lt;s></code> element. For example, <code><v n="cat"/></code> can refer to <code>&lt;s n="adj"/></code>. Value "adj" will be stored in variable "cat".
  +
* '''<code><t n="..."/></code> tag''': is used to indicate a sequence of <code>&lt;s></code> elements. In this case, <code><t n="tail"/></code>, can refer to the sequence <code><s n="n"/><s n="m"/><s n="sg"/></code>. Sequence "n.m.sg" will be stored in variable "tail".
  +
  +
Example:
  +
  +
<e>
  +
&lt;p>
  +
<l>$lemmaA<v n="'''cat'''"/><t n="'''tailA'''"/></l>
  +
<r>$lemmaB<v n="cat"/><t/></r>
  +
</p>
  +
</e>
  +
  +
If you are not using the value of <code><v...></code> or <code><t...></code>, do not define any <code>n</code> attribute, that is:
  +
* '''<code><v/></code>''': 1 <code><s n="..."/></code> element.
  +
* '''<code><t/></code>''': 0 or more <code><s n="..."/></code> element(s).
  +
  +
Example:
  +
  +
<e>
  +
&lt;p>
  +
<l>$lemmaA<s n="n"/>'''<v/>'''<s n="sg"/></l>
  +
<r>$lemmaB<s n="n"/>'''<t/>'''</r>
  +
</p>
  +
</e>
  +
  +
In the example above, <code><v/></code> might be either <code><s n="m"/></code>, <code><s n="f"/></code>, etc, but the value is not stored in a variable because it's not used in any other place in the cross action.
  +
  +
[[Category:Documentation]]

Revision as of 17:02, 9 January 2011

Main article: Crossdics

Cross Model

Definirea acţiunilor de încrucişare (cross actions)

Acţiunile de încrucişare sunt necesare pentru încrucişarea corectă a perechilor de limbi.

Aceste tipare şi acţiuni sunt descrise în XML. De exemplu:

<!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>

Exemplu de acţiune-tipar (pattern-action)

Tipar

<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>

Exemplu cum această acţiune de încrucişare ar putea fi aplicată.

Acţiune de încrucişare implicită

Implicit, unealta apertium-crossdics foloseşte un model de încrucişare simplu (schemas/cross-model.xml). Acesta defineşte o singură regulă pattern-action.

<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>

În exemplul de mai sus:

  • <v n="cat"/> este o variabilă care poate reţine doar un element (de exemplu, ). În acest exemplu am folosit o variabilă deoarece avem nevoie să folosim valoarea în elementul action. Mai forţăm şi valoarea primului element să fie identică. Acolo mai este un simbol (<v/>) care poate fi folosit dacă nu vrem să folosim apoi valoarea.
  • Eticheta <t/> este o secvenţă de 0 sau mai multe elemente .
  • <t n="tailA"/> şi <t n="tailC"/> sunt de asemenea secvenţe de 0 sau mai multe elemente , dar, în acest caz particular, stocăm valoarea într-o variabilă pentru că trebuie să o folosim apoi (în elementul action).

Vezi şi

Linkuri externe

Main article: Cross Model

cross-model element

cross-model element is a set of cross actions (cross-action elements).

<!DOCTYPE cross-model SYSTEM "crossmodel.dtd">
<cross-model>
  <cross-action id="pattern-1" a="author">
  ...
  </cross-action>
  <cross-action id="pattern-2" a="author">
  ...
  </cross-action>
  ...
  <cross-action id="pattern-n" a="author">
  ...
  </cross-action>
</cross-model>

cross-action element

Each cross actions consists of a pair (pattern,action-set).

<cross-action id="pattern-1" a="author">
  <description>Cross action 1</description>
  <pattern>
    ...
  </pattern>
  <action-set>
    <action>
      ...
    </action>
    ...
    <action>
      ...
    </action>
  </action-set>
</cross-action>

pattern element

<pattern>
  <!-- Element in bilingual dictionary AB-->
  <e>
    <p>
      <l>$lemmaA...</l>
      <r>$lemmaB...</r>

  </e>
  <!-- Element in bilingual dictionary BC-->
  <e r="RL">
    <p>
      <l>$lemmaB...</l>
      <r>$lemmaC...</r>

  </e>
</pattern>

action-set element

The action-set element is a list of actions to be performed when a pair of candidate elements matches the pattern.

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

    </e>
  </action>
  <action>
  ...
  </action>
</action-set>

Values for <s> element

Literals

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

</e>

Use literals (as in ) to match exactly that element.

Variables

There are two types of variables:

  • <v n="..."/> tag: one <s> element. For example, <v n="cat"/> can refer to <s n="adj"/>. Value "adj" will be stored in variable "cat".
  • <t n="..."/> tag: is used to indicate a sequence of <s> elements. In this case, <t n="tail"/>, can refer to the sequence . Sequence "n.m.sg" will be stored in variable "tail".

Example:

<e>
  <p>
    <l>$lemmaA<v n="cat"/><t n="tailA"/></l>
    <r>$lemmaB<v n="cat"/><t/></r>

</e>

If you are not using the value of <v...> or <t...>, do not define any n attribute, that is:

  • <v/>: 1 element.
  • <t/>: 0 or more element(s).

Example:

<e>
  <p>
    <l>$lemmaA<v/></l>
    <r>$lemmaB<t/></r>

</e>

In the example above, <v/> might be either , , etc, but the value is not stored in a variable because it's not used in any other place in the cross action.