Cross-model ro
- Main article: Crossdics
Contents
Cross Model[edit]
Definirea acţiunilor de încrucişare (cross actions)[edit]
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)[edit]
Tipar[edit]
<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ă[edit]
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 elementulaction. Mai forţăm şi valoarea primului elementsă 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 elementulaction).
Elemente[edit]
Elementul cross-model[edit]
Elementul cross-model este un set de acţiuni de încrucişare (elemente cross-action).
<!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>
Elementul cross-action[edit]
Fiecare acţiune de încrucişare este formată dintr-o pereche (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>
Elementul pattern[edit]
<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>
Elementul action-set[edit]
Elementul action-set este o listă de acţiuni care vor fi executate când o pereche de elemente candidate sunt conform tiparului (pattern-ului).
<action-set>
<action>
<e>
<p>
<l>$lemmaA...</l>
<r>$lemmaC...</r>
</e> </action> <action> ... </action> </action-set>
Valori pentru elementul <s>[edit]
Simboluri[edit]
<e>
<p>
<r>$lemmaA</l>
<r>$lemmaB</r>
</e>
Folosiţi simboluri (precum în ) pentru a potrivi elementul.
Variabile[edit]
Există două tipuri de variabile:
- Eticheta
<v n="..."/>: un element<s>. De exemplu,<v n="cat"/>se poate referi la<s n="adj"/>. Valoarea "adj" va fi stocată în variabila "cat". - Eticheta
<t n="..."/>: este folosită pentru a indica secvenţa unor elemente<s>. În acest caz,<t n="tail"/>, se poate referi la secvenţa. Secvenţa "n.m.sg" va fi stocată în variabila "tail".
Exemplu:
<e>
<p>
<l>$lemmaA<v n="cat"/><t n="tailA"/></l>
<r>$lemmaB<v n="cat"/><t/></r>
</e>
Dacă nu folosiţi valoarea <v...> sau <t...>, nu definiţi niciun atribut n, astfel:
<v/>: 1 element.<t/>: 0 sau mai multe element(e).
Exemplu:
<e>
<p>
<l>$lemmaA<v/></l>
<r>$lemmaB<t/></r>
</e>
În exemplul de mai sus, <v/> poate fi , , etc, dar valoarea nu este stocată într-o variabilă pentru că nu este folosită în nicio acţiune de încrucişare (cross action).
Vezi şi[edit]
Linkuri externe[edit]
- Exemplu de cross model complet.
- Cross model DTD