https://wiki.apertium.org/w/api.php?action=feedcontributions&user=172.17.30.131&feedformat=atomApertium - User contributions [en]2024-03-29T07:05:06ZUser contributionsMediaWiki 1.34.1https://wiki.apertium.org/w/index.php?title=Contributing_to_an_existing_pair&diff=3385Contributing to an existing pair2008-01-14T10:16:16Z<p>172.17.30.131: /* See also */</p>
<hr />
<div>{{TOCD}}<br />
Adding linguistic data to an existing language pair in Apertium. Apertium has data for many languages pairs. These linguistic data include mainly dictionaries (monolingual and bilingual), structural transfer rules that perform grammatical and other transformations between the two languages involved, and lexical data for the part-of-speech tagger, which is in charge of the disambiguation of the source language text.<br />
<br />
All these linguistic data are contained in a single directory. For example, <code>apertium-es-ca</code> for the Spanish-Catalan pair. The files that you can find in these directories are described next.<br />
<br />
==Example file layout==<br />
<br />
===Apertium 1===<br />
<br />
For the Spanish–Catalan pair (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Spanish monolingual dictionary, containing 11,800 entries (as of 17 november 2005) <br />
* apertium-es-ca.ca.dix : Catalan monolingual dictionary, containing 11,800 entries.<br />
* apertium-es-ca.es-ca.dix : Spanish-Catalan bilingual dictionary, containing 12,800 entries (correspondences Spanish-Catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Structural transfer rules for the translation from Spanish to Catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Structural transfer rules for the translation from Catalan to Spanish.<br />
* apertium-es-ca.es.tsx : Tagger definition file for Spanish<br />
* apertium-es-ca.ca.tsx : Tagger definition file for Catalan<br />
* apertium-es-ca.post-es.dix : Post-generation dictionary for Spanish, with 25 entries and 5 paradigms (applies when translating from Catalan to Spanish)<br />
* apertium-es-ca.post-ca.dix : Post-generation dictionary for Catalan, with 16 entries and 57 paradigms (applies when translating from Spanish to Catalan)<br />
* directory es-tagger-data : Contains data needed for the Spanish tagger (corpora, etc.)<br />
* directory ca-tagger-data : Contains data needed for the Catalan tagger (corpora, etc.)<br />
<br />
== Adding words to the dictionaries ==<br />
<br />
When extending or adapting Apertium, the most likely operation that will be performed will be to extend its dictionaries. In fact, it will be far more common than adding transfer or post-generation rules.<br />
<br />
IMPORTANT: Every time a set of modifications is made to any of the dictionaries, the modules have to be recompiled. Type make in the directory where the linguistic data are saved (apertium-es-ca, apertium-es-gl or what may be applicable) so that the system generates the new binary files.<br />
<br />
If you want to add a new word to Apertium, you need to add three entries in the dictionaries. Suppose you are working with the Spanish-Catalan pair. In this case, you have to add:<br />
<br />
# an entry in the Spanish monolingual dictionary: so that the translator can analyze ("understand") the word when it finds it in a text, and generate it when translating this word into Spanish.<br />
# an entry in the bilingual dictionary: so that you can tell Apertium how to translate this word from one language to the other.<br />
# an entry in the Catalan monolingual dictionary: so that the translator can analyze ("understand") the word when it finds it in a text, and generate it when translating this word into Catalan.<br />
<br />
You will need to go to the directory containing the XML dictionaries (for the Spanish-Catalan pair, this is apertium-es-ca) and open with a text editor or a specialized XML editor the three dictionary files mentioned: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. The entries you need to create in these three dictionaries share a common structure.<br />
<br />
== Monolingual dictionary (Spanish) ==<br />
<br />
You may want, for example, to add the Spanish adjective "cósmico", whose equivalent in Catalan is "còsmic". The first step is to add this word to the Spanish monolingual dictionary. You will see that a monolingual dictionary has basically two types of data: paradigms (in the "<pardefs>" section of the dictionary, each paradigm inside a <pardef> element) and word entries (in the main <section> of the dictionary, each one inside an <e> element). Word entries consist of a lemma (that is, the word as you would find it in a typical paper dictionary) plus grammatical information; paradigms contain the inflection data of all lemmas in the dictionary. You can search a particular word by searching the string lm="word" (lm meaning lemma). (The element lm is optional and some other dictionaries may not contain it.)<br />
Look at the word entries in the Spanish monolingual dictionary, for example at the entry for the adjective "bonito". You can find it by searching lm="bonito":<br />
<br />
<pre><br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
To add a word, you will have to create an entry with the same structure. The part between <nowiki><i></nowiki> and <nowiki></i></nowiki> contains the prefix of the word that is common to all inflected forms, and the element <par> refers to the inflection paradigm of this word. Therefore, this entry means that the adjective "bonito" inflects like the adjective "absoluto" and has the same morphological analysis: the forms <i>bonito, bonita, bonitos, bonitas</i> are equivalent to the forms <i>absoluto, absoluta, absolutos, absolutas</i> and have the morphological analysis: adj m sg, adj f sg, adj m pl and adj f pl respectively.<br />
<br />
<br />
Now, you have to decide which is the lexical category of the word you want to add. The word "cósmico" is an adjective, like "bonito". Next, you have to find the appropriate paradigm for this adjective. Is it the same as the one for "bonito" and "absoluto"? Can you say <i>cósmico, cósmica, cósmicos, cósmicas</i>? The answer is yes, and, with all this information, you can now create the correct entry:<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
If the word you want to add has a different paradigm, you have to find it in the dictionary and assign it to the entry. You have two ways to find the appropriate paradigm: looking in the <pardefs> section of the dictionary, where all the paradigms are defined inside a <pardef> element, or finding another word that you think may already exist in the dictionary and that has the same inflection paradigm as the one to be added. For example, if you want to add the word "genoma", you need to find an appropriate paradigm for a noun whose gender is masculine and forms the plural with the addition of an -s. This will be the paradigm "abismo__n" in our present dictionaries. Therefore, the entry for this new word would be:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
In exceptional cases you will need to create a new paradigm for a certain word. You can look at the structure of other paradigms and create one accordingly. For a more detailed description of paradigms and word entries in the dictionaries, refer to section 3.1.2 of the system documentation.<br />
<br />
== Monolingual dictionary (Catalan) ==<br />
<br />
<br />
Once you have added the word to one monolingual dictionary, you have to do the same to the other monolingual dictionary of the translation pair (in our example, the Catalan monolingual dictionary) using the same structure. The result would be:<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
== Monolingual dictionary (Galician) ==<br />
<br />
In the case you are trying to improve the XML dictionaries for the Spanish-Galician pair, you will need to go to the directory apertium-es-gl and open with a text editor or a specialized XML editor the three dictionary files apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. In that case, once you have added the new Spanish word "genoma" to the Spanish monolingual dictionary (apertium-es-gl.es.dix), you have to add the equivalent Galician word "xenoma" to the Galician monolingual dictionary (apertium-es-gl.gl.dix), that is:<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Bilingual dictionary ==<br />
<br />
The last step is to add the translation to the bilingual dictionary.<br />
A bilingual dictionary does not usually have paradigms, only lemmas. An entry contains only the lemma in both languages and the first grammatical symbol (the lexical category) of each one. Entries have a left side (<l>) and a right side (<r>), and each language has always to be in the same position: in our system, it has been agreed that Spanish occupies the left side, and Catalan, Galician and Portuguese the right side. Once the "side" of each language has been agreed in a system, it has to be observed all through the dictionaries so that the translation works.<br />
With the addition of the lemma of both words, the system will translate all their inflected forms (the grammatical symbols are copied from the source language word to the target language word). This will only work if the source language word and the target language word are grammatically equivalent, that is, if they share exactly the same morphological symbols for all of their inflected forms. This is the case with our example; therefore, the entry you have to add to the bilingual dictionary is:<br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
This entry will translate all the inflected forms, that is, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. It works for the translation in both directions: from Spanish to Catalan and from Catalan to Spanish.<br />
<br />
In the case of the Spanish-Galician pair, the following bilingual entry in the Spanish-Galician bilingual dictionary (apertium-es-gl.es-gl) will translate all the inflected forms for the equivalent words </i>genoma/xenoma</i> in both directions, that is, from Spanish to Galician and from Galician to Spanish:<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
What to do if the word pair is not equivalent grammatically (their grammatical symbols are not exactly the same)? In that case, you need to specify all the grammatical symbols (in the same order as they are specified in the monolingual dictionaries) until you reach the symbol that differs between the source language word and the target language word. For example, the Spanish noun "limón" has masculine gender and its equivalent in Catalan, "llimona", has feminine gender. The entry in the bilingual dictionary must be as follows:<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
A more difficult problem arises when two words have different grammatical symbols and the grammatical information of the source language word is not enough to determine the gender (masculine or feminine) or the number (singular or plural) of the target language word. Take for example the Spanish adjective "canadiense". Its gender is (masculine-feminine) since it is invariable in gender, that is, it can go both with masculine and feminine nouns (hombre canadiense, mujer canadiense). In Catalan, on the other hand, the adjective has a different inflection for the masculine and the feminine (home canadenc, dona canadenca). Therefore, when translating from Spanish to Catalan it is not possible to know, without looking at the accompanying noun, whether the Spanish adjective (mf) has to be translated as a feminine or a masculine adjective in Catalan. In that case, the symbol "GD" (for "gender to be determined") is used instead of the gender symbol. The word's gender will be determined by the structural transfer module, by means of a transfer rule (a rule that detects the gender of the preceding noun in this particular case).<br />
<br />
Therefore, "GD" must be used only when translating from Spanish to Catalan, but not when translating from Catalan to Spanish, as in Spanish the gender will always be mf regardless of the gender of the original word.<br />
<br />
In the bilingual dictionary you will need to add, in this case, more than one entry with direction indications, as you must specify in which translation direction the gender remains undetermined. The entries for this adjective should be as follows:<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
"LR" means "left to right", and "RL", "right to left". Since Spanish is on the left and Catalan on the right, the adjective will be "GD" only when translating from Spanish to Catalan ("LR"). For the translation "RL" you need to create two entries, one for the adjective in feminine and another one for the adjective in masculine.<br />
The same principle applies when it is not possible to determine the number (singular or plural) of the target word for the same reasons mentioned above. For example, the Spanish noun "rascacielos" (skyscraper) is invariable in number, that is, it can be singular as well as plural (<i>un rascacielos, dos rascacielos</i>). In Catalan, on the other hand, the noun has a different inflection for the singular and for the plural (<i>un gratacel, dos gratacels</i>). In this case the symbol used is "ND" ("number to be determined") and the entries should be like this:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
For a more detailed description of this kind of entries, refer to section 3.1.2.4.2 of the system documentation.<br />
<br />
== Adding direction restrictions ==<br />
<br />
In the previous example we have already seen the use of direction restrictions for entries with undetermined gender or number ("GD" or "ND"). Restrictions can also be used in other cases.<br />
It is important to note that the current version of Apertium can give only a single equivalent for each source-language lexical form (a lexical form is the lemma plus its grammatical information), that is, no word-sense disambiguation is performed. [Note: The system performs only part-of-speech disambiguation for homograph words, that is, for ambiguous words that can be analyzed as more than one lexical form, like vino in Spanish, that can mean both "wine" and "he/she came". This type of disambiguation is performed by the tagger.] When a lemma can be translated in two or more different ways, one has to be chosen (the most general, the most frequent, etc.). You can tell Apertium that a certain word has to be understood (analyzed) but not generated, as it is not the translation of any source-language lemma.<br />
<br />
Let's see this with an example. The Spanish noun "muñeca" can be translated in two different ways in Catalan depending on its meaning: "canell" (wrist) or "nina" (doll). The context decides which translation is the correct one, but in its present state Apertium can not make such a decision (but see below the section on multiword units for ways to circumvent this problem). Therefore, you have to decide which word you want as an equivalent when translating from Spanish to Catalan. From Catalan to Spanish, both words can be translated as "muñeca" without any problem. You have to specify all these circumstances in the dictionary entries using direction restrictions ("LR" meaning "left to right", that is, Spanish-Catalan, and "RL" meaning "right to left", that is, Catalan-Spanish). If you decide to translate "muñeca" as "canell" in all cases, the entries in the bilingual dictionary shall be:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
This means that translation directions will be:<br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Note that that there is also a gender change in the case of "muñeca" (feminine) and "canell" (masculine))<br />
<br />
It should be emphasized that a lemma can not have two translations in the target language, because the system would give an error when translating that lemma (see the section "Detecting errors" below to see how to find and correct these and other types of errors). When a word can be translated in two different ways in the target language in all contexts, you need to choose one as the translation equivalent and leave the other one as a lemma that can be analyzed but not generated, using direction restrictions like in the previous example. For example, the Catalan lemmas "mot" and "paraula" can be both translated into Spanish as "palabra" (word) and the entry in the bilingual dictionary should look like this:<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Therefore, for this lemmas the translation directions will be:<br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
<br />
One may have to specify restrictions regarding translation direction also in monolingual dictionaries. For example, both Spanish forms cantaran or cantasen should be analyzed as cantar,verb, subjunctive imperfect, 3rd person plural, but when generating Spanish text, one has to decide which one will be generated. Monolingual dictionaries are read in two directions depending on its purpose: for the analysis, the reading direction is left to right; for the generation, right to left. Therefore, a word that must be analyzed but not generated must have the restriction "LR", and a word that must be generated but not analyzed must have the restriction "RL".<br />
The case of cantaran or cantasen must have already been taken care of in inflection paradigms and it is unlikely to be a problem for most people extending a dictionary. In some other cases it can be necessary to introduce a restriction in the word entries of monolingual dictionaries.<br />
<br />
== Adding multiwords ==<br />
<br />
It is possible to create entries consisting of two ore more words, if these words are considered to build a single "translation unit".<br />
These "multiword units" can also be useful when it comes to select the correct equivalent for a word inside a fixed expression. For example, the Spanish word "dirección" may be translated into two Catalan words: "direcció" (direction, management, directorate, steering, etc.) and "adreça" (address); including, for example, frequent multiword units such as "dirección general" --> "direcció general" (general directorate) and "dirección postal" --> "adreça postal" (postal address) may help get improved translations in some situations.<br />
<br />
Multiword units can be classified basically into two categories: multiwords with inner inflection and multiwords without inner inflection.<br />
<br />
Multiwords without inner inflection are just like the normal one-word entries, with the only difference that you need to insert the element <b/> (which represents a blank) between the individual words that make up the unit. Therefore, if you want to add, for example, the Spanish multiword "hoy en día" (nowadays), whose equivalent in Catalan is "avui dia", the entries you need to add to the different dictionaries are:<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
For Spanish-Galician pair, if you want to add, for example, the Spanish multiword "manga por hombro" (disarranged), whose equivalent in Galician is "sen xeito nin modo", the entries you need to add are:<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
;Galician monolingual dictionary:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
;Spanish-Galician bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Multiwords with inner inflection consist of a word that can inflect (typically a verb) and an invariable element. For these entries you need to specify the inflection paradigm just after the word that inflects. The invariable part must be marked with the element <g> in the right side. The blanks between words are indicated, like in the previous case, with the element <b/>. Look at the following example for the Spanish multiword "echar de menos" (to miss), translated into Catalan as "trobar a faltar":<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Note that the grammatical symbol is appended at the end, after the group marked with the <g>.<br />
It can be the case that a lemma is a multiword in one language and a single word in the other language. In that case, in the bilingual dictionary, the multiword will contain the <g> element and the single word will not. In the monolingual dictionaries, each entry will be created according to its type. Look at the following example for the Spanish multiword "darse cuenta" (to realize), translated into Catalan as the verb "adonar-se":<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre> <br />
<e lm="darse cuenta"><br />
<i>d</i><br />
<par n="d/ar__vblex"/><br />
<p><br />
<l><b/>cuenta</l><br />
<r><g><b/>cuenta</g></r><br />
</p><br />
</e><br />
</pre> <br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="adonar-se"><br />
<i>adon</i><br />
<par n="abander/ar__vblex"/><br />
</e><br />
</pre><br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>dar<g><b/>cuenta</g><s n="vblex"/></l><br />
<r>adonar<s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Note that the enclitic pronouns (such as "-se") after both the Spanish and Catalan verb forms need not be specified and will be taken care of by structural transfer rules; the correct positioning of clitics is one of the main reasons for using the <g>... </g> labels around the invariable part of multi-word verbs.<br />
<br />
The same principles and actions described for basic entries (gender and number change, direction restrictions, etc.) apply to all kinds of multiwords.<br />
For a more detailed description of multiword units, refer to section 3.1.2.5 of the system documentation.<br />
<br />
== Brief introduction to paradigms ==<br />
<br />
<br />
The paradigms of the previous examples, as adverbs do not inflect, contain only the grammatical symbol of the lexical form, as you see in this example:<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Paradigms are build like a lexical entry. We have seen so far lexical entries where the common part of the lemma is put between <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
But you can also express the same with a pair of strings: a left string <l> and a right string <r> inside a <nowiki><p></nowiki> element:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
These two entries are equivalent. The use of the <nowiki><i></nowiki> element helps get more simple and compact entries, and you can use it when the left side and the right side of the string pair are identical. As has been explained before, monolingual dictionaries are read LR for the analysis of a text and RL for the generation. Therefore, when there is some difference between the analysed string and the generated string (not very usual) the entry can not be written using the <nowiki><i></nowiki> element.<br />
In paradigms, the left and right strings are never identical, since the right side must contain the grammatical symbols that will go through all the modules of the system.<br />
<br />
== Consider contributing your improved lexical data ==<br />
<br />
If you have successfully added general-purpose lexical data to any of the Apertium language pairs, please consider contributing it to the project so that we can offer a better toolbox to the community. You can e-mail your data (in three XML files, one for each monolingual dictionary and another one for the bilingual dictionary) to the following addresses:<br />
<pre><br />
Spanish-Catalan data<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Spanish-Portuguese data<br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Spanish-Galician data<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
If you believe you are going to contribute more heavily to the project, you can join the development team through www.sourceforge.net. If you do not have a sourceforge account, please create one; then write to Mikel L. Forcada (mlf [at] ua [dot] es) or Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) or to Xavier Gómez Guinovart if you are interested in the Spanish-Galician language pair, explaining briefly your motivations and background to join the project. The usual way to contribute is to use CVS; as a project member, you will be able to commit your changes to dictionaries directly.<br />
<br />
The addition of simple lexical contributions has recently been made simpler by means of web forms at http://xixona.dlsi.ua.es/prototype/webform/, so that contributors do not have to deal directly with XML.<br />
<br />
You should be aware that the data you contribute to the project, once added, will be freely distributed under the current license (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, as indicated). Make sure the data you contribute is not affected by any kind of license which may be incompatible with the licenses used in this project. No kind of agreement or contract is created between you and the developers. If you have any doubt, or you plan to make a massive contribution, contact Mikel L. Forcada.<br />
<br />
== Adding structural transfer (grammar) rules ==<br />
Structural transfer rules carry out transformations to the disambiguated text, which are needed because of grammatical, syntactical and lexical divergences between the two languages involved (gender and number changes to ensure agreement in the target language, word reorderings, changes in prepositions, etc.). The rules detect patterns (sequences) of source text lexical forms and apply to them the corresponding transformations. The module detects the patterns in a left-to-right, longest-match way; for example, the phrase "the big cat" will be detected and processed by the rule for determiner - adjective - noun and not by the rule for determiner - adjective, since the first pattern is longer. If two patterns have the same length, the rule that applies is the one defined in the first place.<br />
<br />
The structural transfer module (generated from the structural transfer rules file) calls the lexical transfer module (generated from the bilingual dictionary) all through the process to determine the target language equivalents of the source language lexical forms.<br />
<br />
The structural transfer rules are contained in a XML file, one for each translation direction (for example, for the translation from Spanish to Catalan, the file is apertium-es-ca.trules-es-ca.xml). You need to edit this file if you want to add or change transfer rules.<br />
<br />
Rules have a pattern and an action part. The pattern specifies which sequences of lexical forms have to be detected and processed. The action describes the verifications and transformations that need to be done on its constituents. Usual transformation operations (such as gender and number agreement) are defined inside a macroinstruction which is called inside the rule. At the end of the action part of the rule, the resulting lexical forms in the target language are sent out so that they are processed by the next modules in the translation system.<br />
<br />
A transfer rules file contains four sections with definitions of elements used in the rules, and a fifth section where the actual rules are defined. The sections are the following:<br />
<br />
* <section-def-cats>: This section contains the definition of the categories which are to be used in the rule patterns (that is, the type of lexical forms that will be detected by a certain rule). For the rule presented below, the categories "det" and "nom" (determiner and noun) need to be defined here. Categories are defined specifying the grammatical symbols that the lexical forms have. An asterisk indicates that one or more grammatical symbols follow the ones specified. The following is the definition of the category "det", which groups determiners and predeterminers in the same category since they play the same role for transfer purposes:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
It is also possible to define as a category a certain lemma, like the following for the preposition "en":<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
* <section-def-attrs>: This section contains the definition of the attributes that will be used inside of the rules, in the action part. You need attributes for all the categories defined in the previous section, if they are to be used in the action part of the rule (to make verifications on them or to send them out at the end of the rule), as well as for other attributes needed in the rule (such as gender or number). Attributes have to be defined using their corresponding grammatical symbols and can not have asterisks; its name must be unique. The following are the definitions for the attributes "a_det" (for determiners) and "gen" (gender):<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : This section contains the definition of the variables used in the rules.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Here the macroinstructions are defined, which contain sequences of code that are frequently used in the rules; this way, linguists do not need to write the same actions repeatedly. There are, for example, macroinstructions for gender and number agreement operations.<br />
<br />
<br />
* <section-rules> : This is the section where the structural transfer rules are written.<br />
<br />
<br />
<br />
The following is an example of a rule which detects the sequence determiner -- noun:<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Part of the action performed on this pattern is specified inside the macroinstruction "f_concord2", which is defined in the <section-def-macros>. It performs gender and number agreement operations: if there is a gender or number change between the source language and the target language (in the noun), the determiner changes its gender or number accordingly; furthermore, if gender or number are undetermined ("GD" or "ND", as explained in the previous section "Adding words to monolingual and bilingual dictionaries"), the noun receives the correct gender or number values from the preceding determiner. In the Apertium es-ca, es-gl and es-pt systems, there are agreement macroinstructions defined for one, two, three or four lexical units (f_concord1, f_concord2, f_concord3, f_concord4). When calling the macroinstructions in a rule, it must be specified which is the main lexical unit (the one which most heavily determines the gender or number of the other lexical units) and which other lexical units of the pattern have to be included in the agreement operations, in order of importance. This is done with the <with-param pos=""/> element. In the previous rule, the main lexical unit is the noun (position "2" in the pattern) and the second one is the determiner (position "1" in the pattern).<br />
<br />
After the pertinent actions, the resulting lexical forms are sent out, inside the <out> element. Each lexical unit is defined with a <clip>. Its attributes mean the following:<br />
<br />
* pos: refers to the position of the lexical form in the pattern. "1" is the first lexical form (the determiner) and "2" the second one (the noun).<br />
* side: indicates if the lexical form is in the source language ("sl") or in the target language ("tl"). Of course, words are sent out always in the target language; source language lexical forms may be needed inside of a rule, when testing its attributes or characteristics.<br />
* part: indicates which part of the lexical form is referred to in the 'clip'. You can use some predefined values:<br />
-whole: the whole lexical form (lemma and grammatical symbols). Used only when sending out the lexical unit (inside an <out> element).<br />
-lem: the lemma of the lexical unit<br />
-lemh: the head of the lemma of a multiword with inner inflection<br />
-lemq: the queue of a lemma of a multiword with inner inflection<br />
As well as these predefined values, you can use any of the attributes defined in <section-def-attrs> (for example "gen" or "a_det").<br />
<br />
The values "lemh" and "lemq" are used when sending out multiwords with inner inflection (see the section "Adding multiwords") in order to place the head and the queue of the lemma in the right position, since the previous module moved the queue just after the lemma head for various reasons. In pratice, in our system, this means that you must use these values instead of 'whole' when sending out verbs, since in our dictionaries multiwords with inner inflection are always verbs and, if you use the value "whole" when sending them out, the multiword would not be well formed (the head and the queue of the lemma would not have the correct position).<br />
<br />
Therefore, a rule that has a verb in its pattern must send the lexical forms like in the following two examples:<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
</pre><br />
<br />
The first rule detects a verb and places the queue in the correct place, after all the grammatical symbols. The lexical unit is sent specifying the attributes separately: lemma head, lexical category (verb), tense, person, gender (for the participles), number and lemma queue.<br />
<br />
The second rule detects a verb followed by an enclitic pronoun and sends the two lexical forms specifying also the attributes separately; the first lexical unit consists of: lemma head, lexical category (verb), tense, person and number; the second lexical unit consists of: lemma, lexical category (enclitic pronoun), person, gender, number and lemma queue. This way, the queue of the lemma is placed after the enclitic pronoun. The two lexical units (verb and enclitic pronoun) are sent inside a <mlu> element, since they have to reach the morphological generator as a multilexical unit (multiword).<br />
<br />
If you want to add a new transfer rule, you have to follow these steps:<br />
<br />
#Specify which pattern you want to detect. Bear in mind that words are processed only once by a rule, and that rules are applied left to right and choosing the longest match. For example, imagine you have in your transfer rules file only two rules, one for the pattern "determiner - noun" and one for the pattern "noun - adjective". The Spanish phrase "el valle verde" (the green valley)" would be detected and processed by the first one, not by the second. You will need to add a rule for the pattern "determiner - noun - adjective" if you wish that the three lexical units are processed in the same pattern.<br />
#Describe the operations you want to perform on the pattern. In the Apertium es-ca, es-gl and es-pt, simple agreement operations (gender and number agreement) are easy to perform in a rule by means of a macroinstruction. To perform other operations, you will need to use more complicated elements; for a more detailed description of the language used to create rules, refer to the section 3.4.2 of the system documentation. You can also read the DTD of the structural transfer rules file (transfer.dtd) provided with the Apertium package, in which all the elements of the language are described in English.<br />
#Send the lexical units of the pattern in the target language inside an <out> element. Each lexical unit must be included in a <lu> element. If two or more lexical units must be generated as a multilexical unit (only for enclitic pronouns in the present language pairs), they must be grouped inside a <mlu> element.<br />
All the words that are detected by a rule (that are part of a pattern) must be sent out at the end of the rule so that the next module (the generator) receives them. If a lexical unit is detected by a pattern and is not included in the <out> element, it will not be generated.<br />
<br />
== Adding data to the part-of-speech tagger ==<br />
To be written.<br />
== Retraining the part-of-speech tagger ==<br />
{{main|Tagger training}}<br />
To be written.<br />
== Detecting errors ==<br />
It is easy to make errors when adding new words or transfer rules to the Apertium system.<br />
<br />
It is possible that, when compiling the new files, the system displays an error message. In this case, this is a formal error (a missing XML tag, a tag that is not allowed in a certain context, etc.). You just have to go to the line number indicated by the error message, correct the error and compile again. Other types of errors are not detected when compiling, but can make the system mistranslate a word or give an incomprehensible text string. These are linguistic errors, which can be detected and corrected with the tips given in this chapter. The following information is for Linux users, since Apertium works for the moment only with this OS.<br />
<br />
As all the data processed by the system, from the original text to the translated text, circulate between the eight modules of the system in text format, it is possible to stop the text stream at any point to know what is the input or the output of a certain module. You just have to type the right commands in the terminal using a pipeline structure so that the standard output of one is used as the standard input for the next one.<br />
<br />
Using the echo or cat commands, you can send a text through one or more modules to analyse their output and detect the origin of the error. You have to move to the directory where the linguistic data are saved and type the commands explained below.<br />
<br />
===The morphological analyser output===<br />
To know how a word is analysed by the translator, type the following in the terminal (example for the Catalan word gener):<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
You can replace ca-es with the translation direction you want to test.<br />
<br />
The output in Apertium should be:<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
The string structure is: <code>^word/lemma<morphological analysis>$</code>. The <code><sent></code> tag is the analysis of the full stop, as every sentence end is represented as a full stop by the system, whether or not explicitly indicated in the sentence.<br />
<br />
The analysis of an unknown word is (ignoring the full stop information):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
and the analysis of an ambiguous word:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Each lexical form (lemma plus morphological analysis) is presented as a possible analysis of the word casa.<br />
<br />
===The tagger output===<br />
<br />
To know the output of the tagger for a source language text, type the following in the terminal (example for the Catalan-Spanish direction):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
The output will be:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
The output for an ambiguous word will be like the one above, since the tagger chooses one lexical form. Therefore, the output for casa in Catalan will be, for example (depending on the context):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===The pretransfer output===<br />
<br />
This module applies some changes to multiwords (move the lemma queue of a multiword with inner inflection just after the lemma head). To know its output, type:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Since gener is not a multiword in the dictionaries, this module does not alter its input.<br />
<br />
===The structural transfer output===<br />
<br />
To know how a word, phrase or sentence is translated into the target language and processed by structural transfer rules, type the following in the terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
The output for the Catalan word gener will be:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Analysing how a word or phrase is output by this module can help you detect errors in the bilingual dictionary or in the structural transfer rules. Typical bilingual dictionary errors are: two equivalents for the same source language lexical form, or wrong assignment of morphological symbols. Errors due to structurual transfer rules vary a lot depending on the actions performed by the rules.<br />
<br />
===The morphological generator output===<br />
<br />
To know how a word is generated by the system, type the following in the terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
With this command you can detect generation errors due to an incorrect entry in the target language monolingual dictionary or to a divergence between the output of the bilingual dictionary (the output of the previous module) and the entry in the monolingual dictionary.<br />
<br />
The correct output for the input "gener" would be:<br />
<pre><br />
enero.[][]<br />
</pre><br />
There are in this case no morphological symbols, and the word appears inflected.<br />
<br />
===The post-generator output===<br />
<br />
It is not very usual to have errors due to the postgenerator, because of its generally small size and the fact that it is seldom changed after adding usual combinations, but you can also test how a source language text comes out of this module, by typing:<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===The final output===<br />
<br />
You can put all the modules of the system in the pipeline structure and see how a source language text goes through all the modules and gets translated into the target language. You just have to add the reformatter to the previous command:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
<br />
This is the same as using the "apertium" shell script provided by the Apertium package:<br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(The full stop indicates the directory where the linguistic data are saved.)<br />
<br />
Of course, instead of typing all the presented commands every time you need to test a translation, you can create shell scripts for every action and use them to test the output of each module.<br />
<br />
Error examples<br />
<br />
To be written.<br />
<br />
<br />
[[Category:Documentation]]<br />
<br />
== Generating a new Apertium system from modified data ==<br />
If you make changes to any of the linguistic data files of Apertium (the dictionaries, the transfer rules, the tagger file or corpora or the postgeneration dictionaries), the changes will not be applied until you recompile the modules. To do this, type 'make' in the directory where the linguistic data are saved (apertium-es-ca, apertium-es-gl or what may be applicable) so that the system generates the new binary files.<br />
<br />
If changes were made to the tagger file or to the corpora used to train the tagger, you will need also to retrain the tagger. In the same directory mentioned above, after typing make, type make train in order to perform the retraining.<br />
<br />
Now the Apertium translator will work using the recently added data.<br />
<br />
==See also==<br />
<br />
* [[Comment contribuer à une paire de langues existante]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=C%C3%B3mo_Contribuir_a_un_par_de_lenguas_existentes&diff=3384Cómo Contribuir a un par de lenguas existentes2008-01-14T10:15:49Z<p>172.17.30.131: /* *See *also */</p>
<hr />
<div>{#unknown{^*TOCD}}<br />
<br />
Cómo Añadir datos lingüísticos a un par de las lenguas existentes a *Apertium. *Apertium Tiene datos para muchos pares de lenguas. Estos datos lingüísticos comprenden principalmente diccionarios (*monolingues y bilingües), de las reglas de *transfert estructural quién realizan operaciones *grammaticales y otras transformaciones entre dos lenguas implicadas, y de los datos *lexicales para el *PoS *tagger, quién es en carga de la *désambiguation del texto de la lengua de salida.<br />
<br />
Todos estos datos lingüísticos son comprendidas en un solo repertorio. Por ejemplo, <código>*apertium-eres-*ca</código> para el par español-catalán. A continuación, os describimos los ficheros que os podéis encontrar en este repertorio.<br />
<br />
<br />
==Ejemplo de edición de los ficheros==<br />
<br />
===*Apertium 1===<br />
<br />
<br />
Para el par español-catalán (*apertium-eres-*ca):<br />
<br />
* *apertium-Eres-*ca.Eres.Diez : Diccionario *monolingue español, habiendo 11,800 entradas (desde el 17 de noviembre de 2005) <br />
* *apertium-eres-*ca.*ca.Diez : Diccionario *monolingue catalán, habiendo 11,800 entradas.<br />
* *apertium-Eres-*ca.Eres-*ca.Diez : Diccionario bilingüe español-catalán, habiendo 12,800 entradas (*correspondences español-catalán).<br />
* *apertium-Eres-*ca.*trules-Eres-*ca.*xml : Reglas de *transfert estructural para la traducción del español al catalán.<br />
* *apertium-Eres-*ca.*trules-*ca-Eres.*xml : Reglas de *transfert estructural para la traducción del catalán al español.<br />
* *apertium-Eres-*ca.Eres.*tsx : Fichero de definición del *tagger para el español<br />
* *apertium-eres-*ca.*ca.*tsx : Fichero de definición del *tagger para el catalán<br />
* *apertium-eres-*ca.*post-Eres.Diez : Diccionario de *post-generación para el español, con 25 entradas y 5 paradigmas (pedidos en el momento de traducir del catalán al español)<br />
* *apertium-eres-*ca.*post-*ca.Diez : Diccionario de *post-generación para el catalán, con 16 entradas y 57 paradigmas (pedidos en el momento de traducir del español al catalán)<br />
* repertorio eres-*tagger-dató : Contiene los datos necesarios para el *tagger español (*corpus, etc.)<br />
* Repertorio *ca-*tagger-dató : Contiene los datos necesarios para el *tagger catalán (*corpus, etc.)<br />
<br />
== Cómo Añadir palabras en los diccionarios ==<br />
<br />
En el momento de desarrollar o de adaptar *Apertium, la operación quién será realizada más probablemente será el desarrollo de sus diccionarios. De hecho, será mucho más común que el *ajout de las reglas de *transfert o de *post-generación.<br />
<br />
Importante: A cada vez que las modificaciones de un grupo son hechas para cada diccionario, los módulos tengan que estar *compilés nuevamente. Pegáis '*make' en el repertorio dónde los datos lingüísticos son guardadas (*apertium-eres-*ca, *apertium-eres-*gl o lo que puede ser aplicable) para que el sistema genera nuevos ficheros *binaires.<br />
<br />
Si os queréis añadir una nueva palabra a *Apertium, os tenéis que añadir tres entradas en los diccionarios. Suponemos que os trabajáis con el par español-catalán. En este caso, os tenéis que añadir:<br />
<br />
<br />
# Una entrada en el diccionario *monolingue español: para que el traductor pueda analizar ("comprender") la palabra cuando lo encuentra en un texto, y generarlo cuando va a traducirlo hacia el español.<br />
# Una entrada en el diccionario bilingüe: para que os podáis decir a *Apertium cómo traducir esta palabra de una lengua a la otra.<br />
# Una entrada en el diccionario *monolingue catalán: para que el traductor pueda analizar ("comprender") la palabra cuando lo encuentra en un texto, y generarlo cuando va a traducirlo hacia el catalán.<br />
<br />
Os tendréis que ir al repertorio habiendo los diccionarios *XML (para el par español-catalán, es *apertium-eres-*ca) y abrir con un editor de texto o un editor *XML especializado los tres ficheros de los diccionarios *précités: *apertium-eres-*ca.Eres.Diez, *apertium-eres-*ca.Eres-*ca.Diez *and *apertium-eres-*ca.*ca.Diez. Las entradas que os tenéis que crear en estos tres diccionarios comparten una estructura común.<br />
<br />
== Diccionario *monolingue (Español) ==<br />
<br />
Os queréis, por ejemplo, añadir el adjetivo español « *cósmico », cuyo el equivalente en catalán es « *còsmic ». La primera etapa es de añadir esta palabra en el diccionario *monolingue español. Os podéis constatar que un diccionario *monolingue ha esencialmente dos tipos de los datos: los paradigmas (a la sección "<*pardefs>" del diccionario, cada paradigma en un elemento <*pardef>) y las entradas de las palabras a la sección> « mano » del diccionario, cada una en un elemento <*e>). Las entradas de las palabras son de las *lemmes (eso representa la palabra como lo encontraríais en un diccionario en papel) más la información *grammaticale; los paradigmas contienen los datos de inflexión de todas las *lemmes en el diccionario. Os podéis encontrar una palabra en particular buscando la secuencia *lm="palabra" (*lm significa *lemme). (El elemento *lm es opcional y otros diccionarios pueden haberlo no).<br />
Miráis las entradas de las palabras en el diccionario *monolingue español, por ejemplo, la entrada del adjetivo « *bonito ». Os podéis encontrarla buscando *lm=« *bonito »:<br />
<br />
<*e *lm="*bonito"><br />
<I>*bonit</i><br />
<por *n="*absolut/*o__*adj"/><br />
</*e><br />
Para añadir una palabra, os tendréis que crear una entrada con la misma estructura. La parte entre <i> y </i> contiene el *préfixe de la palabra lo que es común para todas las formas desviadas, y el elemento <por> hecho referencia a la inflexión del paradigma de esta palabra. Por consiguiente, esta entrada significa que el adjetivo « *bonito » desvía todo como el adjetivo « *absoluto » habiendo el mismo análisis *morphologique: las formas *bonito, *bonita, *bonitos, *bonitas son equivalentes a las formas *absoluto, *absoluta, *absolutos, *absolutas habiendo el análisis *morphologique: *adj m *sg, *adj f *sg, *adj m *pl *and *adj f *pl respectivamente.<br />
Ahora, os tenéis que decidir qué es la categoría *lexicale de la palabra que os queréis añadir. La palabra « *cósmico » es un adjetivo como « *bonito ». Por la continuación, os tenéis que encontrar el paradigma apropiado para este adjetivo. Ha- la misma inflexión que « *bonito » y « *absoluto »? Poded decir *cósmico, *cósmica, *cósmicos, *cósmicas? La respuesta es sí. Con toda esta información os podéis ahora crear la entrada correcta:<br />
<br />
<*e *lm="*cósmico"><br />
<I>*cósmic</i><br />
<por *n="*absolut/*o__*adj"/><br />
</*e><br />
<br />
Si la palabra que os queréis añadir ha un paradigma diferente, os tenéis que buscarlo en el diccionario y asignarlo a la entrada. Os habéis dos caminos para encontrar el paradigma apropiado: sea mirando la sección <*pardefs> del diccionario, dónde todos los paradigmas son definidos en un elemento <*pardefs>, sea buscando otra palabra quién podría ya existir en el diccionario habiendo la misma inflexión del paradigma que la palabra a añadir. Por ejemplo, si os queréis añadir la palabra « *genoma » os tenéis que encontrar un paradigma apropiado para un nombre cuyo género es masculino y quién hace son plural añadiendo una s. Este será el paradigma « *abismo_*n » en nuestro diccionario actual. Por consiguiente, la entrada de esta nueva palabra sería:<br />
<br />
<*pre><br />
<*e *lm="*genoma"><br />
<I>*genoma</i><br />
<por *n="*abismo__*n"/><br />
</*e><br />
</*pre><br />
<br />
En casos excepcionales os tendréis que crear un nuevo paradigma para una cierta palabra . Os podéis miráis la estructura otra paradigmas y en crear un correctamente. Para una descripción más detallada de los paradigmas y de las entradas de las palabras en los diccionarios, consultáis la sección 3.1.2 de la documentación del sistema.<br />
<br />
== Diccionario *monolingue (Catalán) ==<br />
<br />
<br />
Una vez que os habéis añadido la palabra en un diccionario *monolingue, os tenéis que rehacerlo en el otro diccionario *monolingue del par de traducción (en nuestro ejemplo, el diccionario *monolingue catalán) utilizando la misma estructura. El resultado sería:<br />
<br />
<*pre><br />
<*e *lm="*còsmic"><br />
<I>*còsmi</i><br />
<por *n="*acadèmi/*c__*adj"/><br />
</*e><br />
</*pre><br />
<br />
<br />
== Diccionario *monolingue (Gallego) ==<br />
<br />
En caso de que os intentáis de mejorar los diccionarios *XML para el par español-gallego, os tendréis que dirigir al repertorio *apertium-eres-*gl y os tendréis que abrir con un editor de texto o con un editor *XML especializado los tres ficheros de los diccionarios *apertium-eres-*gl.Eres.Diez, *apertium-eres-*gl.Eres-*gl.Diez *and *apertium-eres-*gl.*gl.Diez. En este caso, una vez que os habéis añadido la nueva palabra español « *genoma » en el diccionario *monolingue español (*apertium-eres-*gl.Eres.Diez), os tenéis que añadir la palabra gallega equivalente « *xenoma » en el diccionario *monolingue gallego (*apertium-eres-*gl.*gl.Diez), este sería:<br />
<br />
<*pre><br />
<*e *lm="*xenoma"><br />
<I>*xenoma</i><br />
<por *n="*Xulio__*n"/><br />
</*e><br />
</*pre><br />
<br />
== Diccionario bilingüe ==<br />
<br />
La última etapa consiste en añadir la traducción en el diccionario bilingüe. Normalmente, un diccionario bilingüe no ha paradigmas, pero de los *lemmes. Una entrada contiene sólo el *lemme en ambas lenguas y el primer símbolo *grammatical (la categoría *lexicale) de cada uno.<br />
<br />
Las entradas han un lado izquierdo (<l>) y un lado derecho (<*r>), y cada lengua tiene que colocarse siempre en la misma posición: en nuestro sistema, ha sido convenido que el español ocupa el lado izquierdo y que el catalán, el gallego y el portugués ocupan el lado derecho. Una vez que el lado » ha sido convenido en el sistema, ha hecho falta observar los diccionarios en entera para que la traducción funciona.<br />
<br />
Añadiendo el *lemme de dos palabras, el sistema traducirá todas las formas desviadas (los símbolos *grammaticaux son *copiés de la palabra de la lengua de salida a la palabra de la lengua de llegada. Cela funcionará sólo si la palabra de la lengua de salida y la palabra de la lengua de llegada son *grammaticalement equivalentes, es decir, se comparten exactamente los mismos símbolos *morphologiques para todas sus formas desviadas. Es el caso de nuestro ejemplo; por consiguiente, la entrada que os tenéis que añadir en el diccionario bilingüe este: <br />
<*pre><br />
<*e> <br />
<*p><br />
<l>*cósmico<s *n="*adj"/></l><br />
<*r>*còsmic<s *n="*adj"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Esta entrada traducirá todas las formas desviadas, es decir, <i>*adj m *sg</i>, <i>*adj f *sg</i>, <i>*adj m *pl</i> *and <i>*adj f *pl</i>. Cela funciona para la traducción en ambas direcciones: del español al catalán y del catalán al español.<br />
<br />
En el caso del par español-gallego, la entrada bilingüe siguiente en el diccionario bilingüe español-gallego (*apertium-eres-*gl.Eres-*gl) traducirá todas las formas desviadas para las palabras equivalentes </i>*genoma/*xenoma</i> en ambas direcciones, es decir, del español al gallego y del gallego al español: <br />
<br />
<*pre><br />
<*e> <br />
<*p><br />
<L>*genoma<s *n="*n"/></l><br />
<*r>*xenoma<s *n="*n"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Qué se tiene que hacer si el par de palabras no es equivalente *grammaticalement (sus símbolos *grammaticaux no son exactamente los mismos)? En este caso, os tenéis que precisar todos los símbolos *grammaticaux (en el mismo orden qué son precisados en los diccionarios *monolingues) hasta que os encontráis el símbolo quién difiere entre la palabra de la lengua de salida y la palabra de la lengua de llegada. Por ejemplo, el nombre español « *limón » es masculino y su equivalente en catalán, « *llimona » es femenino. La entrada en el diccionario bilingüe tiene que estar:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*limón<s *n="*n"/><s *n="m"/></l><br />
<*r>*llimona<s *n="*n"/><s *n="f"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Un problema más complicado surge cuando dos palabras tienen símbolos *grammaticaux diferentes y la información *grammaticale de la palabra de la lengua de salida no es suficiente para determinar el género (masculino o femenino) o el número (singular o plural) de la palabra de la lengua de llegada. Tomáis a título de ejemplo el adjetivo español « *canadiense ». Su género es (masculino-femenino) y él queda *invariable, es decir, puede seguir sea un nombre masculino, sea un nombre femenino (*hombre *canadiense, *mujer *canadiense). Del otro lado, en catalán el adjetivo ha una inflexión diferente para el masculino y el femenino (*home *canadenc, *dona *canadenca). Por consiguiente, cuando se tradujo del español al catalán no es posible a saber si el adjetivo español (*mf) tiene que estar traducido como un adjetivo femenino o masculino al catalán, sin mirar la palabra que lo acompaña. En este caso, el símbolo « *GD » (« género a determinar ») es utilizado en lugar del símbolo de género. El género de las palabras será determinado por el módulo de *transfert estructural, mediante una regla de *transfert (una regla quién detecta el género del nombre precedente en este caso preciso).<br />
<br />
Por consiguiente, « *GD » tiene que estar empleado sólo cuando se tradujo del español al catalán, pero en absoluto cuando se tradujo del catalán al español, siendo dado qué en español el género será siempre « *mf » qué qué sea el género de la palabra original.<br />
<br />
En el diccionario bilingüe os tendréis que añadir, en este caso, varias entradas con indicaciones *directionnelles, ya que os tenéis que precisar en qué dirección de traducción el género resto *indéterminé. Las entradas para este adjetivo serían: <br />
<br />
<*pre><br />
<*e *r="*LR"><br />
<*p><br />
<L>*canadiense<s *n="*adj"/><s *n="*mf"/></l><br />
<*r>*canadenc<s *n="*adj"/><s *n="*GD"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*canadiense<s *n="*adj"/><s *n="*mf"/></l><br />
<*r>*canadenc<s *n="*adj"/><s *n="f"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*canadiense<s *n="*adj"/><s *n="*mf"/></l><br />
<*r>*canadenc<s *n="*adj"/><s *n="m"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
« *LR » Significa « *left *to *right » (de izquierda a derecha), y « *RL », « *right *to *left » (de derecha a izquierda). Como el español es a derecha y el catalán a izquierda, el adjetivo será « *GD » sólo cuando se tradujo del español al catalán (« *LR »). Para la traducción « *RL » os tenéis que crear dos entradas, la una para el adjetivo femenino y el otro para el adjetivo masculino.<br />
<br />
El mismo principio es aplicado cuando no es posible de determinar el número (singular o plural) de la palabra de llegada a causa de las razones indicadas aquí-encima. Por ejemplo, el nombre español « *rascacielos » (rascacielos) es *invariable enumera, es decir, él puede ser singular así como plural (<i>un *rascacielos, espalda *rascacielos</i>). En catalán, de otro lado, el nombre ha una inflexión diferente para el singular y para el plural (<i>un *gratacel, espalda *gratacels</i>). En este caso, el símbolo utilizado es « *ND » (« número a determinar ») y las entradas serían como ésta:<br />
<br />
<*pre><br />
<*e *r="*LR"><br />
<*p><br />
<L>*rascacielos<s *n="*n"/><s *n="m"/><s *n="*sp"/></l><br />
<*r>*gratacel<s *n="*n"/><s *n="m"/><s *n="*ND"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*rascacielos<s *n="*n"/><s *n="m"/><s *n="*sp"/></l><br />
<*r>*gratacel<s *n="*n"/><s *n="m"/><s *n="*pl"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*rascacielos<s *n="*n"/><s *n="m"/><s *n="*sp"/></l><br />
<*r>*gratacel<s *n="*n"/><s *n="m"/><s *n="*sg"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Para una descripción más detallada de este tipo de entrada, consultáis la sección 3.1.2.4.2 de la documentación del sistema.<br />
<br />
<br />
== Cómo Añadir restricciones *directionnelles == <br />
<br />
En el ejemplo precedente nos hemos visto ya la utilización de las restricciones *directionnelles para entradas con el género y el número *indéterminés (« *GD » o « *ND »). Las restricciones pueden estar igualmente hechas en otros casos. Es importante de anotar que la versión actual de *Apertium no puede proporcionar que un equivalente para cada forma *lexicale de la lengua de salida (una forma *lexicale es el *lemme más su información *grammaticale), es decir, la *désambiguation del sentido de la palabra no es realizada. [Nota: El sistema no realiza que la *désambiguation de la parte del discurso para las palabras *homographes, es decir, para palabras ambiguas quiénes pueden estar analizados a varias formas *lexicales, como « *vino » en español, quién puede significar « vino » así como « vino - /ha venido/*e ». Este tipo de *désambiguation es realizada por el *tagger.] Cuando un *lemme puede ser traducido de dos o varios modos, hace falta escoger una (la más general, la más frecuente,etc.). Os podéis decir a *Apertium que una cierta palabra tiene que estar comprendido (analizado) pero generado, porque este no es la traducción de un *lemme de la lengua de salida.<br />
<br />
Nos vamos ver eso con un ejemplo. La palabra española « *muñeca » puede ser traducido en catalán de dos modos diferentes según el sentido: « *canell » (muñeca) o « *nina » (muñeca). El contexto decide qué traducción es la correcta, pero *Apertium, en su estado actual, no puede tomar una tal decisión (miráis, no obstante, a la sección de las unidades *multimots para ver cómo evitar este problema). Por consiguiente, os tenéis que decidir la palabra equivalente cuando se tradujo del español al catalán. Del catalán al español, ambas palabras pueden estar traducidos <br />
como « *muñeca » sin ningún problema. Os tenéis que precisar todas estas circunstancias en las entradas del diccionario utilizando de las restricciones *directionnelles (« *LR » quiénes significa « *left *to *right », es decir, español-catalán, y « *RL » quién significa « *right *to *left », es decir, catalán-español). Si os decidís de traducir « *muñeca » como « *canell » de todas maneras, las entradas en el diccionario bilingüe serían:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*muñeca<s *n="*n"/><s *n="f"/></l><br />
<*r>*canell<s *n="*n"/><s *n="m"/></*r><br />
</*p><br />
</*e><br />
<br />
<*e *r="*RL"><br />
<*p><br />
<L>*muñeca<s *n="*n"/></l><br />
<*r>*nina<s *n="*n"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Cela quiere decir que las direcciones de traducción serán: <br />
<br />
*muñeca --> *canell<br />
*muñeca <-- *canell<br />
*muñeca <-- *nina<br />
<br />
(Anotáis que ha también un cambio de género en el caso de « *muñeca » (femenino) y « *canell » (masculino))<br />
<br />
Tiene que estar subrayado que un *lemme no puede haber dos traducciones en la lengua de llegada, porque el sistema produciría un error cuando se tradujo este *lemme (consultáis la sección « Cómo detectar los errores » aquí-debajo para ver cómo encontrar y *corriger estos errores y otros tipos de errores). Cuando una palabra puede ser traducida de dos modos diferentes en la lengua de llegada aproximadamente sea el contexto, os tenéis que escoger un como el equivalente de traducción y en dejar la otra como un *lemme quién puede ser analizado, pero generado, utilizando de las restricciones *directionnelles como en el ejemplo precedente. Por ejemplo, los *lemmes catalana « palabra » y « *paraula » pueden estar traducidos al español como « *palabra » (palabra), pues la entrada en el diccionario bilingüe sería:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*palabra<s *n="*n"/></l><br />
<*r>*paraula<s *n="*n"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*palabra<s *n="*n"/><s *n="f"/></l><br />
<*r>palabra<s *n="*n"/><s *n="m"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Por consiguiente, para estos *lemmes las direcciones de traducción serán: <br />
<br />
*palabra --> *paraula<br />
*palabra <-- *paraula<br />
*palabra <-- Palabra<br />
<br />
Alguno tiene que también precisar las restricciones con relación a la dirección de traducción en el diccionario *monolingue. Por ejemplo, ambas formas españolas « *cantaran » o « *cantasen » son analizadas como « *cantar », verbo, *subjonctif *imparfait, 3*ème persona del plural, pero cuando se genera el texto en español, alguno tiene que decidir qué forma va a estar generado. Los diccionarios *monolingues son leídos en ambas direcciones según su objetivo: para el análisis, la dirección de lectura es izquierda a derecha; para la generación, de derecha a izquierda. Por consiguiente, la palabra quién tiene que estar analizado, pero generado, tiene que haber la restricción « *LR », y la palabra quién tiene que estar generado, pero analizado, tiene que haber la restricción « *RL ».<br />
<br />
<br />
== Cómo Añadir de los *multimots ==<br />
<br />
Es posible de crear entradas constituidas de dos o varias palabras, siempre y cuando estas palabras puedan construir una sola unidad de traducción ».<br />
Estas unidades *multimots » pueden también estar útiles cuando hace falta escoger el equivalente correcto para una palabra en una expresión fija. Por ejemplo, la palabra española « *dirección » puede ser traducido de dos modos al catalán: « *direcció » (dirección, dirección y gestión de empresas) y «*adreça» (dirección); puede constituir, por ejemplo, de las unidades *multimots frecuentes tales que « *dirección *general » --> « *direcció *general » (dirección general) y « *dirección postal » --> « *adreça postal » (dirección postal). Esto puedo ayudar a obtener una mejor traducción en algunas situaciones.<br />
<br />
Las unidades *multimots pueden estar *catégorisées como: de los *multimots con una inflexión interna y de las *multimots sin una inflexión interna.<br />
<br />
Los *multimots sin una inflexión interna son como las entradas de una palabra, pero hace falta *insérer el elemento <*b/> (quién representa un blanco) entre las palabras quiénes componen la unidad. Por consiguiente, si os queréis añadir, por ejemplo, el *multimot español « *hoy en *día » (hoy), cuyo el equivalente en catalán es « *avui *dia », las entradas que os tenéis que añadir en los tres diccionarios son:<br />
<br />
<br />
* Diccionario *monolingue español:<br />
<br />
<*pre><br />
<*e *lm="*hoy *día"><br />
<i>*hoy<*b/>en<*b/>*día</i><br />
<por *n="*ahora__*adv"/><br />
</*e><br />
</*pre><br />
<br />
* Diccionario *monolingue catalán:<br />
<br />
<*pre><br />
<*e *lm="*avui *dia"><br />
<I>*avui<*b/>*dia</i><br />
<por *n="*ahir__*adv"/><br />
</*e><br />
</*pre> <br />
<br />
* Diccionario bilingüe español-catalán:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*hoy<*b/>en<*b/>*día<s *n="*adv"/></l><br />
<*r>*avui<*b/>*dia<s *n="*adv"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Para el par español-gallego, si os queréis añadir, por ejemplo, el *multimot español « *manga *por *hombro » (ser sentido encima debajo) cuyo el equivalente en gallego es « *sen *xeito *nin *modo ». Las entradas que os tenéis que añadir son:<br />
<br />
* Diccionario *monolingue español:<br />
<br />
<*pre><br />
<*e *lm="*manga *por *hombro"><br />
<I>*manga<*b/>*por<*b/>*hombro</i><br />
<por *n="*abajo__*adv"/><br />
</*e><br />
</*pre><br />
<br />
* Diccionario *monolingue gallego:<br />
<br />
<*pre><br />
<*e *lm="*sen *xeito *nin *modo"><br />
<I>*sen<*b/>*xeito<*b/>*nin<*b/>*modo</i><br />
<por *n="*Deo_*gratias__*adv"/><br />
</*e><br />
</*pre><br />
<br />
* Diccionario bilingüe español-gallego:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*manga<*b/>*por<*b/>*hombro<s *n="*adv"/></l><br />
<*r>*sen<*b/>*xeito<*b/>*nin<*b/>*modo<s *n="*adv"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Los *multimots con una inflexión interna son constituidos palabra quién puede desviar (normalmente un verbo) y de un elemento *invariable. Para estas entradas os tenéis que precisar el paradigma de inflexión justa después de la palabra quién desvía. La parte *invariable tiene que estar marcada con el elemento <g> en el lado derecho. Los blancos entre las palabras son indicados, como en el caso precedente, con el elemento <*b/>. Miráis el ejemplo siguiente para el *multimot español « *echar de *menos » (faltar), tradujo al catalán como « *trobar ha *faltar »: <br />
<br />
* Diccionario *monolingue español:<br />
<br />
<*pre><br />
<*e *lm="*echar De *menos"><br />
<i>*ech</i><br />
<por *n="*aspir/*ar__*vblex"/><br />
<*p><br />
<l><*b/>de<*b/>*menos</l><br />
<*r><g><*b/>de<*b/>*menos</g></*r><br />
</*p><br />
</*e> <br />
</*pre><br />
<br />
* Diccionario *monolingue catalán:<br />
<br />
<*pre><br />
<*e *lm="*trobar Ha *faltar"><br />
<i>*trob</i><br />
<por *n="*abander/*ar__*vblex"/><br />
<*p><br />
<l><*b/>ha<*b/>*faltar</l><br />
<*r><g><*b/>ha<*b/>*faltar</g></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
* Diccionario bilingüe español-catalán:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*echar<g><*b/>de<*b/>*menos</g><s *n="*vblex"/></l><br />
<*r>*trobar<g><*b/>ha<*b/>*faltar</g><s *n="*vblex"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
<br />
== En resumen introducción a los paradigmas ==<br />
<br />
<br />
Los paradigmas de los ejemplos precedentes contienen sólo un símbolo de la forma *lexicale, ya que los adverbios no han inflexión. Os podéis constatarlo en este ejemplo:<br />
<br />
<*pre><br />
<*pardef *n="*ahora__*adv"><br />
<*e><br />
<*p><br />
<L/><br />
<*r><s *n="*adv"/></*r><br />
</*p><br />
</*e><br />
</*pardef><br />
</*pre><br />
<br />
Los paradigmas son construidos como una entrada *lexicale. Nos hemos visto hasta presente de las entradas *lexicales cuya parte común del *lemme es puesta entra <*nowiki><i> </i></*nowiki>:<br />
<br />
<*pre><br />
<*e *lm="*cósmico"><br />
<I>*cósmic</i><br />
<por *n="*absolut/*o__*adj"/><br />
</*e><br />
</*pre><br />
<br />
Sin embargo, os podéis también representar la misma cosa con un par de secuencias: una secuencia a izquierda <l> y una secuencia a derecha <*r> en un elemento <*nowiki><*p></*nowiki> :<br />
<br />
<*pre><br />
<*e *lm="*cósmico"><br />
<*p><br />
<L>*cósmic</l><br />
<*r>*cósmic</*r><br />
</*p><br />
<por *n="*absolut/*o__*adj"/><br />
</*e><br />
</*pre><br />
<br />
Estas dos entradas son equivalentes. El uso del elemento <*nowiki><i></*nowiki> nos ayuda a *simplifier y *compacter las entradas, y os podéis utilizarlo cuando el lado izquierdo y el lado derecho del par *séquentielle son idénticos. Como os hemos explicado ya, los diccionarios *monolingues son leídos *LR para el análisis de un texto y *RL para la generación. Por consiguiente, cuando hay una diferencia entre la secuencia analizada y la secuencia generada (quién no es muy corriendo) la entrada no puede estar escrita mediante el elemento <*nowiki><i></*nowiki>.<br />
En los paradigmas, las secuencias izquierdas y derechas no son nunca idénticas, ya que el lado derecho tiene que contener los símbolos *grammaticales quiénes van a pasar en todos los módulos del sistema.<br />
<br />
<br />
== Consideráis el hecho de proporcionarnos vuestras mejoras de los datos *lexicales ==<br />
<br />
Si os habéis añadido con éxitos de los datos *lexicales banalizadas en cualesquier pares de lenguas de *Apertium, *merci de considerar el hecho de proporcionarlos en el proyecto para que nos podamos ofrecer un mejor *toolbox a la comunidad. Os podéis dirigir vuestros datos (en tres ficheros *XML, un fichero para cada diccionario *monolingue y otro para el diccionario bilingüe) a las direcciones siguientes: <br />
<br />
<*pre><br />
Datos españoles-catalanes<br />
Mireia *Ginestí: *mginesti [*at] *dlsi [dote] *ua [dote] eres<br />
Dadas español-portugués <br />
Carme *Armentano: *carmentano [*at] *dlsi [dote] *ua [dote] eres<br />
Dadas español-gallego<br />
Xavier Gómez-*Guinovart: *xgg [*at] *uvigo [dote] eres<br />
</*pre><br />
<br />
Si os opináis que os vais contribuir más profundamente en el proyecto, os podéis inscribir en el equipo de desarrollo sobre *www.*sourceforge.Limpio. Si os no habéis una cuenta a *sourceforge, *merci de crear una; después dirigíos a Mikel L. Forcada (*mlf [*at] *ua [dote] eres), a Sergio Ortiz (*sortiz [*at] *dlsi [dote] *ua [dote] eres) o a Xavier Gómez *Guinovart, si os habéis interesado en el par de lenguas españolas-gallegas, y explicáis *brièvement vuestras motivaciones y vuestras experiencias profesionales para inscribiros en el proyecto. El modo más corriente de contribuir <br />
es de utilizar *CVS; tanto que un miembro del proyecto, os tendréis que estar capaz de grabar directamente vuestros cambios en los diccionarios. <br />
<br />
El *ajout de las contribuciones *lexicales simples ha sido recientemente *simplifié mediante formularios sobre la web a *http://*xixona.*dlsi.*ua.Eres/prototipo/*webform/, con el fin de que los que contribuyen no tengan que tratar directamente con *XML. <br />
<br />
Os tendríais que estar consciente ya que los datos que os habéis proporcionado en el proyecto, unas veces agregadas, serán distribuidas libremente conforme a la actual licencia (*GNU *General Público *License ahora bien *Creative *Commons 2.5 atribución-*sharealike-*noncommercial, tal qué es indicada). Aseguraos que los datos proporcionados no son afectadas por ningún tipo de licencia pudiendo estar incompatible con las licencias utilizadas en este proyecto. Ningún tipo de compromiso o contrato es hecho entre os y los que desarrollan el proyecto. Si os tenéis cuestiones u os consideráis de hacer una contribución masiva, *contactez Mikel L. Forcada.<br />
<br />
<br />
== Cómo Añadir reglas de *transfert estructural (*grammaire) ==<br />
<br />
Las reglas de *transfert estructural realizan transformaciones en el texto *désambiguïsé, lo que es necesario a causa de las discrepancias *grammaticales, *syntaxiques y *lexicales entre ambas lenguas implicadas (de los cambios de género y de número quién aseguran un acuerdo en la lengua de llegada, la apuesta en orden de las palabras, de los cambios de las preposiciones,etc.). Las reglas detectan motivos (secuencias) en las formas *lexicales del texto de salida y les aplican las transformaciones correspondientes. El módulo detecta por lectura el motivo más largo izquierdo-derecha; por ejemplo, la frase « *the *big *cat » será detectada y tratada por la regla para determinante – adjetivo – nombre y no por la regla para determinar – adjetivo, porque el primer modelo es el más largo. Si dos motivos han la misma longitud, la regla aplicada es la que es definida en primero.<br />
<br />
El módulo de *transfert estructural (generado a marchar del fichero de las reglas de *transfert estructural) llama el módulo de *transfert *lexical (generado a marchar del diccionario bilingüe) colgando todo el proceso para determinar los equivalentes de la lengua de llegada a marchar de las formas *lexicales de la lengua de salida.<br />
<br />
Las reglas de *transfert estructural son comprendidas en un fichero *XML, cada una para cada dirección de traducción (por ejemplo, para la traducción del español al catalán, el fichero es *apertium-eres-*ca.*trules-Eres-*ca.*xml). Os tenéis que editar este fichero si os queréis añadir o modificar reglas de *transfert. <br />
<br />
Las reglas han un motivo y una parte de acción. El motivo precisa qué secuencias de las formas *lexicales tengan que estar detectadas y tratadas. La acción descrita las comprobaciones y las transformaciones quiénes tengan que estar hechas en sus constituyentes. Las operaciones de transformación las más corrientes (tales que el acuerdo de género y de número) son definidas en una *macroinstruction quién es llamada adentro de la regla. Al final de la parte de la acción de la regla, las formas *lexicales *résultantes de la lengua de llegada son enviadas con el fin de que sean tratadas por los módulos siguientes en el sistema de traducción.<br />
<br />
Un fichero de reglas de *transfert contiene cuatro secciones con las definiciones de los elementos utilizados en las reglas, y una quinta sección dónde las reglas actuales son definidas. Las secciones son las siguientes:<br />
<br />
* <Sección-*def-*cats>: Esta sección contiene la definición de las categorías quiénes serán utilizadas en los motivos de las reglas (es decir, el tipo de las formas *lexicales quiénes será detectado por una regla *quelconque). En lo que respecta a la regla presentada aquí-debajo, las categorías « *det » y « nombre » (determinante y nombre) tengan que estar definidas aquí. Las categorías son definidas precisando los símbolos *grammaticaux correspondientes a las formas *lexicales. Un *astérisque muestra que un o varios símbolos siguen los que han sido precisados. El ejemplo siguiente es la definición de la categoría « *det », quién agrupa los determinantes y los *prédéterminants en la misma categoría, porque jueguen el mismo rol en los objetivos de *transfert:<br />
<br />
<*pre><br />
<*def-*cat *n="*det"> <br />
<*cat-*item *tags="*det.*"/><br />
<*cat-*item *tags="*predet.*"/><br />
</*def-*cat><br />
</*pre><br />
<br />
Es también posible de definir un *lemme *quelconque como una categoría. A continuación, os podéis constatarlo con la preposición "en":<br />
<br />
<*pre><br />
<*def-*cat *n="en"><br />
<*cat-*item *lemma="en" *tags="*pr"/><br />
</*def-*cat><br />
</*pre><br />
<br />
<br />
* <Sección-*def-*attrs>: Esta sección contiene la definición de las *attributs quiénes serán utilizados adentro reglas, en la parte de acción. Os habéis necesidad de las *attributs para todas las categorías definidas a la sección precedente, cuando van a estar utilizados en la parte de acción de la regla (para verificarlas o para enviarlas en el final de la regla), así como para las otras *attributs necesarios en la regla (tales que el género y el número). Los *attributs tengan que estar definidos utilizando sus símbolos *grammaticaux correspondientes y no pueden haber de los *astérisques; su nombre tiene que estar único. El ejemplo siguiente muestra las definiciones para las *attributs « ha_*det » (para los determinantes) y « *gen » (para el género): <br />
<br />
<*pre><br />
<*def-*attr *n="Ha_*det"> <br />
<*attr-*item *tags="*det.*def"/><br />
<*attr-*item *tags="*det.*ind"/><br />
<*attr-*item *tags="*det.*dem"/><br />
<*attr-*item *tags="*det.*pos"/><br />
<*attr-*item *tags="*predet"/><br />
</*def-*attr><br />
<br />
<*def-*attr *n="*gen"> <br />
<*attr-*item *tags="M"/><br />
<*attr-*item *tags="f"/><br />
<*attr-*item *tags="*mf"/><br />
<*attr-*item *tags="*nt"/><br />
<*attr-*item *tags="*GD"/><br />
</*def-*attr><br />
</*pre><br />
* <sección-*def-*vars> : Esta sección contiene la definición de las variables utilizadas en las reglas.<br />
<*pre><br />
<*def-*var *n="*interrogativa"/><br />
</*pre><br />
<br />
* <Sección-*def-*macros> : Los *macroinstructions son definidas aquí. Contengan las secuencias de código frecuentemente utilizadas en las reglas; de este modo, los *linguistes no tengan que escribir varias veces las mismas acciones. Ha, por ejemplo, de los *macroinstructions para las operaciones de acuerdo de género y de número.<br />
<br />
* <Sección-*rules> : En esta sección las reglas de *transfert estructural son escritas.<br />
<br />
El ejemplo siguiente muestra una regla quién detecta la secuencia determinante – nombre:<br />
<br />
<*pre><br />
<*rule><br />
<*pattern><br />
<*pattern-*item *n="*det"/><br />
<*pattern-*item *n="Nombre"/><br />
</*pattern><br />
<acción><br />
<*call-*macro *n="f_*concord2"><br />
<*with-*param *pos="2"/><br />
<*with-*param *pos="1"/><br />
</*call-*macro> <br />
<*out> <br />
<leído><br />
<*clip *pos="1" *side="*tl" parte="*whole"/><br />
</leído><br />
<*b *pos="1"/> <br />
<leído><br />
<*clip *pos="2" *side="*tl" parte="*whole"/><br />
</leído> <br />
</*out> <br />
</acción><br />
</*rule><br />
</*pre><br />
<br />
Una parte de la acción efectuada en este motivo es precisada en la *macroinstruction « f_*concord2 » y definida a la sección-*def-*macros>. Cela realiza operaciones de acuerdo de género y de número: se ha un cambio de género o de número entre la lengua de salida y la lengua de llegada (en lo que respecta al nombre), el determinante cambia su género o su número *convenablement; indigna, si el género o el número son *indéterminés (« *GD » o « *ND », lo que es explicado en la sección precedente « Cómo añadir palabras en los diccionarios *monolingues y bilingües »), el nombre recibe el valor de género y de número correcto del determinante precedente. En *Apertium eres-*ca, eres-*gl *and eres-*pt *systems, hay de los *macroinstructions de acuerdo definidas para una, dos, tres o cuatro unidades *lexicales (f_*concord1, f_*concord2, f_*concord3, f_*concord4). Cuando en una regla las *macroinstructions son llamadas, tiene que estar precisado qué es la unidad *lexicale principal (la que determina *convenablement el género y el número de las otras unidades *lexicales) y qué unidades *lexicales del motivo tengan que estar *incluses en las operaciones de acuerdo, por orden de importancia. Cela es hecho con el elemento <*with-*param *pos=""/>. En la regla precedente, la unidad *lexicale principal es el nombre (posición « 2 » en el motivo) y la segunda es el determinante (posición « 1 » en el motivo).<br />
<br />
Después de haber hecho las acciones pertinentes, las formas *lexicales *résultantes son enviadas en el elemento <*out>. Cada unidad *lexicale es definida con un <*clip>. Sus *attributs significan:<br />
<br />
* *pos: Hace referencia en la posición de la forma *lexicale en el motivo. « 1 » es la primera forma *lexicale (el determinante) y « 2 » la segunda (el nombre).<br />
* *side: Indica si la forma *lexicale es en la lengua de salida (« *sl ») o en la lengua de llegada (« *tl »). Bien Sentido, las palabras son enviados siempre en la lengua de llegada; las formas *lexicales de la lengua de salida pueden estar necesitadas en una regla, cuando se *teste sus *attributs o sus características.<br />
* Parte: indica qué parte de la forma *lexicale es implicada en el '*clip'. Os podéis utilizar algunos valores *prédéfinies:<br />
-*whole: la forma *lexicale en entera (*lemme y símbolos *grammaticaux). Utilizado sólo cuando la unidad *lexicale es enviado (en un elemento <*out>).<br />
-*lem: El *lemme de la unidad *lexicale.<br />
-*lemh: La cabeza del *lemme de un *multimot con una inflexión interna.<br />
-*lemq: La cola del *lemme de un *multimot con una inflexión interna.<br />
<br />
Además de estos valores *prédéfinies, os podéis utilizar todo *attribut definido a <sección-*def-*attrs> (por ejemplo « *gen » o « ha_*det »).<br />
<br />
Los valores « *lemh » y « *lemq » son utilizados cuando de los *multimots con una inflexión interna son enviados (veis la sección « Cómo añadir de las *multimots ») para colocar la cabeza y la cola del *lemme en la correcta posición, porque el módulo precedente ha cambiado de lugar la cola justa después de la cabeza del *lemme a causa de las varias razones. En la práctica, sobre nuestro sistema, eso significa que os tenéis que utilizar estos valores en lugar de '*whole' cuando de los verbos son enviados, porque en nuestros diccionarios de los *multimots con una inflexión interna ha siempre verbos. Si os utilizáis el valor '*whole' cuando son enviados, el *multimot no sería bien formado (la cabeza y la cola del *lemme no habría la correcta posición)<br />
<br />
Por consiguiente, una regla habiendo un verbo en su motivo tiene que enviar las formas *lexicales como en ambos ejemplos siguientes:<br />
<br />
<*rule><br />
<*pattern><br />
<*pattern-*item *n="*verb"/><br />
</*pattern><br />
<Acción><br />
<*out> <br />
<leído><br />
<*clip *pos="1" *side="*tl" parte="*lemh"/><br />
<*clip *pos="1" *side="*tl" parte="ha_*verb"/><br />
<*clip *pos="1" *side="*tl" parte="tiempo"/><br />
<*clip *pos="1" *side="*tl" parte="*persona"/><br />
<*clip *pos="1" *side="*tl" parte="*gen"/><br />
<*clip *pos="1" *side="*tl" parte="*nbr"/><br />
<*clip *pos="1" *side="*tl" parte="*lemq"/><br />
</leído> <br />
</*out><br />
</acción><br />
</*rule><br />
<br />
<br />
<*rule><br />
<*pattern><br />
<*pattern-*item *n="*verb"/><br />
<*pattern-*item *n="*prnenc"/><br />
</*pattern><br />
<Acción><br />
<*out><br />
<*mlu><br />
<leído><br />
<*clip *pos="1" *side="*tl" parte="*lemh"/><br />
<*clip *pos="1" *side="*tl" parte="ha_*verb"/><br />
<*clip *pos="1" *side="*tl" parte="tiempo"/><br />
<*clip *pos="1" *side="*tl" parte="*persona"/><br />
<*clip *pos="1" *side="*tl" parte="*nbr"/><br />
</leído><br />
<leído><br />
<*clip *pos="2" *side="*tl" parte="*lem"/><br />
<*clip *pos="2" *side="*tl" parte="ha_*prnenc"/><br />
<*clip *pos="2" *side="*tl" parte="*persona"/><br />
<*clip *pos="2" *side="*tl" parte="*gen"/><br />
<*clip *pos="2" *side="*tl" parte="*nbr"/><br />
<*clip *pos="1" *side="*tl" parte="*lemq"/><br />
</leído> <br />
</*mlu><br />
</*out><br />
</acción><br />
</*rule><br />
<br />
La primera regla detecta un verbo y coloca la cola en la correcta posición, después de eso, los símbolos *grammaticaux. La unidad *lexicale es enviada todo precisando los *attributs *séparément: cabeza del *lemme, categoría *lexicale (verbo), tiempo, persona, género (para los participios), número y cola del *lemme.<br />
<br />
La segunda regla detecta un verbo seguido de un pronombre *enclitique y envío ambas formas *lexicales precisando igualmente las *attributs *séparément; la primera unidad *lexicale es constituida de: cabeza del *lemme, categoría *lexicale (verbo), tiempo, persona y número; la segunda unidad *lexicale es constituida de: *lemme, categoría *lexicale (pronombre *enclitique), persona, género, número y cola del *lemme. Ambas unidades *lexicales (verbo y pronombre *enclitique) son enviados en el elemento <*mlu>, porque tengan que alcanzar el *générateur *morphologique como una unidad *multilexicale (*multimot). <br />
<br />
<br />
Si os queréis añadir una nueva regla de *transfert, os tenéis que seguir estas etapas:<br />
<br />
#Precisáis el motivo que os queréis detectar. Recordaos que las palabras son tratados sólo una vez por regla y que éstas son tratados izquierda-derecha tomando la secuencia más larga. Por ejemplo, imagináis que os tenéis en vuestro fichero de las reglas de *transfert sólo dos reglas, la una para el motivo determinante - nombre » y el otro para el motivo « nombre - adjetivo ». La frase española « *el *valle *verde » (el valle verde) sería detectada y tratada para la primera regla y no por la segunda. Os tendréis que añadir una regla para el motivo determinante – nombre - adjetivo » si os deseáis que las tres unidades *lexicales sean tratadas en el mismo motivo. <br />
#Describís las operaciones que os queréis realizar en el motivo. Sobre *Apertium eres-*ca, eres-*gl *and eres-*pt, de las operaciones de acuerdo simples (acuerdo de género y de número) son fáciles a realizar en una regla mediante una *macroinstruction. Para hacer otras operaciones, os tenéis que utilizar elementos más complicados; para una descripción más detallada del lenguaje empleado para crear reglas, consultáis la sección 3.4.2 de la documentación del sistema. Os podéis igualmente leer la *DTD del fichero de las reglas de *transfert estructural (*transfer.*dtd) Proporcionada con el lote de *Apertium, en el cual todos los elementos del lenguaje son descritos en inglés.<br />
#Enviáis las unidades *lexicales del motivo en la lengua de llegada en el elemento <*out>. Cada unidad *lexicale tiene que estar *incluse en el elemento leído>. Si dos o varias unidades tengan que estar generadas como una unidad *multilexicale (sólo para los pronombres *enclitiques en los pares de lenguas tratadas hasta presente), tengan que estar agrupadas en el elemento <*mlu>.<br />
Todas las palabras detectados por una regla (quién forman parte del motivo) tengan que estar enviados al final de la regla para que el módulo siguiente (el *générateur) los recibe. Si una unidad *lexicale es detectada para un motivo y qué no es *incluse en el elemento <*out>, no será generada.<br />
<br />
<br />
== Cómo Añadir datos en el *tagger de la parte del discurso ==<br />
<br />
A escribir.<br />
<br />
<br />
== Entrenamiento del *tagger de la parte del discurso ==.{#Nom|*Tagger *training}}<br />
<br />
A escribir.<br />
<br />
== Detección de los errores ==<br />
<br />
Es fácil de cometer errores al momento de añadir nuevas palabras o de las reglas de *transfert en el sistema de *Apertium.<br />
<br />
Es posible qué en el momento de *compiler de los nuevos ficheros, el sistema anuncia un mensaje de error. En este caso, es un error de uso (el olvido de una etiqueta *XML, una etiqueta quién no es permitida en un cierto contexto, etc.). Os no habéis qué ir al número de línea indicada para el mensaje de error y *compiler nuevamente. Otros tipos de errores no son detectados en el momento de *compiler, pero eso puede provocar que el sistema no traduzca bien una palabra o qué da una secuencia *textuelle incomprensible. Hay errores lingüísticos quiénes pueden estar detectadas y *corrigées a la ayuda de los consejos dados en este capítulo. La información siguiente es para los usuarios de Linux, porque, de momento, *Apertium no trabaja qué con este HUESO.<br />
<br />
Como todos los datos tratadas por el sistema, desde el texto de salida hacia el texto de llegada, circulan entre los ocho módulos del sistema en formato de texto plano, es posible de arrestar el flujo de texto en cualquier momento con el fin de saber las entradas y las salidas de los datos de un cierto módulo. Os no habéis qué a pegar los órdenes correctos en el terminal utilizando una estructura *pipeline para que la salida estándar de un módulo sea utilizada como la entrada del módulo siguiente.<br />
<br />
Utilizando los órdenes *echo o *cat, os podéis enviar un texto en un o varios módulos para analizar sus salidas y detectar así el origen del error. Os tenéis que ir al repertorio dónde los datos lingüísticos se han guardado y pegar los órdenes explicados aquí-debajo.<br />
<br />
===La salida de la *analysateur *morphologique===<br />
<br />
Para saber cómo una palabra es analizado por el traductor, pegáis el ejemplo siguiente en el terminal (ejemplo de la palabra catalana « *gener »):<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin<br />
</*pre><br />
<br />
Os podéis reemplazar *ca-eres por la dirección de traducción que os queréis *tester.<br />
<br />
La salida a *Apertium tendría que estar:<br />
<br />
<*pre*gener/*gener<*n><M><*sg./.<Siente>$[][]<br />
</*pre><br />
<br />
La secuencia *structurelle es: <código*word/*lemma<*morphological *analysis>$</código>. La etiqueta <código><siente></código> es el análisis de la parada completa, porque todo final de frase es representada por una parada completa en el sistema, que este sea indicado de modo explícito o en la frase.<br />
<br />
El análisis de una palabra desconocida es (ignorando la información de parada completa):<br />
<br />
<*pre*genoma/**genoma$<br />
</*pre><br />
<br />
Y el análisis de una palabra ambigua:<br />
<br />
<*preColocó/colocó<*n><f><*sg>/*casar<*vblex><*pri><*p3><*sg>/*casar<*vblex><*imp><*p2><*sg>$<br />
</*pre><br />
<br />
Cada forma *lexicale (*lemme más el análisis *morphologique) es presentada como un análisis posible de la palabra « colocó »<br />
<br />
===La salida del *tagger===<br />
<br />
Si os queréis conocer la salida del *tagger para el texto de la lengua de salida, pegáis el ejemplo siguiente en el terminal (ejemplo para la dirección catalana-español):<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob<br />
</*pre><br />
<br />
La salida será:<br />
<*pre*gener<*n><m><*sg.<Siente>$[][]<br />
</*pre><br />
<br />
La salida de una palabra ambigua será como el ejemplo precedente, porque el *tagger escogido una forma *lexicale. Por consiguiente, la salida de « colocó » en catalán será, por ejemplo (según el contexto):<br />
<br />
<*preColocó<*n><f><*sg.<Siente>$[][]<br />
</*pre><br />
<br />
===La salida del prado-*transfert===<br />
<br />
Este módulo realiza algunos cambios a los *multimots (desplaza la cola del *lemme de un *multimot con una inflexión interna justa después de la cabeza del *lemme):<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer<br />
</*pre><br />
Como « *gener » no es un *multimot en los diccionarios, este módulo no cambia sus entradas.<br />
<br />
===La salida del *transfert estructural===<br />
<br />
Para saber cómo una frase o una palabra es traducido hacia la lengua de llegada y cómo son tratadas por las reglas de *transfert estructural, pegáis el ejemplo siguiente en el terminal:<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer | *apertium-*transfer *trules-*ca-Eres.*xml *trules-*ca-Eres.*bin *ca-Eres.*autobil.*bin<br />
</*pre><br />
<br />
La salida para la palabra catalana « *gener » será:<br />
<br />
<*pre*enero<*n><M><*sg>$<br />
</*pre><br />
<br />
El hecho de analizar cómo una frase o una palabra ha salido de este módulo puedes ayudar a detectar errores en el diccionario bilingüe o en las reglas de *transfert estructural. Los errores más corrientes de los diccionarios bilingües son: dos equivalentes para la misma forma *lexicale de la lengua de salida, o la mala elección de los símbolos *morphologiques. Los errores provocados por las reglas de *transfert estructural varían mucho según las acciones realizadas por las reglas.<br />
<br />
===La salida del *générateur *morphologique===<br />
<br />
Para saber cómo una palabra es generado por el sistema, pegáis el ejemplo siguiente en el terminal:<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer | *apertium-*transfer *trules-*ca-Eres.*xml *trules-*ca-Eres.*bin *ca-Eres.*autobil.*bin | *lt-*proc -G *ca-eres.*autogen.*bin<br />
</*pre><br />
<br />
Con este orden os podéis detectar errores de generación debida en una entrada incorrecta en el diccionario *monolingue de la lengua de llegada o causadas por la discrepancia entre la salida del diccionario bilingüe (la salida del módulo precedente) y la entrada del diccionario *monolingue.<br />
<br />
La salida correcta para la entrada « *gener » sería:<br />
<*pre><br />
*enero.[][]<br />
</*pre><br />
En este caso, no hay símbolos *morphologiques y la palabra aparece desviado. <br />
<br />
<br />
===La salida del *post-*générateur===<br />
<br />
No es muy corriendo de haber errores debidos al *post-*générateur, gracias a su pequeño tamaño y al hecho qué es modificado raramente después del *ajout de las combinaciones habituales, pero os podéis también *tester cómo el texto de la lengua de salida suerte de este módulo, pegando:<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer | *apertium-*transfer *trules-*ca-Eres.*xml *trules-*ca-Eres.*bin *ca-Eres.*autobil.*bin | *lt-*proc -G *ca-eres.*autogen.*bin | *lt-*proc -*p *ca-Eres.*autopgen.*bin<br />
</*pre><br />
<br />
===La salida final===<br />
<br />
Os podéis poner todos los módulos del sistema en una estructura de *pipeline y ver el pasaje del texto de la lengua de salida por todos los módulos y su traducción hacia la lengua de llegada. Os no habéis qué añadir el *reformatter al orden precedente:<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer | *apertium-*transfer *trules-*ca-Eres.*xml *trules-*ca-Eres.*bin *ca-Eres.*autobil.*bin | *lt-*proc -G *ca-eres.*autogen.*bin | *lt-*proc -*p *ca-Eres.*autopgen.*bin | *apertium-*retxt<br />
</*pre><br />
Es el mismo que el *shell *script « *apertium » proporcionado por el lote de *Apertium: <br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium -D . *ca-Eres<br />
</*pre><br />
<br />
(La parada completa indica el repertorio dónde los datos lingüísticos son guardadas).<br />
<br />
Bien Sentido, en lugar de pegar todos los órdenes, quiénes han sido presentados, a cada vez que os habéis necesidad de *tester una traducción, os podéis crear un *shell *script para cada acción y utilizarlo para *tester la salida de cada módulo.<br />
<br />
Ejemplos de los errores<br />
<br />
A escribir.<br />
<br />
== Cómo Generar un nuevo sistema *Apertium a marchar de los datos modificados ==<br />
<br />
Si os hacéis cambios a cada fichero de los datos lingüísticos de *Apertium (los diccionarios, las reglas de *transfert, el fichero o los *corpus del *tagger, los diccionarios de *post-generación), los cambios no serán efectuados hasta que os *recompilez los módulos. Para hacerlo, pegáis '*make' en el repertorio dónde los datos lingüísticos son guardadas (*apertium-eres-*ca, *apertium-eres-*gl o lo que pueda estar aplicable) para que el sistema genera nuevos ficheros *binaires.<br />
<br />
Si los cambios han sido hechos en el fichero del *tagger o en los *corpus utilizados para entrenar el *tagger, os habréis también necesidad de entrenar nuevamente el *tagger. En el mismo repertorio mencionado aquí-encima, después de haber pegado '*make', pegáis '*make tren' con el fin de efectuar el entrenamiento.<br />
<br />
Ahora, el traductor *Apertium trabajará con los datos recientemente añadidos.<br />
<br />
<br />
==*See *also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Fuente ==<br />
<br />
*The Original versión *was *transferred *from fuente *http://*apertium.*sourceforge.Limpio/*extending.html.<br />
<br />
[[*Category:Documentación]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3383Comment contribuer à une paire de langues existante2008-01-14T10:15:13Z<p>172.17.30.131: /* See also */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, nous vous décrivons les fichiers que vous pouvez trouver dans ce répertoire.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Contient les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Contient les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Au moment de développer ou d'adapter Apertium, l'opération qui sera réalisée plus probablement sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créer dans ces trois dictionnaires partagent une structure commune.<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (à la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots à la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Entraînement du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant dans le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
===La sortie du générateur morphologique===<br />
<br />
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant dans le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.<br />
<br />
La sortie correcte pour l'entrée « gener » serait:<br />
<pre><br />
enero.[][]<br />
</pre><br />
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi. <br />
<br />
<br />
===La sortie du post-générateur===<br />
<br />
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===La sortie finale===<br />
<br />
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
C'est le même que le shell script « apertium » fourni par le lot d'Apertium: <br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(L'arrêt complet indique que le répertoire où les données linguistiques sont gardées).<br />
<br />
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.<br />
<br />
Exemples des erreurs<br />
<br />
À écrire.<br />
<br />
== Comment générer un nouveau système Apertium à partir des données modifiées ==<br />
<br />
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui puisse être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.<br />
<br />
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Flyer&diff=3382Flyer2008-01-14T10:13:44Z<p>172.17.30.131: /* Applications */</p>
<hr />
<div>{{TOCD}}<br />
=English=<br />
Apertium ([http://www.apertium.org http://www.apertium.org]) is a free software (GPL) machine translation platform; it was initially designed to translate<br />
between the Romance languages of the Iberian peninsula, but is now being used for more distant pairs.<br />
<br />
==Who is developing it ?==<br />
<br />
The Apertium engine is being developed in the Transducens research group at the Department de Llenguatges i Sistemes<br />
Informàtics within the Universitat d'Alacant and also by the spin-off company Prompsit Language Engineering. Linguistic data are being developed by Transducens, the Seminario<br />
de Lingüística Informàtica of the Universidade de Vigo, the Institut Universitari de Lingüística Aplicada at the<br />
Universitat Pompeu Fabra in Barcelona, along with a number of companies including Prompsit Language Engineering, Imaxin|software and Eleka Ingenieritza Linguistikoa, and independent free software developers<br />
both in Spain and abroad.<br />
<br />
==Funding==<br />
<br />
The Spanish Ministry of Industry, Tourism and Commerce funded the development of the engine and three initial<br />
language pairs: Spanish&mdash;Catalan, Spanish-Galician and Spanish-Portuguese. The project has also received funding<br />
from: the Universitat d'Alacant, the Generalitat de Catalunya (Government of Catalonia) to improve the engine for distant pairs and to develop language pairs such as English-Catalan, Occitan-Catalan and Occitan-Spanish, the Romanian Ministry of Foreign Affairs to develop translators between Spanish-Romanian and Catalan-Romanian.<br />
<br />
==Currently supported languages==<br />
<br />
There are currently seven supported translation pairs published using the Apertium platform. These are:<br />
<br />
*Spanish-Catalan<br />
*Spanish-Portuguese<br />
*Spanish-Galician<br />
*Catalan-French<br />
*Catalan-Romanian<br />
*Spanish-Romanian<br />
*English-Catalan<br />
<br />
Other pairs currently under active development, but without a stable release include: French-Spanish, English-Afrikaans, English-Welsh, Catalan-Romanian, Spanish-Basque and English-Polish. Stable pairs (and unstable ones at your own risk) can be tested through our web interface at http://xixona.dlsi.ua.es/apertium/.<br />
<br />
==How good is it?==<br />
<br />
The quality of the final translations depends greatly on the amount of time spent in development,<br />
and the closeness of the languages. For example Spanish-Catalan has approximately 95% accuracy, but Spanish-Portuguese<br />
has around 90%. For less related and unreleased pairs such as English-Afrikaans, the accuracy, excluding unknown<br />
words is somewhere around 70%. <br />
<br />
==Downloading==<br />
<br />
Current versions of the engine, linguistic data and documentation can be found on our SourceForge project page ([http://www.sf.net/projects/apertium/ http://www.sf.net/projects/apertium/]). Further<br />
documentation and discussion can be found both on our wiki ([http://xixona.dlsi.ua.es/wiki/ http://xixona.dlsi.ua.es/wiki/]) and mailing list ([mailto:apertium-stuff@lists.sf.net apertium-stuff@lists.sf.net]).<br />
<br />
==Development==<br />
<br />
The project is always looking for developers who are interested in improving the engine and existing data, working on new language pairs (especially those involving less-used or under-resourced languages), creating interfaces,<br />
or adapting the software to fit your needs. Existing free (GPL) data and corpora easily reusable to feed Apertium's dictionaries are also welcome.<br />
<br />
==Applications==<br />
<br />
*Multilingual management of web content such as media<br />
*Rapid localisation of free software<br />
*Translation of documentation between a more resourced language and a less resourced language<br />
<br />
=Français=<br />
Apertium (http://www.apertium.org) est une plate-forme de traduction automatique de code ouvert (GPL) initialement conçue pour les langues romanes dans la Péninsule Ibérique, mais qui a récemment été développée pour pouvoir traiter des paires des langues plus divergentes.<br />
<br />
==Qui le développe?==<br />
<br />
Le moteur d'Apertium est développé aussi bien dans le groupe de recherche Transducens del Departament de Llenguatges i Sistemes Informàtics de la Universitat d'Alacant que dans la spin-off Prompsit Language Engineering. Transducens et Prompsit prennent aussi en charge le développement linguistique avec le Seminario de Lingüística Informática de la Universida de Vigo, l'Institut Universitari de Lingüística Aplicada de la Universitat Pompeu Fabra de Barcelona et d'autres entreprises comme imaxin|software et Eleka Ingeniaritza Linguistikoa. Des développeurs volontaires externes tant en Espagne qu'à l'étranger y collaborent.<br />
<br />
==Financement==<br />
<br />
Le Ministère espangol de l'industrie, du Tourisme et du Commerce a partiellement financé le développement du moteur et des deux des paires des langues initiales: espagnol-catalan et espagnol-galicien. Le projet a aussi été financé par: la Universidad de Alicante (paire espagnol-portugais et d'autres), la Generalitat de Catalunya (paires anglais-catalan, occitain-catalan, français-catalan et occitain-espagnol, amélioration du moteur pour le traitement de langues éloignées), le Ministère d'affaires étrangères de la Roumanie (paires espagnol-roumain et catalan-roumain), etc.<br />
<br />
==Paires de langues disponibles==<br />
<br />
Actuellement, nous disposons de sept paires des langues utilisant la plate-forme Apertium:<br />
<br />
*Espagnol-Catalan<br />
*Espagnol-Portugais<br />
*Espagnol-Galicien<br />
*Catalan-Français<br />
*Catalan-Occitain<br />
*Espagnol-Roumain<br />
*Anglais-Catalan<br />
<br />
D'autres paires des langues développées activement, mais n'ayant pas encore une version stable sont:<br />
français-espagnol, anglais-afrikáans, anglais-gallois, catalan-roumain, espagnol-basque et anglais-polonais. Les paires stables (et instables n'assurant pas encore) peuvent être testés sur notre site http://xixona.dlsi.ua.es/apertium/.<br />
<br />
==Quelle est la qualité?==<br />
<br />
La qualité des traductions finales dépend, dans une grande mesure, du temps mis dans le développement d'une paire déterminée et de la proximité des langues. Par exemple, entre l'espagnol et le catalan on atteint un pourcentage de succès de 95%; entre l'espagnol et le portugais de 90%. Pour les langues plus éloignées et sans version stable comme l'anglais-afrikáans ce pourcentage, sans compter les mots inconnus, est environ de 70%.<br />
<br />
==Téléchargements==<br />
<br />
Les versions les plus récentes du moteur, les donnés linguistiques, la documentation et d'autres outils peuvent être téléchargés sur le site du projet à SourceForge ([http://www.sf.net/projects/apertium/ http://www.sf.net/projects/apertium/]). Vous pouvez trouver de la documentation et plus d'information tant sur notre wiki ([http://xixona.dlsi.ua.es/wiki/ http://xixona.dlsi.ua.es/wiki/]), que sur notre liste de distribution ([mailto:apertium-stuff@lists.sf.net apertium-stuff@lists.sf.net]).<br />
<br />
==Développement==<br />
<br />
Le projet cherche toujours des développeurs intéressés à améliorer le moteur et les données déjà existantes, à travailler sur des nouvelles paires des langues (notamment celles dont les langues sont minoritaires ou ayant peu de ressources), à créér des interfaces ou à adapter le logiciel à des besoins particulières. Merci de rendre disponible les données et de faciliter des corpus de code ouvert et réutilisables afin d'améliorer les dictionnaires d'Apertium.<br />
<br />
==Applications==<br />
<br />
*Gestion des webs avec des contenus multilingues utilisés, par exemple, par les médias<br />
*Localisation rapide de logiciel de code ouvert<br />
*Traduction de documentation entre les langues ayant beaucoup de ressources et les langues ayant peu de ressources<br />
<br />
=Македонски=<br />
Apertium ([http://www.apertium.org http://www.apertium.org]) слободна платформа за машински превод на јазици; првично е дизајниран да преведува помеѓу Романски јазици од Иберискиот полуостров, но сега се користи за се подалечни јазици.<br />
<br />
==Кој го развива ?==<br />
<br />
Apertium погонот е развиван од Transducens истражувачката група од Department de Llenguatges i Sistemes Informàtics во склоп на Universitat d'Alacant и исто така од компанијата Prompsit Language Engineering. Лингвистичките податоци се развиваат од Transducens, the Seminario de Lingüística Informàtica од Universidade de Vigo, на институтот Universitari de Lingüística Aplicada од Universitat Pompeu Fabra во Barcelona, заедно со поголем број на компании вклучувајќи ги и Prompsit Language Engineering, Imaxin|software и Eleka Ingenieritza Linguistikoa, како и независни развивачи на слободен софтвер - како од Шпанија така и од странство.<br />
<br />
==Финансирање==<br />
<br />
Шпанското министерство за индустрија, туризам и комерција го финансираше развојот на погонот и три иницијални јазични парови: Шпанско-Каталонски, Шпанско-Галски и Шпанско-Португалски. Проектот исто така, има добиено средства од: Universitat d'Alacant, Generalitat de Catalunya (Владата на Каталонија) за подобрување на погонот за подалечни парови и за развивање на јазични парови како што се Англиско-Каталонски, Окситански-Каталонски и Окситански-Шпански, Романското министерство за надворешни работи за развивање на Шпанско-Романски и Каталонско-Романски јазик.<br />
<br />
==Подржани јазици во моментов==<br />
<br />
Во моментов достапни се седум јазични парови, кои можат да бидат преведувани преку Apertium платформата. Тоа се:<br />
<br />
*Шпанско-Каталонски<br />
*Шпанско-Португалски<br />
*Шпанско-Галициски<br />
*Каталонско-Француски<br />
*Каталонско-Окситонски<br />
*Шпанско-Романски<br />
*Англиско-Каталонски<br />
<br />
Други парови кои во моментов се во развојна фаза се: Француско-Шпански, Англиско-Африкански, Англиско-Велшки, Каталонско-Романски, Шпанско-Баскиски и Англиско-Полски. Стабилните парови (како и оние во развој, под сопствен ризик) може да бидат тестирани преку нашата веб апликација на http://xixona.dlsi.ua.es/apertium/.<br />
<br />
==Колку е добар?==<br />
<br />
Квалитетот на крајниот превод зависи во голема мера од времето поминато во развој и близината на јазиците. На пример Шпанско-Каталонскиот е преведуван приближно со 95% точност, но Шпанско-Португалскиот со околу 90%. За помалку поврзани јазици како што е Англиско-Африкански, точноста е околу 70%(исклучувајќи ги непознатите зборови).<br />
<br />
==Преземање==<br />
<br />
Актуелните верзии на погонот, лингивистичките податоци и документацијата се достапни преку SourceForge страната на нашиот проект([http://www.sf.net/projects/apertium/ http://www.sf.net/projects/apertium/]). Понатаму, документација и дискусии може да бидат најдени на нашето вики([http://xixona.dlsi.ua.es/wiki/ http://xixona.dlsi.ua.es/wiki/]) и преку мејлинг листата ([mailto:apertium-stuff@lists.sf.net apertium-stuff@lists.sf.net]).<br />
<br />
==Развој==<br />
<br />
На проектот секогаш му се потребни програмери кои се заинтересирани до го подобрат погонот и постоечките податоци, работење на нови јазични парови (посебно на оние кои не се користат често или нема доволно ресурси за нив), за креирање на интерфејс програми или адаптирање на софтверот на твоите потреби. Постоечки слободни(GPL) податоци и корпус, кој што лесно може да се вметне во речниците на Apertium се исто така добредојдени.<br />
<br />
==Употреба==<br />
<br />
*Повеќејазичен менаџмент на веб содржина<br />
*Брза локализација на слободен софтвер<br />
*Превод на документација помеѓу повеќе застапени и помалку застапени јазици<br />
<br />
=Castellano=<br />
Apertium (http://www.apertium.org) es una plataforma de traducción automática de código abierto (GPL) inicialmente diseñada para las lenguas romances de la Península Ibérica, pero que ha sido recientemente ampliada para poder tratar pares de lenguas más divergentes.<br />
<br />
==¿Quién lo desarrolla?==<br />
<br />
El motor de Apertium se desarrolla tanto dentro del grupo de investigación Transducens del Departament de Llenguatges i Sistemes Informàtics de la Universitat d'Alacant como de la spin-off Prompsit Language Engineering. Transducens y Prompsit se encargan también del desarrollo lingüístico junto con el Seminario de Lingüística Informática de la Universidade de Vigo, el Institut Universitari de Lingüística Aplicada de la Universitat Pompeu Fabra de Barcelona y otras empresas como imaxin|software y Eleka Ingeniaritza Linguistikoa. También recibe las colaboraciones de desarrolladores externos voluntarios tanto de dentro como de fuera de España.<br />
<br />
==Financiación==<br />
<br />
El Ministerio de Industria, Turismo y Comercio finació parcialmente el desarrollo del motor y de dos de los pares de lenguas iniciales: español-catalán y español-gallego. El proyecto también ha sido financiado por: la Universidad de Alicante (par español-portugués y otros), la Generalitat de Catalunya (mejora del motor para el tratamiento de lenguas distantes y pares inglés-catalán, occitano-catalán, francés catalán y occitano-español), el Ministerio de Asuntos Exteriores de Rumanía (pares español-rumano y catalán-rumano), etc.<br />
<br />
==Pares de lenguas disponibles==<br />
<br />
Actualmente hay siete pares de lenguas disponibles que usan la plataforma Apertium:<br />
<br />
*Español-Catalán<br />
*Español-Portugués<br />
*Español-Gallego<br />
*Catalán-Francés<br />
*Catalán-Occitano<br />
*Español-Rumano<br />
*Inglés-Catalán<br />
<br />
<br />
Otros pares de lenguas que están siendo activamente desarrollados pero no poseen aún una versión estable son: francés-español, inglés-afrikáans, inglés-galés, catalán-rumano, español-euskera e inglés-polaco. Los pares estables (e inestables aunque sin garantías) se pueden probar a través de nuestra web en http://xixona.dlsi.ua.es/apertium/.<br />
<br />
==¿Qué calidad ofrecen?==<br />
<br />
La calidad de las traducciones finales depende, en gran medida, del tiempo invertido en el desarrollo de un par determinado y la cercanía de las lenguas. Por ejemplo, entre español y catalán se consigue un porcentaje de éxito del 95%; entre español y portugués del 90%. Para lenguas más alejadas y sin versión estable como inglés-afrikáans este porcentaje, sin contar las palabras desconocidas, está alrededor del 70%.<br />
<br />
==Descargas==<br />
<br />
Las versiones más recientes del motor, datos lingüísticos, documentación y otras herramientas se pueden descargar de la página del proyecto en SourceForge ([http://www.sf.net/projects/apertium/ http://www.sf.net/projects/apertium/]). Se puede encontrar documentación e información adicional tanto en nuestro wiki ([http://xixona.dlsi.ua.es/wiki/ http://xixona.dlsi.ua.es/wiki/]) como en nuestra lista de distribución ([mailto:apertium-stuff@lists.sf.net apertium-stuff@lists.sf.net]).<br />
<br />
==Desarrollo==<br />
<br />
El proyecto busca continuamente desarrolladores intesesados en mejorar el motor y los datos existentes, en trabajar en nuevos pares de lenguas (especialmente aquellos que incluyen lenguas minoritarias o con pocos recursos), en crear interfaces o adaptar el software a necesidades particulares. También se agradece la disponibilización de datos y corpora libres (GPL) que sean reutilizables para mejorar los diccionarios de Apertium.<br />
<br />
==Aplicaciones==<br />
<br />
*Gestión de webs con contenidos multilingües usadas, por ejemplo, por medios de comunicación<br />
*Localización rápida de software libre<br />
*Traducción de documentación entre lenguas con muchos recursos y lenguas con pocos recursos<br />
<br />
=Português=<br />
<br />
Apertium ([http://www.apertium.org http://www.apertium.org]) é uma plataforma de tradução automática de código aberto (GPL) que foi projetada inicialmente para traduzir entre línguas românicas da península Ibérica, no entanto atualmente seu uso se expandiu para pares de línguas mais distantes<br />
<br />
==Quem o desenvolve?==<br />
A máquina de Apertium está sendo desenvolvida pelo grupo Transducens formado por pesquisadores do departamento de linguagens e sistemas informáticos da Universidade de Alicante em uma associação com a empresa Prompsit Language Engineering, uma spin-off desta mesma Universidade. O grupo Transducens e Prompsit também são responsáveis pelo desenvolvimento dos dados lingüísticos junto com o Seminario de Lingüística Informàtica da Universidade de Vigo, o Institut Universitari de Lingüística Aplicada da Universitat Pompeu Fabra de Barcelona e empresas como Imaxin|software e Eleka Ingenieritza Linguistikoa. Também existe um considerável aporte voluntário de desenvolvedores de software livre tanto espanhóis como estrangeiros.<br />
<br />
==Financiamento==<br />
<br />
O Ministério Espanhol de Indústria, Turismo e Comércio financiou parcialmente o desenvolvimento inicial do motor e dos dados lingüísticos dos primeiros pares de línguas: espanhol-catalão e espanhol-galego. O projeto também obteve outras financiações: da Universidade de Alicante (para o par espanhol-português e outros), da Generalitat de Catalunya (melhora do motor para o tratamento de línguas distantes e pares inglês- catalão, occitano-catalão, francês-catalão e occitano-espanhol), do Ministério de Assuntos Exteriores da Romênia (pares espanhol-romeno e catalão-romeno), etc.<br />
<br />
==Pares de línguas disponíveis==<br />
<br />
Atualmente são oferecidos sete pares de língua que fazem uso da plataforma Apertium:<br />
*Espanhol-Catalão<br />
*Espanhol-Português<br />
*Espanhol-Galego<br />
*Catalão-Francês<br />
*Catalão-Romeno<br />
*Espanhol-Romeno<br />
*Inglês-Catalão<br />
<br />
Outros pares de línguas estão em fase de desenvolvimento, porém ainda não apresentam uma versão estável. São eles: Francês-Espanhol, Inglês-Africâner, Inglês-Galês, Catalão-Romeno, Espanhol-Vasco e Inglês-Polonês. As versões estáveis (e as inestáveis, embora sem garantias) podem ser testadas através de nossa web no endereço http://xixona.dlsi.ua.es/apertium/.<br />
<br />
==Que qualidade oferece?==<br />
<br />
A qualidade das traduções depende basicamente do tempo investido no desenvolvimento de um determinado par de línguas e da proximidade existente entre elas. Por exemplo Espanhol-Catalão tem um percentual de acerto de 95% enquanto Espanhol-Português tem aproximadamente um 90%. No entanto, para línguas não emparentadas em versões inestáveis como o par Inglês-Africâner, o grau de acerto, excluindo palavras desconhecidas, é de aproximadamente 70%.<br />
<br />
==Descargas==<br />
<br />
A plataforma Apertium em sua versão atualizada, tanto de motor, quanto dos dados lingüísticos e da documentação pode ser encontrada na página do projeto em SourceForge ([http://www.sf.net/projects/apertium/ http://www.sf.net/projects/apertium/]). Para mais informações e debates entre no nosso Wiki ([http://xixona.dlsi.ua.es/wiki/ http://xixona.dlsi.ua.es/wiki/]) ou na nossa lista de distribuição ([mailto:apertium-stuff@lists.sf.net mailto:apertium-stuff@lists.sf.net]).<br />
<br />
==Desenvolvimento==<br />
<br />
O projeto está constantemente em busca de desenvolvedores que estejam interessados em melhorar a máquina e os datos existentes, trabalhando em um par de línguas novo (principalmente aqueles que envolvem línguas menos usadas ou com menos recursos), criando interfaces,ou adaptando o software para suas próprias necessidades. Também são bem vindas contribuições de corpus e dados livres (GPL) que possam ser reutilizáveis a fim de aprimorar os dicionários de Apertium.<br />
<br />
==Aplicações==<br />
<br />
*Administração de webs com conteúdos multilíngües usadas, por exemplo, por meios de comunicação<br />
*Locaização rápida de software livres <br />
*Tradução de documentos entre línguas com muito e pouco recurso.<br />
<br />
=Català=<br />
<br />
=Afrikaans=<br />
Apertium ([http://www.apertium.org http://www.apertium.org]) is vrye sagteware (GPL) vir masjienvertaling. Hoewel dit oorspronklik ontwikkel is om tussen Romaanse tale van die Iberiese Skiereiland te vertaal, word dit tans aangewend vir tale wat verder weg geleë is.<br />
<br />
==Wie ontwikkel dit?==<br />
<br />
Die Apertium-enjin word tans ontwikkel deur die Transducens-navorsingsgroep van die Departement van Sagteware en Rekenaarstelsels aan die Universiteit van Alicante, asook by die maatskappy Prompsit Language Engineering wat daaruit ontstaan het. Die linguistiese data word ontwikkel deur Transducens, die Rekenaarlinguistiek-groep (SLI) van die Universiteit van Vigo, die Universitêre Instituut vir Toegepaste Linguistiek van die Pompeu Fabra Universiteit in Barcelona, 'n aantal maatskappye, waaronder Prompsit Language Engineering, Imaxin|software en Eleka Ingenieritza Linguistikoa, en onafhanklike ontwikkelaars van vrye sagteware in Spanje en oorsee.<br />
<br />
==Befondsing==<br />
<br />
Die ontwikkeling van die vertaalenjin en die drie aanvanklike taalpare, Spaans-Katalaans, Spaans-Galisies en Spaans-Portugees, is deur die Spaanse Ministerie van Nywerheid, Toerisme en Handel befonds. Die projek het ook fondse ontvang van die Universiteit van Alicante en die regering van Katalonië, om die vertaalenjin vir ander taalpare te verbeter en om taalpare soos Engels-Katalaans, Oksitaans-Katalaans en Oksitaans-Spaans te help ontwikkel, asook van die Roemeense Ministerie van Buitelandse Sake, om vertaalprogramme vir Spaans-Roemeens en Katalaans-Roemeens te help ontwikkel.<br />
<br />
==Tale waarmee dit tans werk==<br />
<br />
Die Apertium-platform werk tans met sewe taalpare. Hulle is:<br />
<br />
* Spaans-Katalaans<br />
* Spaans-Portugees<br />
* Spaans-Galisies<br />
* Katalaans-Frans<br />
* Katalaans-Oksitaans<br />
* Spaans-Roemeens<br />
* Engels-Katalaans<br />
<br />
Ander taalpare wat tans aktief ontwikkel word, maar wat nog nie amptelik beskikbaar gestel is nie, is Frans-Spaans, Engels-Afrikaans, Engels-Wallies, Katalaans-Roemeens, Spaans-Baskies en Engels-Pools. Taalpare met werkende weergawes (asook tale met half-werkende weergawes) kan beproef word by http://xixona.dlsi.ua.es/apertium/.<br />
<br />
==Hoe goed is die vertaling?==<br />
<br />
Die gehalte van die eindvertalings hang in 'n groot mate af van die hoeveelheid ontwikkeling wat reeds gedoen is, asook hoe naby die tale aan mekaar verwant is. Die enjin vir Spaans-Katalaans is byvoorbeeld 95% akkuraat, en Spaans-Portugees is omtrent 90% akkuraat. Tale wat nie so ná aan mekaar verwant is nie, byvoorbeeld Engels-Afrikaans, se akkuraatheid is ongeveer 70% (mits alle woorde in die teks bekend is). <br />
<br />
==Waar om af te laai==<br />
<br />
Huidige weergawes van die enjin, linguistiese data en dokumentasie kan afgelaai word op ons SourceForge-projekbladsy ([http://www.sf.net/projects/apertium/ http://www.sf.net/projects/apertium/]). Ander dokumentasie en vorige gesprekke kan op ons wiki ([http://xixona.dlsi.ua.es/wiki/ http://xixona.dlsi.ua.es/wiki/]) en poslys ([mailto:apertium-stuff@lists.sf.net apertium-stuff@lists.sf.net]) verkry word.<br />
<br />
==Ontwikkeling==<br />
<br />
Die projek verwelkom ontwikkelaars wat graag die enjin en bestaande data wil help verbeter, aan nuwe taalpare wil begin werk (veral tale wat minder algemeen is of waarvoor daar min hulpbronne bestaan), koppelvlakke wil skryf, of die sagteware vir hul eie behoeftes wil aanpas. Bestaande vrye (GPL) data en korpusse wat maklik vir Apertium se woordeboeke aangepas kan word, is ook welkom.<br />
<br />
==Toepassings==<br />
<br />
* Veeltalige hantering van webinhoud soos media<br />
* Vinnige lokalisasie van vrye sagteware<br />
* Vertaling van dokumentasie tussen meer gebruikte en minder gebruikte tale<br />
<br />
[[Category:Promotion HQ]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3139Comment contribuer à une paire de langues existante2007-12-19T14:52:23Z<p>172.17.30.131: /* La sortie finale */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, nous vous décrivons les fichiers que vous pouvez trouver dans ce répertoire.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Contient les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Contient les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Au moment de développer ou d'adapter Apertium, l'opération qui sera réalisée plus probablement sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créer dans ces trois dictionnaires partagent une structure commune.<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (à la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots à la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Entraînement du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant dans le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
===La sortie du générateur morphologique===<br />
<br />
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant dans le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.<br />
<br />
La sortie correcte pour l'entrée « gener » serait:<br />
<pre><br />
enero.[][]<br />
</pre><br />
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi. <br />
<br />
<br />
===La sortie du post-générateur===<br />
<br />
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===La sortie finale===<br />
<br />
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
C'est le même que le shell script « apertium » fourni par le lot d'Apertium: <br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(L'arrêt complet indique que le répertoire où les données linguistiques sont gardées).<br />
<br />
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.<br />
<br />
Exemples des erreurs<br />
<br />
À écrire.<br />
<br />
== Comment générer un nouveau système Apertium à partir des données modifiées ==<br />
<br />
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui puisse être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.<br />
<br />
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
* [[Cómo Contribuir a un par de lenguas existentes]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Contributing_to_an_existing_pair&diff=3138Contributing to an existing pair2007-12-19T14:28:56Z<p>172.17.30.131: /* See also */</p>
<hr />
<div>{{TOCD}}<br />
Adding linguistic data to an existing language pair in Apertium. Apertium has data for many languages pairs. These linguistic data include mainly dictionaries (monolingual and bilingual), structural transfer rules that perform grammatical and other transformations between the two languages involved, and lexical data for the part-of-speech tagger, which is in charge of the disambiguation of the source language text.<br />
<br />
All these linguistic data are contained in a single directory. For example, <code>apertium-es-ca</code> for the Spanish-Catalan pair. The files that you can find in these directories are described next.<br />
<br />
==Example file layout==<br />
<br />
===Apertium 1===<br />
<br />
For the Spanish–Catalan pair (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Spanish monolingual dictionary, containing 11,800 entries (as of 17 november 2005) <br />
* apertium-es-ca.ca.dix : Catalan monolingual dictionary, containing 11,800 entries.<br />
* apertium-es-ca.es-ca.dix : Spanish-Catalan bilingual dictionary, containing 12,800 entries (correspondences Spanish-Catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Structural transfer rules for the translation from Spanish to Catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Structural transfer rules for the translation from Catalan to Spanish.<br />
* apertium-es-ca.es.tsx : Tagger definition file for Spanish<br />
* apertium-es-ca.ca.tsx : Tagger definition file for Catalan<br />
* apertium-es-ca.post-es.dix : Post-generation dictionary for Spanish, with 25 entries and 5 paradigms (applies when translating from Catalan to Spanish)<br />
* apertium-es-ca.post-ca.dix : Post-generation dictionary for Catalan, with 16 entries and 57 paradigms (applies when translating from Spanish to Catalan)<br />
* directory es-tagger-data : Contains data needed for the Spanish tagger (corpora, etc.)<br />
* directory ca-tagger-data : Contains data needed for the Catalan tagger (corpora, etc.)<br />
<br />
== Adding words to the dictionaries ==<br />
<br />
When extending or adapting Apertium, the most likely operation that will be performed will be to extend its dictionaries. In fact, it will be far more common than adding transfer or post-generation rules.<br />
<br />
IMPORTANT: Every time a set of modifications is made to any of the dictionaries, the modules have to be recompiled. Type make in the directory where the linguistic data are saved (apertium-es-ca, apertium-es-gl or what may be applicable) so that the system generates the new binary files.<br />
<br />
If you want to add a new word to Apertium, you need to add three entries in the dictionaries. Suppose you are working with the Spanish-Catalan pair. In this case, you have to add:<br />
<br />
# an entry in the Spanish monolingual dictionary: so that the translator can analyze ("understand") the word when it finds it in a text, and generate it when translating this word into Spanish.<br />
# an entry in the bilingual dictionary: so that you can tell Apertium how to translate this word from one language to the other.<br />
# an entry in the Catalan monolingual dictionary: so that the translator can analyze ("understand") the word when it finds it in a text, and generate it when translating this word into Catalan.<br />
<br />
You will need to go to the directory containing the XML dictionaries (for the Spanish-Catalan pair, this is apertium-es-ca) and open with a text editor or a specialized XML editor the three dictionary files mentioned: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. The entries you need to create in these three dictionaries share a common structure.<br />
<br />
== Monolingual dictionary (Spanish) ==<br />
<br />
You may want, for example, to add the Spanish adjective "cósmico", whose equivalent in Catalan is "còsmic". The first step is to add this word to the Spanish monolingual dictionary. You will see that a monolingual dictionary has basically two types of data: paradigms (in the "<pardefs>" section of the dictionary, each paradigm inside a <pardef> element) and word entries (in the main <section> of the dictionary, each one inside an <e> element). Word entries consist of a lemma (that is, the word as you would find it in a typical paper dictionary) plus grammatical information; paradigms contain the inflection data of all lemmas in the dictionary. You can search a particular word by searching the string lm="word" (lm meaning lemma). (The element lm is optional and some other dictionaries may not contain it.)<br />
Look at the word entries in the Spanish monolingual dictionary, for example at the entry for the adjective "bonito". You can find it by searching lm="bonito":<br />
<br />
<pre><br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
To add a word, you will have to create an entry with the same structure. The part between <nowiki><i></nowiki> and <nowiki></i></nowiki> contains the prefix of the word that is common to all inflected forms, and the element <par> refers to the inflection paradigm of this word. Therefore, this entry means that the adjective "bonito" inflects like the adjective "absoluto" and has the same morphological analysis: the forms <i>bonito, bonita, bonitos, bonitas</i> are equivalent to the forms <i>absoluto, absoluta, absolutos, absolutas</i> and have the morphological analysis: adj m sg, adj f sg, adj m pl and adj f pl respectively.<br />
<br />
<br />
Now, you have to decide which is the lexical category of the word you want to add. The word "cósmico" is an adjective, like "bonito". Next, you have to find the appropriate paradigm for this adjective. Is it the same as the one for "bonito" and "absoluto"? Can you say <i>cósmico, cósmica, cósmicos, cósmicas</i>? The answer is yes, and, with all this information, you can now create the correct entry:<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
If the word you want to add has a different paradigm, you have to find it in the dictionary and assign it to the entry. You have two ways to find the appropriate paradigm: looking in the <pardefs> section of the dictionary, where all the paradigms are defined inside a <pardef> element, or finding another word that you think may already exist in the dictionary and that has the same inflection paradigm as the one to be added. For example, if you want to add the word "genoma", you need to find an appropriate paradigm for a noun whose gender is masculine and forms the plural with the addition of an -s. This will be the paradigm "abismo__n" in our present dictionaries. Therefore, the entry for this new word would be:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
In exceptional cases you will need to create a new paradigm for a certain word. You can look at the structure of other paradigms and create one accordingly. For a more detailed description of paradigms and word entries in the dictionaries, refer to section 3.1.2 of the system documentation.<br />
<br />
== Monolingual dictionary (Catalan) ==<br />
<br />
<br />
Once you have added the word to one monolingual dictionary, you have to do the same to the other monolingual dictionary of the translation pair (in our example, the Catalan monolingual dictionary) using the same structure. The result would be:<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
== Monolingual dictionary (Galician) ==<br />
<br />
In the case you are trying to improve the XML dictionaries for the Spanish-Galician pair, you will need to go to the directory apertium-es-gl and open with a text editor or a specialized XML editor the three dictionary files apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. In that case, once you have added the new Spanish word "genoma" to the Spanish monolingual dictionary (apertium-es-gl.es.dix), you have to add the equivalent Galician word "xenoma" to the Galician monolingual dictionary (apertium-es-gl.gl.dix), that is:<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Bilingual dictionary ==<br />
<br />
The last step is to add the translation to the bilingual dictionary.<br />
A bilingual dictionary does not usually have paradigms, only lemmas. An entry contains only the lemma in both languages and the first grammatical symbol (the lexical category) of each one. Entries have a left side (<l>) and a right side (<r>), and each language has always to be in the same position: in our system, it has been agreed that Spanish occupies the left side, and Catalan, Galician and Portuguese the right side. Once the "side" of each language has been agreed in a system, it has to be observed all through the dictionaries so that the translation works.<br />
With the addition of the lemma of both words, the system will translate all their inflected forms (the grammatical symbols are copied from the source language word to the target language word). This will only work if the source language word and the target language word are grammatically equivalent, that is, if they share exactly the same morphological symbols for all of their inflected forms. This is the case with our example; therefore, the entry you have to add to the bilingual dictionary is:<br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
This entry will translate all the inflected forms, that is, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. It works for the translation in both directions: from Spanish to Catalan and from Catalan to Spanish.<br />
<br />
In the case of the Spanish-Galician pair, the following bilingual entry in the Spanish-Galician bilingual dictionary (apertium-es-gl.es-gl) will translate all the inflected forms for the equivalent words </i>genoma/xenoma</i> in both directions, that is, from Spanish to Galician and from Galician to Spanish:<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
What to do if the word pair is not equivalent grammatically (their grammatical symbols are not exactly the same)? In that case, you need to specify all the grammatical symbols (in the same order as they are specified in the monolingual dictionaries) until you reach the symbol that differs between the source language word and the target language word. For example, the Spanish noun "limón" has masculine gender and its equivalent in Catalan, "llimona", has feminine gender. The entry in the bilingual dictionary must be as follows:<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
A more difficult problem arises when two words have different grammatical symbols and the grammatical information of the source language word is not enough to determine the gender (masculine or feminine) or the number (singular or plural) of the target language word. Take for example the Spanish adjective "canadiense". Its gender is (masculine-feminine) since it is invariable in gender, that is, it can go both with masculine and feminine nouns (hombre canadiense, mujer canadiense). In Catalan, on the other hand, the adjective has a different inflection for the masculine and the feminine (home canadenc, dona canadenca). Therefore, when translating from Spanish to Catalan it is not possible to know, without looking at the accompanying noun, whether the Spanish adjective (mf) has to be translated as a feminine or a masculine adjective in Catalan. In that case, the symbol "GD" (for "gender to be determined") is used instead of the gender symbol. The word's gender will be determined by the structural transfer module, by means of a transfer rule (a rule that detects the gender of the preceding noun in this particular case).<br />
<br />
Therefore, "GD" must be used only when translating from Spanish to Catalan, but not when translating from Catalan to Spanish, as in Spanish the gender will always be mf regardless of the gender of the original word.<br />
<br />
In the bilingual dictionary you will need to add, in this case, more than one entry with direction indications, as you must specify in which translation direction the gender remains undetermined. The entries for this adjective should be as follows:<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
"LR" means "left to right", and "RL", "right to left". Since Spanish is on the left and Catalan on the right, the adjective will be "GD" only when translating from Spanish to Catalan ("LR"). For the translation "RL" you need to create two entries, one for the adjective in feminine and another one for the adjective in masculine.<br />
The same principle applies when it is not possible to determine the number (singular or plural) of the target word for the same reasons mentioned above. For example, the Spanish noun "rascacielos" (skyscraper) is invariable in number, that is, it can be singular as well as plural (<i>un rascacielos, dos rascacielos</i>). In Catalan, on the other hand, the noun has a different inflection for the singular and for the plural (<i>un gratacel, dos gratacels</i>). In this case the symbol used is "ND" ("number to be determined") and the entries should be like this:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
For a more detailed description of this kind of entries, refer to section 3.1.2.4.2 of the system documentation.<br />
<br />
== Adding direction restrictions ==<br />
<br />
In the previous example we have already seen the use of direction restrictions for entries with undetermined gender or number ("GD" or "ND"). Restrictions can also be used in other cases.<br />
It is important to note that the current version of Apertium can give only a single equivalent for each source-language lexical form (a lexical form is the lemma plus its grammatical information), that is, no word-sense disambiguation is performed. [Note: The system performs only part-of-speech disambiguation for homograph words, that is, for ambiguous words that can be analyzed as more than one lexical form, like vino in Spanish, that can mean both "wine" and "he/she came". This type of disambiguation is performed by the tagger.] When a lemma can be translated in two or more different ways, one has to be chosen (the most general, the most frequent, etc.). You can tell Apertium that a certain word has to be understood (analyzed) but not generated, as it is not the translation of any source-language lemma.<br />
<br />
Let's see this with an example. The Spanish noun "muñeca" can be translated in two different ways in Catalan depending on its meaning: "canell" (wrist) or "nina" (doll). The context decides which translation is the correct one, but in its present state Apertium can not make such a decision (but see below the section on multiword units for ways to circumvent this problem). Therefore, you have to decide which word you want as an equivalent when translating from Spanish to Catalan. From Catalan to Spanish, both words can be translated as "muñeca" without any problem. You have to specify all these circumstances in the dictionary entries using direction restrictions ("LR" meaning "left to right", that is, Spanish-Catalan, and "RL" meaning "right to left", that is, Catalan-Spanish). If you decide to translate "muñeca" as "canell" in all cases, the entries in the bilingual dictionary shall be:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
This means that translation directions will be:<br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Note that that there is also a gender change in the case of "muñeca" (feminine) and "canell" (masculine))<br />
<br />
It should be emphasized that a lemma can not have two translations in the target language, because the system would give an error when translating that lemma (see the section "Detecting errors" below to see how to find and correct these and other types of errors). When a word can be translated in two different ways in the target language in all contexts, you need to choose one as the translation equivalent and leave the other one as a lemma that can be analyzed but not generated, using direction restrictions like in the previous example. For example, the Catalan lemmas "mot" and "paraula" can be both translated into Spanish as "palabra" (word) and the entry in the bilingual dictionary should look like this:<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Therefore, for this lemmas the translation directions will be:<br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
<br />
One may have to specify restrictions regarding translation direction also in monolingual dictionaries. For example, both Spanish forms cantaran or cantasen should be analyzed as cantar,verb, subjunctive imperfect, 3rd person plural, but when generating Spanish text, one has to decide which one will be generated. Monolingual dictionaries are read in two directions depending on its purpose: for the analysis, the reading direction is left to right; for the generation, right to left. Therefore, a word that must be analyzed but not generated must have the restriction "LR", and a word that must be generated but not analyzed must have the restriction "RL".<br />
The case of cantaran or cantasen must have already been taken care of in inflection paradigms and it is unlikely to be a problem for most people extending a dictionary. In some other cases it can be necessary to introduce a restriction in the word entries of monolingual dictionaries.<br />
<br />
== Adding multiwords ==<br />
<br />
It is possible to create entries consisting of two ore more words, if these words are considered to build a single "translation unit".<br />
These "multiword units" can also be useful when it comes to select the correct equivalent for a word inside a fixed expression. For example, the Spanish word "dirección" may be translated into two Catalan words: "direcció" (direction, management, directorate, steering, etc.) and "adreça" (address); including, for example, frequent multiword units such as "dirección general" --> "direcció general" (general directorate) and "dirección postal" --> "adreça postal" (postal address) may help get improved translations in some situations.<br />
<br />
Multiword units can be classified basically into two categories: multiwords with inner inflection and multiwords without inner inflection.<br />
<br />
Multiwords without inner inflection are just like the normal one-word entries, with the only difference that you need to insert the element <b/> (which represents a blank) between the individual words that make up the unit. Therefore, if you want to add, for example, the Spanish multiword "hoy en día" (nowadays), whose equivalent in Catalan is "avui dia", the entries you need to add to the different dictionaries are:<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
For Spanish-Galician pair, if you want to add, for example, the Spanish multiword "manga por hombro" (disarranged), whose equivalent in Galician is "sen xeito nin modo", the entries you need to add are:<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
;Galician monolingual dictionary:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
;Spanish-Galician bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Multiwords with inner inflection consist of a word that can inflect (typically a verb) and an invariable element. For these entries you need to specify the inflection paradigm just after the word that inflects. The invariable part must be marked with the element <g> in the right side. The blanks between words are indicated, like in the previous case, with the element <b/>. Look at the following example for the Spanish multiword "echar de menos" (to miss), translated into Catalan as "trobar a faltar":<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Note that the grammatical symbol is appended at the end, after the group marked with the <g>.<br />
It can be the case that a lemma is a multiword in one language and a single word in the other language. In that case, in the bilingual dictionary, the multiword will contain the <g> element and the single word will not. In the monolingual dictionaries, each entry will be created according to its type. Look at the following example for the Spanish multiword "darse cuenta" (to realize), translated into Catalan as the verb "adonar-se":<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre> <br />
<e lm="darse cuenta"><br />
<i>d</i><br />
<par n="d/ar__vblex"/><br />
<p><br />
<l><b/>cuenta</l><br />
<r><g><b/>cuenta</g></r><br />
</p><br />
</e><br />
</pre> <br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="adonar-se"><br />
<i>adon</i><br />
<par n="abander/ar__vblex"/><br />
</e><br />
</pre><br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>dar<g><b/>cuenta</g><s n="vblex"/></l><br />
<r>adonar<s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Note that the enclitic pronouns (such as "-se") after both the Spanish and Catalan verb forms need not be specified and will be taken care of by structural transfer rules; the correct positioning of clitics is one of the main reasons for using the <g>... </g> labels around the invariable part of multi-word verbs.<br />
<br />
The same principles and actions described for basic entries (gender and number change, direction restrictions, etc.) apply to all kinds of multiwords.<br />
For a more detailed description of multiword units, refer to section 3.1.2.5 of the system documentation.<br />
<br />
== Brief introduction to paradigms ==<br />
<br />
<br />
The paradigms of the previous examples, as adverbs do not inflect, contain only the grammatical symbol of the lexical form, as you see in this example:<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Paradigms are build like a lexical entry. We have seen so far lexical entries where the common part of the lemma is put between <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
But you can also express the same with a pair of strings: a left string <l> and a right string <r> inside a <nowiki><p></nowiki> element:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
These two entries are equivalent. The use of the <nowiki><i></nowiki> element helps get more simple and compact entries, and you can use it when the left side and the right side of the string pair are identical. As has been explained before, monolingual dictionaries are read LR for the analysis of a text and RL for the generation. Therefore, when there is some difference between the analysed string and the generated string (not very usual) the entry can not be written using the <nowiki><i></nowiki> element.<br />
In paradigms, the left and right strings are never identical, since the right side must contain the grammatical symbols that will go through all the modules of the system.<br />
<br />
== Consider contributing your improved lexical data ==<br />
<br />
If you have successfully added general-purpose lexical data to any of the Apertium language pairs, please consider contributing it to the project so that we can offer a better toolbox to the community. You can e-mail your data (in three XML files, one for each monolingual dictionary and another one for the bilingual dictionary) to the following addresses:<br />
<pre><br />
Spanish-Catalan data<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Spanish-Portuguese data<br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Spanish-Galician data<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
If you believe you are going to contribute more heavily to the project, you can join the development team through www.sourceforge.net. If you do not have a sourceforge account, please create one; then write to Mikel L. Forcada (mlf [at] ua [dot] es) or Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) or to Xavier Gómez Guinovart if you are interested in the Spanish-Galician language pair, explaining briefly your motivations and background to join the project. The usual way to contribute is to use CVS; as a project member, you will be able to commit your changes to dictionaries directly.<br />
<br />
The addition of simple lexical contributions has recently been made simpler by means of web forms at http://xixona.dlsi.ua.es/prototype/webform/, so that contributors do not have to deal directly with XML.<br />
<br />
You should be aware that the data you contribute to the project, once added, will be freely distributed under the current license (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, as indicated). Make sure the data you contribute is not affected by any kind of license which may be incompatible with the licenses used in this project. No kind of agreement or contract is created between you and the developers. If you have any doubt, or you plan to make a massive contribution, contact Mikel L. Forcada.<br />
<br />
== Adding structural transfer (grammar) rules ==<br />
Structural transfer rules carry out transformations to the disambiguated text, which are needed because of grammatical, syntactical and lexical divergences between the two languages involved (gender and number changes to ensure agreement in the target language, word reorderings, changes in prepositions, etc.). The rules detect patterns (sequences) of source text lexical forms and apply to them the corresponding transformations. The module detects the patterns in a left-to-right, longest-match way; for example, the phrase "the big cat" will be detected and processed by the rule for determiner - adjective - noun and not by the rule for determiner - adjective, since the first pattern is longer. If two patterns have the same length, the rule that applies is the one defined in the first place.<br />
<br />
The structural transfer module (generated from the structural transfer rules file) calls the lexical transfer module (generated from the bilingual dictionary) all through the process to determine the target language equivalents of the source language lexical forms.<br />
<br />
The structural transfer rules are contained in a XML file, one for each translation direction (for example, for the translation from Spanish to Catalan, the file is apertium-es-ca.trules-es-ca.xml). You need to edit this file if you want to add or change transfer rules.<br />
<br />
Rules have a pattern and an action part. The pattern specifies which sequences of lexical forms have to be detected and processed. The action describes the verifications and transformations that need to be done on its constituents. Usual transformation operations (such as gender and number agreement) are defined inside a macroinstruction which is called inside the rule. At the end of the action part of the rule, the resulting lexical forms in the target language are sent out so that they are processed by the next modules in the translation system.<br />
<br />
A transfer rules file contains four sections with definitions of elements used in the rules, and a fifth section where the actual rules are defined. The sections are the following:<br />
<br />
* <section-def-cats>: This section contains the definition of the categories which are to be used in the rule patterns (that is, the type of lexical forms that will be detected by a certain rule). For the rule presented below, the categories "det" and "nom" (determiner and noun) need to be defined here. Categories are defined specifying the grammatical symbols that the lexical forms have. An asterisk indicates that one or more grammatical symbols follow the ones specified. The following is the definition of the category "det", which groups determiners and predeterminers in the same category since they play the same role for transfer purposes:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
It is also possible to define as a category a certain lemma, like the following for the preposition "en":<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
* <section-def-attrs>: This section contains the definition of the attributes that will be used inside of the rules, in the action part. You need attributes for all the categories defined in the previous section, if they are to be used in the action part of the rule (to make verifications on them or to send them out at the end of the rule), as well as for other attributes needed in the rule (such as gender or number). Attributes have to be defined using their corresponding grammatical symbols and can not have asterisks; its name must be unique. The following are the definitions for the attributes "a_det" (for determiners) and "gen" (gender):<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : This section contains the definition of the variables used in the rules.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Here the macroinstructions are defined, which contain sequences of code that are frequently used in the rules; this way, linguists do not need to write the same actions repeatedly. There are, for example, macroinstructions for gender and number agreement operations.<br />
<br />
<br />
* <section-rules> : This is the section where the structural transfer rules are written.<br />
<br />
<br />
<br />
The following is an example of a rule which detects the sequence determiner -- noun:<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Part of the action performed on this pattern is specified inside the macroinstruction "f_concord2", which is defined in the <section-def-macros>. It performs gender and number agreement operations: if there is a gender or number change between the source language and the target language (in the noun), the determiner changes its gender or number accordingly; furthermore, if gender or number are undetermined ("GD" or "ND", as explained in the previous section "Adding words to monolingual and bilingual dictionaries"), the noun receives the correct gender or number values from the preceding determiner. In the Apertium es-ca, es-gl and es-pt systems, there are agreement macroinstructions defined for one, two, three or four lexical units (f_concord1, f_concord2, f_concord3, f_concord4). When calling the macroinstructions in a rule, it must be specified which is the main lexical unit (the one which most heavily determines the gender or number of the other lexical units) and which other lexical units of the pattern have to be included in the agreement operations, in order of importance. This is done with the <with-param pos=""/> element. In the previous rule, the main lexical unit is the noun (position "2" in the pattern) and the second one is the determiner (position "1" in the pattern).<br />
<br />
After the pertinent actions, the resulting lexical forms are sent out, inside the <out> element. Each lexical unit is defined with a <clip>. Its attributes mean the following:<br />
<br />
* pos: refers to the position of the lexical form in the pattern. "1" is the first lexical form (the determiner) and "2" the second one (the noun).<br />
* side: indicates if the lexical form is in the source language ("sl") or in the target language ("tl"). Of course, words are sent out always in the target language; source language lexical forms may be needed inside of a rule, when testing its attributes or characteristics.<br />
* part: indicates which part of the lexical form is referred to in the 'clip'. You can use some predefined values:<br />
-whole: the whole lexical form (lemma and grammatical symbols). Used only when sending out the lexical unit (inside an <out> element).<br />
-lem: the lemma of the lexical unit<br />
-lemh: the head of the lemma of a multiword with inner inflection<br />
-lemq: the queue of a lemma of a multiword with inner inflection<br />
As well as these predefined values, you can use any of the attributes defined in <section-def-attrs> (for example "gen" or "a_det").<br />
<br />
The values "lemh" and "lemq" are used when sending out multiwords with inner inflection (see the section "Adding multiwords") in order to place the head and the queue of the lemma in the right position, since the previous module moved the queue just after the lemma head for various reasons. In pratice, in our system, this means that you must use these values instead of 'whole' when sending out verbs, since in our dictionaries multiwords with inner inflection are always verbs and, if you use the value "whole" when sending them out, the multiword would not be well formed (the head and the queue of the lemma would not have the correct position).<br />
<br />
Therefore, a rule that has a verb in its pattern must send the lexical forms like in the following two examples:<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
</pre><br />
<br />
The first rule detects a verb and places the queue in the correct place, after all the grammatical symbols. The lexical unit is sent specifying the attributes separately: lemma head, lexical category (verb), tense, person, gender (for the participles), number and lemma queue.<br />
<br />
The second rule detects a verb followed by an enclitic pronoun and sends the two lexical forms specifying also the attributes separately; the first lexical unit consists of: lemma head, lexical category (verb), tense, person and number; the second lexical unit consists of: lemma, lexical category (enclitic pronoun), person, gender, number and lemma queue. This way, the queue of the lemma is placed after the enclitic pronoun. The two lexical units (verb and enclitic pronoun) are sent inside a <mlu> element, since they have to reach the morphological generator as a multilexical unit (multiword).<br />
<br />
If you want to add a new transfer rule, you have to follow these steps:<br />
<br />
#Specify which pattern you want to detect. Bear in mind that words are processed only once by a rule, and that rules are applied left to right and choosing the longest match. For example, imagine you have in your transfer rules file only two rules, one for the pattern "determiner - noun" and one for the pattern "noun - adjective". The Spanish phrase "el valle verde" (the green valley)" would be detected and processed by the first one, not by the second. You will need to add a rule for the pattern "determiner - noun - adjective" if you wish that the three lexical units are processed in the same pattern.<br />
#Describe the operations you want to perform on the pattern. In the Apertium es-ca, es-gl and es-pt, simple agreement operations (gender and number agreement) are easy to perform in a rule by means of a macroinstruction. To perform other operations, you will need to use more complicated elements; for a more detailed description of the language used to create rules, refer to the section 3.4.2 of the system documentation. You can also read the DTD of the structural transfer rules file (transfer.dtd) provided with the Apertium package, in which all the elements of the language are described in English.<br />
#Send the lexical units of the pattern in the target language inside an <out> element. Each lexical unit must be included in a <lu> element. If two or more lexical units must be generated as a multilexical unit (only for enclitic pronouns in the present language pairs), they must be grouped inside a <mlu> element.<br />
All the words that are detected by a rule (that are part of a pattern) must be sent out at the end of the rule so that the next module (the generator) receives them. If a lexical unit is detected by a pattern and is not included in the <out> element, it will not be generated.<br />
<br />
== Adding data to the part-of-speech tagger ==<br />
To be written.<br />
== Retraining the part-of-speech tagger ==<br />
{{main|Tagger training}}<br />
To be written.<br />
== Detecting errors ==<br />
It is easy to make errors when adding new words or transfer rules to the Apertium system.<br />
<br />
It is possible that, when compiling the new files, the system displays an error message. In this case, this is a formal error (a missing XML tag, a tag that is not allowed in a certain context, etc.). You just have to go to the line number indicated by the error message, correct the error and compile again. Other types of errors are not detected when compiling, but can make the system mistranslate a word or give an incomprehensible text string. These are linguistic errors, which can be detected and corrected with the tips given in this chapter. The following information is for Linux users, since Apertium works for the moment only with this OS.<br />
<br />
As all the data processed by the system, from the original text to the translated text, circulate between the eight modules of the system in text format, it is possible to stop the text stream at any point to know what is the input or the output of a certain module. You just have to type the right commands in the terminal using a pipeline structure so that the standard output of one is used as the standard input for the next one.<br />
<br />
Using the echo or cat commands, you can send a text through one or more modules to analyse their output and detect the origin of the error. You have to move to the directory where the linguistic data are saved and type the commands explained below.<br />
<br />
===The morphological analyser output===<br />
To know how a word is analysed by the translator, type the following in the terminal (example for the Catalan word gener):<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
You can replace ca-es with the translation direction you want to test.<br />
<br />
The output in Apertium should be:<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
The string structure is: <code>^word/lemma<morphological analysis>$</code>. The <code><sent></code> tag is the analysis of the full stop, as every sentence end is represented as a full stop by the system, whether or not explicitly indicated in the sentence.<br />
<br />
The analysis of an unknown word is (ignoring the full stop information):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
and the analysis of an ambiguous word:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Each lexical form (lemma plus morphological analysis) is presented as a possible analysis of the word casa.<br />
<br />
===The tagger output===<br />
<br />
To know the output of the tagger for a source language text, type the following in the terminal (example for the Catalan-Spanish direction):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
The output will be:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
The output for an ambiguous word will be like the one above, since the tagger chooses one lexical form. Therefore, the output for casa in Catalan will be, for example (depending on the context):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===The pretransfer output===<br />
<br />
This module applies some changes to multiwords (move the lemma queue of a multiword with inner inflection just after the lemma head). To know its output, type:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Since gener is not a multiword in the dictionaries, this module does not alter its input.<br />
<br />
===The structural transfer output===<br />
<br />
To know how a word, phrase or sentence is translated into the target language and processed by structural transfer rules, type the following in the terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
The output for the Catalan word gener will be:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Analysing how a word or phrase is output by this module can help you detect errors in the bilingual dictionary or in the structural transfer rules. Typical bilingual dictionary errors are: two equivalents for the same source language lexical form, or wrong assignment of morphological symbols. Errors due to structurual transfer rules vary a lot depending on the actions performed by the rules.<br />
<br />
===The morphological generator output===<br />
<br />
To know how a word is generated by the system, type the following in the terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
With this command you can detect generation errors due to an incorrect entry in the target language monolingual dictionary or to a divergence between the output of the bilingual dictionary (the output of the previous module) and the entry in the monolingual dictionary.<br />
<br />
The correct output for the input "gener" would be:<br />
<pre><br />
enero.[][]<br />
</pre><br />
There are in this case no morphological symbols, and the word appears inflected.<br />
<br />
===The post-generator output===<br />
<br />
It is not very usual to have errors due to the postgenerator, because of its generally small size and the fact that it is seldom changed after adding usual combinations, but you can also test how a source language text comes out of this module, by typing:<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===The final output===<br />
<br />
You can put all the modules of the system in the pipeline structure and see how a source language text goes through all the modules and gets translated into the target language. You just have to add the reformatter to the previous command:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
<br />
This is the same as using the "apertium" shell script provided by the Apertium package:<br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(The full stop indicates the directory where the linguistic data are saved.)<br />
<br />
Of course, instead of typing all the presented commands every time you need to test a translation, you can create shell scripts for every action and use them to test the output of each module.<br />
<br />
Error examples<br />
<br />
To be written.<br />
<br />
<br />
[[Category:Documentation]]<br />
<br />
== Generating a new Apertium system from modified data ==<br />
If you make changes to any of the linguistic data files of Apertium (the dictionaries, the transfer rules, the tagger file or corpora or the postgeneration dictionaries), the changes will not be applied until you recompile the modules. To do this, type 'make' in the directory where the linguistic data are saved (apertium-es-ca, apertium-es-gl or what may be applicable) so that the system generates the new binary files.<br />
<br />
If changes were made to the tagger file or to the corpora used to train the tagger, you will need also to retrain the tagger. In the same directory mentioned above, after typing make, type make train in order to perform the retraining.<br />
<br />
Now the Apertium translator will work using the recently added data.<br />
<br />
==See also==<br />
<br />
* [[Comment contribuer à une paire de langues existante]]<br />
<br />
* [[Cómo Contribuir a un par de lenguas existentes]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Contributing_to_an_existing_pair&diff=3137Contributing to an existing pair2007-12-19T14:28:41Z<p>172.17.30.131: /* See also */</p>
<hr />
<div>{{TOCD}}<br />
Adding linguistic data to an existing language pair in Apertium. Apertium has data for many languages pairs. These linguistic data include mainly dictionaries (monolingual and bilingual), structural transfer rules that perform grammatical and other transformations between the two languages involved, and lexical data for the part-of-speech tagger, which is in charge of the disambiguation of the source language text.<br />
<br />
All these linguistic data are contained in a single directory. For example, <code>apertium-es-ca</code> for the Spanish-Catalan pair. The files that you can find in these directories are described next.<br />
<br />
==Example file layout==<br />
<br />
===Apertium 1===<br />
<br />
For the Spanish–Catalan pair (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Spanish monolingual dictionary, containing 11,800 entries (as of 17 november 2005) <br />
* apertium-es-ca.ca.dix : Catalan monolingual dictionary, containing 11,800 entries.<br />
* apertium-es-ca.es-ca.dix : Spanish-Catalan bilingual dictionary, containing 12,800 entries (correspondences Spanish-Catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Structural transfer rules for the translation from Spanish to Catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Structural transfer rules for the translation from Catalan to Spanish.<br />
* apertium-es-ca.es.tsx : Tagger definition file for Spanish<br />
* apertium-es-ca.ca.tsx : Tagger definition file for Catalan<br />
* apertium-es-ca.post-es.dix : Post-generation dictionary for Spanish, with 25 entries and 5 paradigms (applies when translating from Catalan to Spanish)<br />
* apertium-es-ca.post-ca.dix : Post-generation dictionary for Catalan, with 16 entries and 57 paradigms (applies when translating from Spanish to Catalan)<br />
* directory es-tagger-data : Contains data needed for the Spanish tagger (corpora, etc.)<br />
* directory ca-tagger-data : Contains data needed for the Catalan tagger (corpora, etc.)<br />
<br />
== Adding words to the dictionaries ==<br />
<br />
When extending or adapting Apertium, the most likely operation that will be performed will be to extend its dictionaries. In fact, it will be far more common than adding transfer or post-generation rules.<br />
<br />
IMPORTANT: Every time a set of modifications is made to any of the dictionaries, the modules have to be recompiled. Type make in the directory where the linguistic data are saved (apertium-es-ca, apertium-es-gl or what may be applicable) so that the system generates the new binary files.<br />
<br />
If you want to add a new word to Apertium, you need to add three entries in the dictionaries. Suppose you are working with the Spanish-Catalan pair. In this case, you have to add:<br />
<br />
# an entry in the Spanish monolingual dictionary: so that the translator can analyze ("understand") the word when it finds it in a text, and generate it when translating this word into Spanish.<br />
# an entry in the bilingual dictionary: so that you can tell Apertium how to translate this word from one language to the other.<br />
# an entry in the Catalan monolingual dictionary: so that the translator can analyze ("understand") the word when it finds it in a text, and generate it when translating this word into Catalan.<br />
<br />
You will need to go to the directory containing the XML dictionaries (for the Spanish-Catalan pair, this is apertium-es-ca) and open with a text editor or a specialized XML editor the three dictionary files mentioned: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. The entries you need to create in these three dictionaries share a common structure.<br />
<br />
== Monolingual dictionary (Spanish) ==<br />
<br />
You may want, for example, to add the Spanish adjective "cósmico", whose equivalent in Catalan is "còsmic". The first step is to add this word to the Spanish monolingual dictionary. You will see that a monolingual dictionary has basically two types of data: paradigms (in the "<pardefs>" section of the dictionary, each paradigm inside a <pardef> element) and word entries (in the main <section> of the dictionary, each one inside an <e> element). Word entries consist of a lemma (that is, the word as you would find it in a typical paper dictionary) plus grammatical information; paradigms contain the inflection data of all lemmas in the dictionary. You can search a particular word by searching the string lm="word" (lm meaning lemma). (The element lm is optional and some other dictionaries may not contain it.)<br />
Look at the word entries in the Spanish monolingual dictionary, for example at the entry for the adjective "bonito". You can find it by searching lm="bonito":<br />
<br />
<pre><br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
To add a word, you will have to create an entry with the same structure. The part between <nowiki><i></nowiki> and <nowiki></i></nowiki> contains the prefix of the word that is common to all inflected forms, and the element <par> refers to the inflection paradigm of this word. Therefore, this entry means that the adjective "bonito" inflects like the adjective "absoluto" and has the same morphological analysis: the forms <i>bonito, bonita, bonitos, bonitas</i> are equivalent to the forms <i>absoluto, absoluta, absolutos, absolutas</i> and have the morphological analysis: adj m sg, adj f sg, adj m pl and adj f pl respectively.<br />
<br />
<br />
Now, you have to decide which is the lexical category of the word you want to add. The word "cósmico" is an adjective, like "bonito". Next, you have to find the appropriate paradigm for this adjective. Is it the same as the one for "bonito" and "absoluto"? Can you say <i>cósmico, cósmica, cósmicos, cósmicas</i>? The answer is yes, and, with all this information, you can now create the correct entry:<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
If the word you want to add has a different paradigm, you have to find it in the dictionary and assign it to the entry. You have two ways to find the appropriate paradigm: looking in the <pardefs> section of the dictionary, where all the paradigms are defined inside a <pardef> element, or finding another word that you think may already exist in the dictionary and that has the same inflection paradigm as the one to be added. For example, if you want to add the word "genoma", you need to find an appropriate paradigm for a noun whose gender is masculine and forms the plural with the addition of an -s. This will be the paradigm "abismo__n" in our present dictionaries. Therefore, the entry for this new word would be:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
In exceptional cases you will need to create a new paradigm for a certain word. You can look at the structure of other paradigms and create one accordingly. For a more detailed description of paradigms and word entries in the dictionaries, refer to section 3.1.2 of the system documentation.<br />
<br />
== Monolingual dictionary (Catalan) ==<br />
<br />
<br />
Once you have added the word to one monolingual dictionary, you have to do the same to the other monolingual dictionary of the translation pair (in our example, the Catalan monolingual dictionary) using the same structure. The result would be:<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
== Monolingual dictionary (Galician) ==<br />
<br />
In the case you are trying to improve the XML dictionaries for the Spanish-Galician pair, you will need to go to the directory apertium-es-gl and open with a text editor or a specialized XML editor the three dictionary files apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. In that case, once you have added the new Spanish word "genoma" to the Spanish monolingual dictionary (apertium-es-gl.es.dix), you have to add the equivalent Galician word "xenoma" to the Galician monolingual dictionary (apertium-es-gl.gl.dix), that is:<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Bilingual dictionary ==<br />
<br />
The last step is to add the translation to the bilingual dictionary.<br />
A bilingual dictionary does not usually have paradigms, only lemmas. An entry contains only the lemma in both languages and the first grammatical symbol (the lexical category) of each one. Entries have a left side (<l>) and a right side (<r>), and each language has always to be in the same position: in our system, it has been agreed that Spanish occupies the left side, and Catalan, Galician and Portuguese the right side. Once the "side" of each language has been agreed in a system, it has to be observed all through the dictionaries so that the translation works.<br />
With the addition of the lemma of both words, the system will translate all their inflected forms (the grammatical symbols are copied from the source language word to the target language word). This will only work if the source language word and the target language word are grammatically equivalent, that is, if they share exactly the same morphological symbols for all of their inflected forms. This is the case with our example; therefore, the entry you have to add to the bilingual dictionary is:<br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
This entry will translate all the inflected forms, that is, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. It works for the translation in both directions: from Spanish to Catalan and from Catalan to Spanish.<br />
<br />
In the case of the Spanish-Galician pair, the following bilingual entry in the Spanish-Galician bilingual dictionary (apertium-es-gl.es-gl) will translate all the inflected forms for the equivalent words </i>genoma/xenoma</i> in both directions, that is, from Spanish to Galician and from Galician to Spanish:<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
What to do if the word pair is not equivalent grammatically (their grammatical symbols are not exactly the same)? In that case, you need to specify all the grammatical symbols (in the same order as they are specified in the monolingual dictionaries) until you reach the symbol that differs between the source language word and the target language word. For example, the Spanish noun "limón" has masculine gender and its equivalent in Catalan, "llimona", has feminine gender. The entry in the bilingual dictionary must be as follows:<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
A more difficult problem arises when two words have different grammatical symbols and the grammatical information of the source language word is not enough to determine the gender (masculine or feminine) or the number (singular or plural) of the target language word. Take for example the Spanish adjective "canadiense". Its gender is (masculine-feminine) since it is invariable in gender, that is, it can go both with masculine and feminine nouns (hombre canadiense, mujer canadiense). In Catalan, on the other hand, the adjective has a different inflection for the masculine and the feminine (home canadenc, dona canadenca). Therefore, when translating from Spanish to Catalan it is not possible to know, without looking at the accompanying noun, whether the Spanish adjective (mf) has to be translated as a feminine or a masculine adjective in Catalan. In that case, the symbol "GD" (for "gender to be determined") is used instead of the gender symbol. The word's gender will be determined by the structural transfer module, by means of a transfer rule (a rule that detects the gender of the preceding noun in this particular case).<br />
<br />
Therefore, "GD" must be used only when translating from Spanish to Catalan, but not when translating from Catalan to Spanish, as in Spanish the gender will always be mf regardless of the gender of the original word.<br />
<br />
In the bilingual dictionary you will need to add, in this case, more than one entry with direction indications, as you must specify in which translation direction the gender remains undetermined. The entries for this adjective should be as follows:<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
"LR" means "left to right", and "RL", "right to left". Since Spanish is on the left and Catalan on the right, the adjective will be "GD" only when translating from Spanish to Catalan ("LR"). For the translation "RL" you need to create two entries, one for the adjective in feminine and another one for the adjective in masculine.<br />
The same principle applies when it is not possible to determine the number (singular or plural) of the target word for the same reasons mentioned above. For example, the Spanish noun "rascacielos" (skyscraper) is invariable in number, that is, it can be singular as well as plural (<i>un rascacielos, dos rascacielos</i>). In Catalan, on the other hand, the noun has a different inflection for the singular and for the plural (<i>un gratacel, dos gratacels</i>). In this case the symbol used is "ND" ("number to be determined") and the entries should be like this:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
For a more detailed description of this kind of entries, refer to section 3.1.2.4.2 of the system documentation.<br />
<br />
== Adding direction restrictions ==<br />
<br />
In the previous example we have already seen the use of direction restrictions for entries with undetermined gender or number ("GD" or "ND"). Restrictions can also be used in other cases.<br />
It is important to note that the current version of Apertium can give only a single equivalent for each source-language lexical form (a lexical form is the lemma plus its grammatical information), that is, no word-sense disambiguation is performed. [Note: The system performs only part-of-speech disambiguation for homograph words, that is, for ambiguous words that can be analyzed as more than one lexical form, like vino in Spanish, that can mean both "wine" and "he/she came". This type of disambiguation is performed by the tagger.] When a lemma can be translated in two or more different ways, one has to be chosen (the most general, the most frequent, etc.). You can tell Apertium that a certain word has to be understood (analyzed) but not generated, as it is not the translation of any source-language lemma.<br />
<br />
Let's see this with an example. The Spanish noun "muñeca" can be translated in two different ways in Catalan depending on its meaning: "canell" (wrist) or "nina" (doll). The context decides which translation is the correct one, but in its present state Apertium can not make such a decision (but see below the section on multiword units for ways to circumvent this problem). Therefore, you have to decide which word you want as an equivalent when translating from Spanish to Catalan. From Catalan to Spanish, both words can be translated as "muñeca" without any problem. You have to specify all these circumstances in the dictionary entries using direction restrictions ("LR" meaning "left to right", that is, Spanish-Catalan, and "RL" meaning "right to left", that is, Catalan-Spanish). If you decide to translate "muñeca" as "canell" in all cases, the entries in the bilingual dictionary shall be:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
This means that translation directions will be:<br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Note that that there is also a gender change in the case of "muñeca" (feminine) and "canell" (masculine))<br />
<br />
It should be emphasized that a lemma can not have two translations in the target language, because the system would give an error when translating that lemma (see the section "Detecting errors" below to see how to find and correct these and other types of errors). When a word can be translated in two different ways in the target language in all contexts, you need to choose one as the translation equivalent and leave the other one as a lemma that can be analyzed but not generated, using direction restrictions like in the previous example. For example, the Catalan lemmas "mot" and "paraula" can be both translated into Spanish as "palabra" (word) and the entry in the bilingual dictionary should look like this:<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Therefore, for this lemmas the translation directions will be:<br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
<br />
One may have to specify restrictions regarding translation direction also in monolingual dictionaries. For example, both Spanish forms cantaran or cantasen should be analyzed as cantar,verb, subjunctive imperfect, 3rd person plural, but when generating Spanish text, one has to decide which one will be generated. Monolingual dictionaries are read in two directions depending on its purpose: for the analysis, the reading direction is left to right; for the generation, right to left. Therefore, a word that must be analyzed but not generated must have the restriction "LR", and a word that must be generated but not analyzed must have the restriction "RL".<br />
The case of cantaran or cantasen must have already been taken care of in inflection paradigms and it is unlikely to be a problem for most people extending a dictionary. In some other cases it can be necessary to introduce a restriction in the word entries of monolingual dictionaries.<br />
<br />
== Adding multiwords ==<br />
<br />
It is possible to create entries consisting of two ore more words, if these words are considered to build a single "translation unit".<br />
These "multiword units" can also be useful when it comes to select the correct equivalent for a word inside a fixed expression. For example, the Spanish word "dirección" may be translated into two Catalan words: "direcció" (direction, management, directorate, steering, etc.) and "adreça" (address); including, for example, frequent multiword units such as "dirección general" --> "direcció general" (general directorate) and "dirección postal" --> "adreça postal" (postal address) may help get improved translations in some situations.<br />
<br />
Multiword units can be classified basically into two categories: multiwords with inner inflection and multiwords without inner inflection.<br />
<br />
Multiwords without inner inflection are just like the normal one-word entries, with the only difference that you need to insert the element <b/> (which represents a blank) between the individual words that make up the unit. Therefore, if you want to add, for example, the Spanish multiword "hoy en día" (nowadays), whose equivalent in Catalan is "avui dia", the entries you need to add to the different dictionaries are:<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
For Spanish-Galician pair, if you want to add, for example, the Spanish multiword "manga por hombro" (disarranged), whose equivalent in Galician is "sen xeito nin modo", the entries you need to add are:<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
;Galician monolingual dictionary:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
;Spanish-Galician bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Multiwords with inner inflection consist of a word that can inflect (typically a verb) and an invariable element. For these entries you need to specify the inflection paradigm just after the word that inflects. The invariable part must be marked with the element <g> in the right side. The blanks between words are indicated, like in the previous case, with the element <b/>. Look at the following example for the Spanish multiword "echar de menos" (to miss), translated into Catalan as "trobar a faltar":<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Note that the grammatical symbol is appended at the end, after the group marked with the <g>.<br />
It can be the case that a lemma is a multiword in one language and a single word in the other language. In that case, in the bilingual dictionary, the multiword will contain the <g> element and the single word will not. In the monolingual dictionaries, each entry will be created according to its type. Look at the following example for the Spanish multiword "darse cuenta" (to realize), translated into Catalan as the verb "adonar-se":<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre> <br />
<e lm="darse cuenta"><br />
<i>d</i><br />
<par n="d/ar__vblex"/><br />
<p><br />
<l><b/>cuenta</l><br />
<r><g><b/>cuenta</g></r><br />
</p><br />
</e><br />
</pre> <br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="adonar-se"><br />
<i>adon</i><br />
<par n="abander/ar__vblex"/><br />
</e><br />
</pre><br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>dar<g><b/>cuenta</g><s n="vblex"/></l><br />
<r>adonar<s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Note that the enclitic pronouns (such as "-se") after both the Spanish and Catalan verb forms need not be specified and will be taken care of by structural transfer rules; the correct positioning of clitics is one of the main reasons for using the <g>... </g> labels around the invariable part of multi-word verbs.<br />
<br />
The same principles and actions described for basic entries (gender and number change, direction restrictions, etc.) apply to all kinds of multiwords.<br />
For a more detailed description of multiword units, refer to section 3.1.2.5 of the system documentation.<br />
<br />
== Brief introduction to paradigms ==<br />
<br />
<br />
The paradigms of the previous examples, as adverbs do not inflect, contain only the grammatical symbol of the lexical form, as you see in this example:<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Paradigms are build like a lexical entry. We have seen so far lexical entries where the common part of the lemma is put between <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
But you can also express the same with a pair of strings: a left string <l> and a right string <r> inside a <nowiki><p></nowiki> element:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
These two entries are equivalent. The use of the <nowiki><i></nowiki> element helps get more simple and compact entries, and you can use it when the left side and the right side of the string pair are identical. As has been explained before, monolingual dictionaries are read LR for the analysis of a text and RL for the generation. Therefore, when there is some difference between the analysed string and the generated string (not very usual) the entry can not be written using the <nowiki><i></nowiki> element.<br />
In paradigms, the left and right strings are never identical, since the right side must contain the grammatical symbols that will go through all the modules of the system.<br />
<br />
== Consider contributing your improved lexical data ==<br />
<br />
If you have successfully added general-purpose lexical data to any of the Apertium language pairs, please consider contributing it to the project so that we can offer a better toolbox to the community. You can e-mail your data (in three XML files, one for each monolingual dictionary and another one for the bilingual dictionary) to the following addresses:<br />
<pre><br />
Spanish-Catalan data<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Spanish-Portuguese data<br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Spanish-Galician data<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
If you believe you are going to contribute more heavily to the project, you can join the development team through www.sourceforge.net. If you do not have a sourceforge account, please create one; then write to Mikel L. Forcada (mlf [at] ua [dot] es) or Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) or to Xavier Gómez Guinovart if you are interested in the Spanish-Galician language pair, explaining briefly your motivations and background to join the project. The usual way to contribute is to use CVS; as a project member, you will be able to commit your changes to dictionaries directly.<br />
<br />
The addition of simple lexical contributions has recently been made simpler by means of web forms at http://xixona.dlsi.ua.es/prototype/webform/, so that contributors do not have to deal directly with XML.<br />
<br />
You should be aware that the data you contribute to the project, once added, will be freely distributed under the current license (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, as indicated). Make sure the data you contribute is not affected by any kind of license which may be incompatible with the licenses used in this project. No kind of agreement or contract is created between you and the developers. If you have any doubt, or you plan to make a massive contribution, contact Mikel L. Forcada.<br />
<br />
== Adding structural transfer (grammar) rules ==<br />
Structural transfer rules carry out transformations to the disambiguated text, which are needed because of grammatical, syntactical and lexical divergences between the two languages involved (gender and number changes to ensure agreement in the target language, word reorderings, changes in prepositions, etc.). The rules detect patterns (sequences) of source text lexical forms and apply to them the corresponding transformations. The module detects the patterns in a left-to-right, longest-match way; for example, the phrase "the big cat" will be detected and processed by the rule for determiner - adjective - noun and not by the rule for determiner - adjective, since the first pattern is longer. If two patterns have the same length, the rule that applies is the one defined in the first place.<br />
<br />
The structural transfer module (generated from the structural transfer rules file) calls the lexical transfer module (generated from the bilingual dictionary) all through the process to determine the target language equivalents of the source language lexical forms.<br />
<br />
The structural transfer rules are contained in a XML file, one for each translation direction (for example, for the translation from Spanish to Catalan, the file is apertium-es-ca.trules-es-ca.xml). You need to edit this file if you want to add or change transfer rules.<br />
<br />
Rules have a pattern and an action part. The pattern specifies which sequences of lexical forms have to be detected and processed. The action describes the verifications and transformations that need to be done on its constituents. Usual transformation operations (such as gender and number agreement) are defined inside a macroinstruction which is called inside the rule. At the end of the action part of the rule, the resulting lexical forms in the target language are sent out so that they are processed by the next modules in the translation system.<br />
<br />
A transfer rules file contains four sections with definitions of elements used in the rules, and a fifth section where the actual rules are defined. The sections are the following:<br />
<br />
* <section-def-cats>: This section contains the definition of the categories which are to be used in the rule patterns (that is, the type of lexical forms that will be detected by a certain rule). For the rule presented below, the categories "det" and "nom" (determiner and noun) need to be defined here. Categories are defined specifying the grammatical symbols that the lexical forms have. An asterisk indicates that one or more grammatical symbols follow the ones specified. The following is the definition of the category "det", which groups determiners and predeterminers in the same category since they play the same role for transfer purposes:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
It is also possible to define as a category a certain lemma, like the following for the preposition "en":<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
* <section-def-attrs>: This section contains the definition of the attributes that will be used inside of the rules, in the action part. You need attributes for all the categories defined in the previous section, if they are to be used in the action part of the rule (to make verifications on them or to send them out at the end of the rule), as well as for other attributes needed in the rule (such as gender or number). Attributes have to be defined using their corresponding grammatical symbols and can not have asterisks; its name must be unique. The following are the definitions for the attributes "a_det" (for determiners) and "gen" (gender):<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : This section contains the definition of the variables used in the rules.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Here the macroinstructions are defined, which contain sequences of code that are frequently used in the rules; this way, linguists do not need to write the same actions repeatedly. There are, for example, macroinstructions for gender and number agreement operations.<br />
<br />
<br />
* <section-rules> : This is the section where the structural transfer rules are written.<br />
<br />
<br />
<br />
The following is an example of a rule which detects the sequence determiner -- noun:<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Part of the action performed on this pattern is specified inside the macroinstruction "f_concord2", which is defined in the <section-def-macros>. It performs gender and number agreement operations: if there is a gender or number change between the source language and the target language (in the noun), the determiner changes its gender or number accordingly; furthermore, if gender or number are undetermined ("GD" or "ND", as explained in the previous section "Adding words to monolingual and bilingual dictionaries"), the noun receives the correct gender or number values from the preceding determiner. In the Apertium es-ca, es-gl and es-pt systems, there are agreement macroinstructions defined for one, two, three or four lexical units (f_concord1, f_concord2, f_concord3, f_concord4). When calling the macroinstructions in a rule, it must be specified which is the main lexical unit (the one which most heavily determines the gender or number of the other lexical units) and which other lexical units of the pattern have to be included in the agreement operations, in order of importance. This is done with the <with-param pos=""/> element. In the previous rule, the main lexical unit is the noun (position "2" in the pattern) and the second one is the determiner (position "1" in the pattern).<br />
<br />
After the pertinent actions, the resulting lexical forms are sent out, inside the <out> element. Each lexical unit is defined with a <clip>. Its attributes mean the following:<br />
<br />
* pos: refers to the position of the lexical form in the pattern. "1" is the first lexical form (the determiner) and "2" the second one (the noun).<br />
* side: indicates if the lexical form is in the source language ("sl") or in the target language ("tl"). Of course, words are sent out always in the target language; source language lexical forms may be needed inside of a rule, when testing its attributes or characteristics.<br />
* part: indicates which part of the lexical form is referred to in the 'clip'. You can use some predefined values:<br />
-whole: the whole lexical form (lemma and grammatical symbols). Used only when sending out the lexical unit (inside an <out> element).<br />
-lem: the lemma of the lexical unit<br />
-lemh: the head of the lemma of a multiword with inner inflection<br />
-lemq: the queue of a lemma of a multiword with inner inflection<br />
As well as these predefined values, you can use any of the attributes defined in <section-def-attrs> (for example "gen" or "a_det").<br />
<br />
The values "lemh" and "lemq" are used when sending out multiwords with inner inflection (see the section "Adding multiwords") in order to place the head and the queue of the lemma in the right position, since the previous module moved the queue just after the lemma head for various reasons. In pratice, in our system, this means that you must use these values instead of 'whole' when sending out verbs, since in our dictionaries multiwords with inner inflection are always verbs and, if you use the value "whole" when sending them out, the multiword would not be well formed (the head and the queue of the lemma would not have the correct position).<br />
<br />
Therefore, a rule that has a verb in its pattern must send the lexical forms like in the following two examples:<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
</pre><br />
<br />
The first rule detects a verb and places the queue in the correct place, after all the grammatical symbols. The lexical unit is sent specifying the attributes separately: lemma head, lexical category (verb), tense, person, gender (for the participles), number and lemma queue.<br />
<br />
The second rule detects a verb followed by an enclitic pronoun and sends the two lexical forms specifying also the attributes separately; the first lexical unit consists of: lemma head, lexical category (verb), tense, person and number; the second lexical unit consists of: lemma, lexical category (enclitic pronoun), person, gender, number and lemma queue. This way, the queue of the lemma is placed after the enclitic pronoun. The two lexical units (verb and enclitic pronoun) are sent inside a <mlu> element, since they have to reach the morphological generator as a multilexical unit (multiword).<br />
<br />
If you want to add a new transfer rule, you have to follow these steps:<br />
<br />
#Specify which pattern you want to detect. Bear in mind that words are processed only once by a rule, and that rules are applied left to right and choosing the longest match. For example, imagine you have in your transfer rules file only two rules, one for the pattern "determiner - noun" and one for the pattern "noun - adjective". The Spanish phrase "el valle verde" (the green valley)" would be detected and processed by the first one, not by the second. You will need to add a rule for the pattern "determiner - noun - adjective" if you wish that the three lexical units are processed in the same pattern.<br />
#Describe the operations you want to perform on the pattern. In the Apertium es-ca, es-gl and es-pt, simple agreement operations (gender and number agreement) are easy to perform in a rule by means of a macroinstruction. To perform other operations, you will need to use more complicated elements; for a more detailed description of the language used to create rules, refer to the section 3.4.2 of the system documentation. You can also read the DTD of the structural transfer rules file (transfer.dtd) provided with the Apertium package, in which all the elements of the language are described in English.<br />
#Send the lexical units of the pattern in the target language inside an <out> element. Each lexical unit must be included in a <lu> element. If two or more lexical units must be generated as a multilexical unit (only for enclitic pronouns in the present language pairs), they must be grouped inside a <mlu> element.<br />
All the words that are detected by a rule (that are part of a pattern) must be sent out at the end of the rule so that the next module (the generator) receives them. If a lexical unit is detected by a pattern and is not included in the <out> element, it will not be generated.<br />
<br />
== Adding data to the part-of-speech tagger ==<br />
To be written.<br />
== Retraining the part-of-speech tagger ==<br />
{{main|Tagger training}}<br />
To be written.<br />
== Detecting errors ==<br />
It is easy to make errors when adding new words or transfer rules to the Apertium system.<br />
<br />
It is possible that, when compiling the new files, the system displays an error message. In this case, this is a formal error (a missing XML tag, a tag that is not allowed in a certain context, etc.). You just have to go to the line number indicated by the error message, correct the error and compile again. Other types of errors are not detected when compiling, but can make the system mistranslate a word or give an incomprehensible text string. These are linguistic errors, which can be detected and corrected with the tips given in this chapter. The following information is for Linux users, since Apertium works for the moment only with this OS.<br />
<br />
As all the data processed by the system, from the original text to the translated text, circulate between the eight modules of the system in text format, it is possible to stop the text stream at any point to know what is the input or the output of a certain module. You just have to type the right commands in the terminal using a pipeline structure so that the standard output of one is used as the standard input for the next one.<br />
<br />
Using the echo or cat commands, you can send a text through one or more modules to analyse their output and detect the origin of the error. You have to move to the directory where the linguistic data are saved and type the commands explained below.<br />
<br />
===The morphological analyser output===<br />
To know how a word is analysed by the translator, type the following in the terminal (example for the Catalan word gener):<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
You can replace ca-es with the translation direction you want to test.<br />
<br />
The output in Apertium should be:<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
The string structure is: <code>^word/lemma<morphological analysis>$</code>. The <code><sent></code> tag is the analysis of the full stop, as every sentence end is represented as a full stop by the system, whether or not explicitly indicated in the sentence.<br />
<br />
The analysis of an unknown word is (ignoring the full stop information):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
and the analysis of an ambiguous word:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Each lexical form (lemma plus morphological analysis) is presented as a possible analysis of the word casa.<br />
<br />
===The tagger output===<br />
<br />
To know the output of the tagger for a source language text, type the following in the terminal (example for the Catalan-Spanish direction):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
The output will be:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
The output for an ambiguous word will be like the one above, since the tagger chooses one lexical form. Therefore, the output for casa in Catalan will be, for example (depending on the context):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===The pretransfer output===<br />
<br />
This module applies some changes to multiwords (move the lemma queue of a multiword with inner inflection just after the lemma head). To know its output, type:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Since gener is not a multiword in the dictionaries, this module does not alter its input.<br />
<br />
===The structural transfer output===<br />
<br />
To know how a word, phrase or sentence is translated into the target language and processed by structural transfer rules, type the following in the terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
The output for the Catalan word gener will be:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Analysing how a word or phrase is output by this module can help you detect errors in the bilingual dictionary or in the structural transfer rules. Typical bilingual dictionary errors are: two equivalents for the same source language lexical form, or wrong assignment of morphological symbols. Errors due to structurual transfer rules vary a lot depending on the actions performed by the rules.<br />
<br />
===The morphological generator output===<br />
<br />
To know how a word is generated by the system, type the following in the terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
With this command you can detect generation errors due to an incorrect entry in the target language monolingual dictionary or to a divergence between the output of the bilingual dictionary (the output of the previous module) and the entry in the monolingual dictionary.<br />
<br />
The correct output for the input "gener" would be:<br />
<pre><br />
enero.[][]<br />
</pre><br />
There are in this case no morphological symbols, and the word appears inflected.<br />
<br />
===The post-generator output===<br />
<br />
It is not very usual to have errors due to the postgenerator, because of its generally small size and the fact that it is seldom changed after adding usual combinations, but you can also test how a source language text comes out of this module, by typing:<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===The final output===<br />
<br />
You can put all the modules of the system in the pipeline structure and see how a source language text goes through all the modules and gets translated into the target language. You just have to add the reformatter to the previous command:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
<br />
This is the same as using the "apertium" shell script provided by the Apertium package:<br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(The full stop indicates the directory where the linguistic data are saved.)<br />
<br />
Of course, instead of typing all the presented commands every time you need to test a translation, you can create shell scripts for every action and use them to test the output of each module.<br />
<br />
Error examples<br />
<br />
To be written.<br />
<br />
<br />
[[Category:Documentation]]<br />
<br />
== Generating a new Apertium system from modified data ==<br />
If you make changes to any of the linguistic data files of Apertium (the dictionaries, the transfer rules, the tagger file or corpora or the postgeneration dictionaries), the changes will not be applied until you recompile the modules. To do this, type 'make' in the directory where the linguistic data are saved (apertium-es-ca, apertium-es-gl or what may be applicable) so that the system generates the new binary files.<br />
<br />
If changes were made to the tagger file or to the corpora used to train the tagger, you will need also to retrain the tagger. In the same directory mentioned above, after typing make, type make train in order to perform the retraining.<br />
<br />
Now the Apertium translator will work using the recently added data.<br />
<br />
==See also==<br />
<br />
* [[Comment contribuer à une paire de langues existante]]<br />
<br />
* [[Cómo contribuir a un par de lenguas existentes]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=C%C3%B3mo_Contribuir_a_un_par_de_lenguas_existentes&diff=3136Cómo Contribuir a un par de lenguas existentes2007-12-19T14:28:07Z<p>172.17.30.131: /* *See *also */</p>
<hr />
<div>{#unknown{^*TOCD}}<br />
<br />
Cómo Añadir datos lingüísticos a un par de las lenguas existentes a *Apertium. *Apertium Tiene datos para muchos pares de lenguas. Estos datos lingüísticos comprenden principalmente diccionarios (*monolingues y bilingües), de las reglas de *transfert estructural quién realizan operaciones *grammaticales y otras transformaciones entre dos lenguas implicadas, y de los datos *lexicales para el *PoS *tagger, quién es en carga de la *désambiguation del texto de la lengua de salida.<br />
<br />
Todos estos datos lingüísticos son comprendidas en un solo repertorio. Por ejemplo, <código>*apertium-eres-*ca</código> para el par español-catalán. A continuación, os describimos los ficheros que os podéis encontrar en este repertorio.<br />
<br />
<br />
==Ejemplo de edición de los ficheros==<br />
<br />
===*Apertium 1===<br />
<br />
<br />
Para el par español-catalán (*apertium-eres-*ca):<br />
<br />
* *apertium-Eres-*ca.Eres.Diez : Diccionario *monolingue español, habiendo 11,800 entradas (desde el 17 de noviembre de 2005) <br />
* *apertium-eres-*ca.*ca.Diez : Diccionario *monolingue catalán, habiendo 11,800 entradas.<br />
* *apertium-Eres-*ca.Eres-*ca.Diez : Diccionario bilingüe español-catalán, habiendo 12,800 entradas (*correspondences español-catalán).<br />
* *apertium-Eres-*ca.*trules-Eres-*ca.*xml : Reglas de *transfert estructural para la traducción del español al catalán.<br />
* *apertium-Eres-*ca.*trules-*ca-Eres.*xml : Reglas de *transfert estructural para la traducción del catalán al español.<br />
* *apertium-Eres-*ca.Eres.*tsx : Fichero de definición del *tagger para el español<br />
* *apertium-eres-*ca.*ca.*tsx : Fichero de definición del *tagger para el catalán<br />
* *apertium-eres-*ca.*post-Eres.Diez : Diccionario de *post-generación para el español, con 25 entradas y 5 paradigmas (pedidos en el momento de traducir del catalán al español)<br />
* *apertium-eres-*ca.*post-*ca.Diez : Diccionario de *post-generación para el catalán, con 16 entradas y 57 paradigmas (pedidos en el momento de traducir del español al catalán)<br />
* repertorio eres-*tagger-dató : Contiene los datos necesarios para el *tagger español (*corpus, etc.)<br />
* Repertorio *ca-*tagger-dató : Contiene los datos necesarios para el *tagger catalán (*corpus, etc.)<br />
<br />
== Cómo Añadir palabras en los diccionarios ==<br />
<br />
En el momento de desarrollar o de adaptar *Apertium, la operación quién será realizada más probablemente será el desarrollo de sus diccionarios. De hecho, será mucho más común que el *ajout de las reglas de *transfert o de *post-generación.<br />
<br />
Importante: A cada vez que las modificaciones de un grupo son hechas para cada diccionario, los módulos tengan que estar *compilés nuevamente. Pegáis '*make' en el repertorio dónde los datos lingüísticos son guardadas (*apertium-eres-*ca, *apertium-eres-*gl o lo que puede ser aplicable) para que el sistema genera nuevos ficheros *binaires.<br />
<br />
Si os queréis añadir una nueva palabra a *Apertium, os tenéis que añadir tres entradas en los diccionarios. Suponemos que os trabajáis con el par español-catalán. En este caso, os tenéis que añadir:<br />
<br />
<br />
# Una entrada en el diccionario *monolingue español: para que el traductor pueda analizar ("comprender") la palabra cuando lo encuentra en un texto, y generarlo cuando va a traducirlo hacia el español.<br />
# Una entrada en el diccionario bilingüe: para que os podáis decir a *Apertium cómo traducir esta palabra de una lengua a la otra.<br />
# Una entrada en el diccionario *monolingue catalán: para que el traductor pueda analizar ("comprender") la palabra cuando lo encuentra en un texto, y generarlo cuando va a traducirlo hacia el catalán.<br />
<br />
Os tendréis que ir al repertorio habiendo los diccionarios *XML (para el par español-catalán, es *apertium-eres-*ca) y abrir con un editor de texto o un editor *XML especializado los tres ficheros de los diccionarios *précités: *apertium-eres-*ca.Eres.Diez, *apertium-eres-*ca.Eres-*ca.Diez *and *apertium-eres-*ca.*ca.Diez. Las entradas que os tenéis que crear en estos tres diccionarios comparten una estructura común.<br />
<br />
== Diccionario *monolingue (Español) ==<br />
<br />
Os queréis, por ejemplo, añadir el adjetivo español « *cósmico », cuyo el equivalente en catalán es « *còsmic ». La primera etapa es de añadir esta palabra en el diccionario *monolingue español. Os podéis constatar que un diccionario *monolingue ha esencialmente dos tipos de los datos: los paradigmas (a la sección "<*pardefs>" del diccionario, cada paradigma en un elemento <*pardef>) y las entradas de las palabras a la sección> « mano » del diccionario, cada una en un elemento <*e>). Las entradas de las palabras son de las *lemmes (eso representa la palabra como lo encontraríais en un diccionario en papel) más la información *grammaticale; los paradigmas contienen los datos de inflexión de todas las *lemmes en el diccionario. Os podéis encontrar una palabra en particular buscando la secuencia *lm="palabra" (*lm significa *lemme). (El elemento *lm es opcional y otros diccionarios pueden haberlo no).<br />
Miráis las entradas de las palabras en el diccionario *monolingue español, por ejemplo, la entrada del adjetivo « *bonito ». Os podéis encontrarla buscando *lm=« *bonito »:<br />
<br />
<*e *lm="*bonito"><br />
<I>*bonit</i><br />
<por *n="*absolut/*o__*adj"/><br />
</*e><br />
Para añadir una palabra, os tendréis que crear una entrada con la misma estructura. La parte entre <i> y </i> contiene el *préfixe de la palabra lo que es común para todas las formas desviadas, y el elemento <por> hecho referencia a la inflexión del paradigma de esta palabra. Por consiguiente, esta entrada significa que el adjetivo « *bonito » desvía todo como el adjetivo « *absoluto » habiendo el mismo análisis *morphologique: las formas *bonito, *bonita, *bonitos, *bonitas son equivalentes a las formas *absoluto, *absoluta, *absolutos, *absolutas habiendo el análisis *morphologique: *adj m *sg, *adj f *sg, *adj m *pl *and *adj f *pl respectivamente.<br />
Ahora, os tenéis que decidir qué es la categoría *lexicale de la palabra que os queréis añadir. La palabra « *cósmico » es un adjetivo como « *bonito ». Por la continuación, os tenéis que encontrar el paradigma apropiado para este adjetivo. Ha- la misma inflexión que « *bonito » y « *absoluto »? Poded decir *cósmico, *cósmica, *cósmicos, *cósmicas? La respuesta es sí. Con toda esta información os podéis ahora crear la entrada correcta:<br />
<br />
<*e *lm="*cósmico"><br />
<I>*cósmic</i><br />
<por *n="*absolut/*o__*adj"/><br />
</*e><br />
<br />
Si la palabra que os queréis añadir ha un paradigma diferente, os tenéis que buscarlo en el diccionario y asignarlo a la entrada. Os habéis dos caminos para encontrar el paradigma apropiado: sea mirando la sección <*pardefs> del diccionario, dónde todos los paradigmas son definidos en un elemento <*pardefs>, sea buscando otra palabra quién podría ya existir en el diccionario habiendo la misma inflexión del paradigma que la palabra a añadir. Por ejemplo, si os queréis añadir la palabra « *genoma » os tenéis que encontrar un paradigma apropiado para un nombre cuyo género es masculino y quién hace son plural añadiendo una s. Este será el paradigma « *abismo_*n » en nuestro diccionario actual. Por consiguiente, la entrada de esta nueva palabra sería:<br />
<br />
<*pre><br />
<*e *lm="*genoma"><br />
<I>*genoma</i><br />
<por *n="*abismo__*n"/><br />
</*e><br />
</*pre><br />
<br />
En casos excepcionales os tendréis que crear un nuevo paradigma para una cierta palabra . Os podéis miráis la estructura otra paradigmas y en crear un correctamente. Para una descripción más detallada de los paradigmas y de las entradas de las palabras en los diccionarios, consultáis la sección 3.1.2 de la documentación del sistema.<br />
<br />
== Diccionario *monolingue (Catalán) ==<br />
<br />
<br />
Una vez que os habéis añadido la palabra en un diccionario *monolingue, os tenéis que rehacerlo en el otro diccionario *monolingue del par de traducción (en nuestro ejemplo, el diccionario *monolingue catalán) utilizando la misma estructura. El resultado sería:<br />
<br />
<*pre><br />
<*e *lm="*còsmic"><br />
<I>*còsmi</i><br />
<por *n="*acadèmi/*c__*adj"/><br />
</*e><br />
</*pre><br />
<br />
<br />
== Diccionario *monolingue (Gallego) ==<br />
<br />
En caso de que os intentáis de mejorar los diccionarios *XML para el par español-gallego, os tendréis que dirigir al repertorio *apertium-eres-*gl y os tendréis que abrir con un editor de texto o con un editor *XML especializado los tres ficheros de los diccionarios *apertium-eres-*gl.Eres.Diez, *apertium-eres-*gl.Eres-*gl.Diez *and *apertium-eres-*gl.*gl.Diez. En este caso, una vez que os habéis añadido la nueva palabra español « *genoma » en el diccionario *monolingue español (*apertium-eres-*gl.Eres.Diez), os tenéis que añadir la palabra gallega equivalente « *xenoma » en el diccionario *monolingue gallego (*apertium-eres-*gl.*gl.Diez), este sería:<br />
<br />
<*pre><br />
<*e *lm="*xenoma"><br />
<I>*xenoma</i><br />
<por *n="*Xulio__*n"/><br />
</*e><br />
</*pre><br />
<br />
== Diccionario bilingüe ==<br />
<br />
La última etapa consiste en añadir la traducción en el diccionario bilingüe. Normalmente, un diccionario bilingüe no ha paradigmas, pero de los *lemmes. Una entrada contiene sólo el *lemme en ambas lenguas y el primer símbolo *grammatical (la categoría *lexicale) de cada uno.<br />
<br />
Las entradas han un lado izquierdo (<l>) y un lado derecho (<*r>), y cada lengua tiene que colocarse siempre en la misma posición: en nuestro sistema, ha sido convenido que el español ocupa el lado izquierdo y que el catalán, el gallego y el portugués ocupan el lado derecho. Una vez que el lado » ha sido convenido en el sistema, ha hecho falta observar los diccionarios en entera para que la traducción funciona.<br />
<br />
Añadiendo el *lemme de dos palabras, el sistema traducirá todas las formas desviadas (los símbolos *grammaticaux son *copiés de la palabra de la lengua de salida a la palabra de la lengua de llegada. Cela funcionará sólo si la palabra de la lengua de salida y la palabra de la lengua de llegada son *grammaticalement equivalentes, es decir, se comparten exactamente los mismos símbolos *morphologiques para todas sus formas desviadas. Es el caso de nuestro ejemplo; por consiguiente, la entrada que os tenéis que añadir en el diccionario bilingüe este: <br />
<*pre><br />
<*e> <br />
<*p><br />
<l>*cósmico<s *n="*adj"/></l><br />
<*r>*còsmic<s *n="*adj"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Esta entrada traducirá todas las formas desviadas, es decir, <i>*adj m *sg</i>, <i>*adj f *sg</i>, <i>*adj m *pl</i> *and <i>*adj f *pl</i>. Cela funciona para la traducción en ambas direcciones: del español al catalán y del catalán al español.<br />
<br />
En el caso del par español-gallego, la entrada bilingüe siguiente en el diccionario bilingüe español-gallego (*apertium-eres-*gl.Eres-*gl) traducirá todas las formas desviadas para las palabras equivalentes </i>*genoma/*xenoma</i> en ambas direcciones, es decir, del español al gallego y del gallego al español: <br />
<br />
<*pre><br />
<*e> <br />
<*p><br />
<L>*genoma<s *n="*n"/></l><br />
<*r>*xenoma<s *n="*n"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Qué se tiene que hacer si el par de palabras no es equivalente *grammaticalement (sus símbolos *grammaticaux no son exactamente los mismos)? En este caso, os tenéis que precisar todos los símbolos *grammaticaux (en el mismo orden qué son precisados en los diccionarios *monolingues) hasta que os encontráis el símbolo quién difiere entre la palabra de la lengua de salida y la palabra de la lengua de llegada. Por ejemplo, el nombre español « *limón » es masculino y su equivalente en catalán, « *llimona » es femenino. La entrada en el diccionario bilingüe tiene que estar:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*limón<s *n="*n"/><s *n="m"/></l><br />
<*r>*llimona<s *n="*n"/><s *n="f"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Un problema más complicado surge cuando dos palabras tienen símbolos *grammaticaux diferentes y la información *grammaticale de la palabra de la lengua de salida no es suficiente para determinar el género (masculino o femenino) o el número (singular o plural) de la palabra de la lengua de llegada. Tomáis a título de ejemplo el adjetivo español « *canadiense ». Su género es (masculino-femenino) y él queda *invariable, es decir, puede seguir sea un nombre masculino, sea un nombre femenino (*hombre *canadiense, *mujer *canadiense). Del otro lado, en catalán el adjetivo ha una inflexión diferente para el masculino y el femenino (*home *canadenc, *dona *canadenca). Por consiguiente, cuando se tradujo del español al catalán no es posible a saber si el adjetivo español (*mf) tiene que estar traducido como un adjetivo femenino o masculino al catalán, sin mirar la palabra que lo acompaña. En este caso, el símbolo « *GD » (« género a determinar ») es utilizado en lugar del símbolo de género. El género de las palabras será determinado por el módulo de *transfert estructural, mediante una regla de *transfert (una regla quién detecta el género del nombre precedente en este caso preciso).<br />
<br />
Por consiguiente, « *GD » tiene que estar empleado sólo cuando se tradujo del español al catalán, pero en absoluto cuando se tradujo del catalán al español, siendo dado qué en español el género será siempre « *mf » qué qué sea el género de la palabra original.<br />
<br />
En el diccionario bilingüe os tendréis que añadir, en este caso, varias entradas con indicaciones *directionnelles, ya que os tenéis que precisar en qué dirección de traducción el género resto *indéterminé. Las entradas para este adjetivo serían: <br />
<br />
<*pre><br />
<*e *r="*LR"><br />
<*p><br />
<L>*canadiense<s *n="*adj"/><s *n="*mf"/></l><br />
<*r>*canadenc<s *n="*adj"/><s *n="*GD"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*canadiense<s *n="*adj"/><s *n="*mf"/></l><br />
<*r>*canadenc<s *n="*adj"/><s *n="f"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*canadiense<s *n="*adj"/><s *n="*mf"/></l><br />
<*r>*canadenc<s *n="*adj"/><s *n="m"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
« *LR » Significa « *left *to *right » (de izquierda a derecha), y « *RL », « *right *to *left » (de derecha a izquierda). Como el español es a derecha y el catalán a izquierda, el adjetivo será « *GD » sólo cuando se tradujo del español al catalán (« *LR »). Para la traducción « *RL » os tenéis que crear dos entradas, la una para el adjetivo femenino y el otro para el adjetivo masculino.<br />
<br />
El mismo principio es aplicado cuando no es posible de determinar el número (singular o plural) de la palabra de llegada a causa de las razones indicadas aquí-encima. Por ejemplo, el nombre español « *rascacielos » (rascacielos) es *invariable enumera, es decir, él puede ser singular así como plural (<i>un *rascacielos, espalda *rascacielos</i>). En catalán, de otro lado, el nombre ha una inflexión diferente para el singular y para el plural (<i>un *gratacel, espalda *gratacels</i>). En este caso, el símbolo utilizado es « *ND » (« número a determinar ») y las entradas serían como ésta:<br />
<br />
<*pre><br />
<*e *r="*LR"><br />
<*p><br />
<L>*rascacielos<s *n="*n"/><s *n="m"/><s *n="*sp"/></l><br />
<*r>*gratacel<s *n="*n"/><s *n="m"/><s *n="*ND"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*rascacielos<s *n="*n"/><s *n="m"/><s *n="*sp"/></l><br />
<*r>*gratacel<s *n="*n"/><s *n="m"/><s *n="*pl"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*rascacielos<s *n="*n"/><s *n="m"/><s *n="*sp"/></l><br />
<*r>*gratacel<s *n="*n"/><s *n="m"/><s *n="*sg"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Para una descripción más detallada de este tipo de entrada, consultáis la sección 3.1.2.4.2 de la documentación del sistema.<br />
<br />
<br />
== Cómo Añadir restricciones *directionnelles == <br />
<br />
En el ejemplo precedente nos hemos visto ya la utilización de las restricciones *directionnelles para entradas con el género y el número *indéterminés (« *GD » o « *ND »). Las restricciones pueden estar igualmente hechas en otros casos. Es importante de anotar que la versión actual de *Apertium no puede proporcionar que un equivalente para cada forma *lexicale de la lengua de salida (una forma *lexicale es el *lemme más su información *grammaticale), es decir, la *désambiguation del sentido de la palabra no es realizada. [Nota: El sistema no realiza que la *désambiguation de la parte del discurso para las palabras *homographes, es decir, para palabras ambiguas quiénes pueden estar analizados a varias formas *lexicales, como « *vino » en español, quién puede significar « vino » así como « vino - /ha venido/*e ». Este tipo de *désambiguation es realizada por el *tagger.] Cuando un *lemme puede ser traducido de dos o varios modos, hace falta escoger una (la más general, la más frecuente,etc.). Os podéis decir a *Apertium que una cierta palabra tiene que estar comprendido (analizado) pero generado, porque este no es la traducción de un *lemme de la lengua de salida.<br />
<br />
Nos vamos ver eso con un ejemplo. La palabra española « *muñeca » puede ser traducido en catalán de dos modos diferentes según el sentido: « *canell » (muñeca) o « *nina » (muñeca). El contexto decide qué traducción es la correcta, pero *Apertium, en su estado actual, no puede tomar una tal decisión (miráis, no obstante, a la sección de las unidades *multimots para ver cómo evitar este problema). Por consiguiente, os tenéis que decidir la palabra equivalente cuando se tradujo del español al catalán. Del catalán al español, ambas palabras pueden estar traducidos <br />
como « *muñeca » sin ningún problema. Os tenéis que precisar todas estas circunstancias en las entradas del diccionario utilizando de las restricciones *directionnelles (« *LR » quiénes significa « *left *to *right », es decir, español-catalán, y « *RL » quién significa « *right *to *left », es decir, catalán-español). Si os decidís de traducir « *muñeca » como « *canell » de todas maneras, las entradas en el diccionario bilingüe serían:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*muñeca<s *n="*n"/><s *n="f"/></l><br />
<*r>*canell<s *n="*n"/><s *n="m"/></*r><br />
</*p><br />
</*e><br />
<br />
<*e *r="*RL"><br />
<*p><br />
<L>*muñeca<s *n="*n"/></l><br />
<*r>*nina<s *n="*n"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Cela quiere decir que las direcciones de traducción serán: <br />
<br />
*muñeca --> *canell<br />
*muñeca <-- *canell<br />
*muñeca <-- *nina<br />
<br />
(Anotáis que ha también un cambio de género en el caso de « *muñeca » (femenino) y « *canell » (masculino))<br />
<br />
Tiene que estar subrayado que un *lemme no puede haber dos traducciones en la lengua de llegada, porque el sistema produciría un error cuando se tradujo este *lemme (consultáis la sección « Cómo detectar los errores » aquí-debajo para ver cómo encontrar y *corriger estos errores y otros tipos de errores). Cuando una palabra puede ser traducida de dos modos diferentes en la lengua de llegada aproximadamente sea el contexto, os tenéis que escoger un como el equivalente de traducción y en dejar la otra como un *lemme quién puede ser analizado, pero generado, utilizando de las restricciones *directionnelles como en el ejemplo precedente. Por ejemplo, los *lemmes catalana « palabra » y « *paraula » pueden estar traducidos al español como « *palabra » (palabra), pues la entrada en el diccionario bilingüe sería:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*palabra<s *n="*n"/></l><br />
<*r>*paraula<s *n="*n"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*palabra<s *n="*n"/><s *n="f"/></l><br />
<*r>palabra<s *n="*n"/><s *n="m"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Por consiguiente, para estos *lemmes las direcciones de traducción serán: <br />
<br />
*palabra --> *paraula<br />
*palabra <-- *paraula<br />
*palabra <-- Palabra<br />
<br />
Alguno tiene que también precisar las restricciones con relación a la dirección de traducción en el diccionario *monolingue. Por ejemplo, ambas formas españolas « *cantaran » o « *cantasen » son analizadas como « *cantar », verbo, *subjonctif *imparfait, 3*ème persona del plural, pero cuando se genera el texto en español, alguno tiene que decidir qué forma va a estar generado. Los diccionarios *monolingues son leídos en ambas direcciones según su objetivo: para el análisis, la dirección de lectura es izquierda a derecha; para la generación, de derecha a izquierda. Por consiguiente, la palabra quién tiene que estar analizado, pero generado, tiene que haber la restricción « *LR », y la palabra quién tiene que estar generado, pero analizado, tiene que haber la restricción « *RL ».<br />
<br />
<br />
== Cómo Añadir de los *multimots ==<br />
<br />
Es posible de crear entradas constituidas de dos o varias palabras, siempre y cuando estas palabras puedan construir una sola unidad de traducción ».<br />
Estas unidades *multimots » pueden también estar útiles cuando hace falta escoger el equivalente correcto para una palabra en una expresión fija. Por ejemplo, la palabra española « *dirección » puede ser traducido de dos modos al catalán: « *direcció » (dirección, dirección y gestión de empresas) y «*adreça» (dirección); puede constituir, por ejemplo, de las unidades *multimots frecuentes tales que « *dirección *general » --> « *direcció *general » (dirección general) y « *dirección postal » --> « *adreça postal » (dirección postal). Esto puedo ayudar a obtener una mejor traducción en algunas situaciones.<br />
<br />
Las unidades *multimots pueden estar *catégorisées como: de los *multimots con una inflexión interna y de las *multimots sin una inflexión interna.<br />
<br />
Los *multimots sin una inflexión interna son como las entradas de una palabra, pero hace falta *insérer el elemento <*b/> (quién representa un blanco) entre las palabras quiénes componen la unidad. Por consiguiente, si os queréis añadir, por ejemplo, el *multimot español « *hoy en *día » (hoy), cuyo el equivalente en catalán es « *avui *dia », las entradas que os tenéis que añadir en los tres diccionarios son:<br />
<br />
<br />
* Diccionario *monolingue español:<br />
<br />
<*pre><br />
<*e *lm="*hoy *día"><br />
<i>*hoy<*b/>en<*b/>*día</i><br />
<por *n="*ahora__*adv"/><br />
</*e><br />
</*pre><br />
<br />
* Diccionario *monolingue catalán:<br />
<br />
<*pre><br />
<*e *lm="*avui *dia"><br />
<I>*avui<*b/>*dia</i><br />
<por *n="*ahir__*adv"/><br />
</*e><br />
</*pre> <br />
<br />
* Diccionario bilingüe español-catalán:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*hoy<*b/>en<*b/>*día<s *n="*adv"/></l><br />
<*r>*avui<*b/>*dia<s *n="*adv"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Para el par español-gallego, si os queréis añadir, por ejemplo, el *multimot español « *manga *por *hombro » (ser sentido encima debajo) cuyo el equivalente en gallego es « *sen *xeito *nin *modo ». Las entradas que os tenéis que añadir son:<br />
<br />
* Diccionario *monolingue español:<br />
<br />
<*pre><br />
<*e *lm="*manga *por *hombro"><br />
<I>*manga<*b/>*por<*b/>*hombro</i><br />
<por *n="*abajo__*adv"/><br />
</*e><br />
</*pre><br />
<br />
* Diccionario *monolingue gallego:<br />
<br />
<*pre><br />
<*e *lm="*sen *xeito *nin *modo"><br />
<I>*sen<*b/>*xeito<*b/>*nin<*b/>*modo</i><br />
<por *n="*Deo_*gratias__*adv"/><br />
</*e><br />
</*pre><br />
<br />
* Diccionario bilingüe español-gallego:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*manga<*b/>*por<*b/>*hombro<s *n="*adv"/></l><br />
<*r>*sen<*b/>*xeito<*b/>*nin<*b/>*modo<s *n="*adv"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Los *multimots con una inflexión interna son constituidos palabra quién puede desviar (normalmente un verbo) y de un elemento *invariable. Para estas entradas os tenéis que precisar el paradigma de inflexión justa después de la palabra quién desvía. La parte *invariable tiene que estar marcada con el elemento <g> en el lado derecho. Los blancos entre las palabras son indicados, como en el caso precedente, con el elemento <*b/>. Miráis el ejemplo siguiente para el *multimot español « *echar de *menos » (faltar), tradujo al catalán como « *trobar ha *faltar »: <br />
<br />
* Diccionario *monolingue español:<br />
<br />
<*pre><br />
<*e *lm="*echar De *menos"><br />
<i>*ech</i><br />
<por *n="*aspir/*ar__*vblex"/><br />
<*p><br />
<l><*b/>de<*b/>*menos</l><br />
<*r><g><*b/>de<*b/>*menos</g></*r><br />
</*p><br />
</*e> <br />
</*pre><br />
<br />
* Diccionario *monolingue catalán:<br />
<br />
<*pre><br />
<*e *lm="*trobar Ha *faltar"><br />
<i>*trob</i><br />
<por *n="*abander/*ar__*vblex"/><br />
<*p><br />
<l><*b/>ha<*b/>*faltar</l><br />
<*r><g><*b/>ha<*b/>*faltar</g></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
* Diccionario bilingüe español-catalán:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*echar<g><*b/>de<*b/>*menos</g><s *n="*vblex"/></l><br />
<*r>*trobar<g><*b/>ha<*b/>*faltar</g><s *n="*vblex"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
<br />
== En resumen introducción a los paradigmas ==<br />
<br />
<br />
Los paradigmas de los ejemplos precedentes contienen sólo un símbolo de la forma *lexicale, ya que los adverbios no han inflexión. Os podéis constatarlo en este ejemplo:<br />
<br />
<*pre><br />
<*pardef *n="*ahora__*adv"><br />
<*e><br />
<*p><br />
<L/><br />
<*r><s *n="*adv"/></*r><br />
</*p><br />
</*e><br />
</*pardef><br />
</*pre><br />
<br />
Los paradigmas son construidos como una entrada *lexicale. Nos hemos visto hasta presente de las entradas *lexicales cuya parte común del *lemme es puesta entra <*nowiki><i> </i></*nowiki>:<br />
<br />
<*pre><br />
<*e *lm="*cósmico"><br />
<I>*cósmic</i><br />
<por *n="*absolut/*o__*adj"/><br />
</*e><br />
</*pre><br />
<br />
Sin embargo, os podéis también representar la misma cosa con un par de secuencias: una secuencia a izquierda <l> y una secuencia a derecha <*r> en un elemento <*nowiki><*p></*nowiki> :<br />
<br />
<*pre><br />
<*e *lm="*cósmico"><br />
<*p><br />
<L>*cósmic</l><br />
<*r>*cósmic</*r><br />
</*p><br />
<por *n="*absolut/*o__*adj"/><br />
</*e><br />
</*pre><br />
<br />
Estas dos entradas son equivalentes. El uso del elemento <*nowiki><i></*nowiki> nos ayuda a *simplifier y *compacter las entradas, y os podéis utilizarlo cuando el lado izquierdo y el lado derecho del par *séquentielle son idénticos. Como os hemos explicado ya, los diccionarios *monolingues son leídos *LR para el análisis de un texto y *RL para la generación. Por consiguiente, cuando hay una diferencia entre la secuencia analizada y la secuencia generada (quién no es muy corriendo) la entrada no puede estar escrita mediante el elemento <*nowiki><i></*nowiki>.<br />
En los paradigmas, las secuencias izquierdas y derechas no son nunca idénticas, ya que el lado derecho tiene que contener los símbolos *grammaticales quiénes van a pasar en todos los módulos del sistema.<br />
<br />
<br />
== Consideráis el hecho de proporcionarnos vuestras mejoras de los datos *lexicales ==<br />
<br />
Si os habéis añadido con éxitos de los datos *lexicales banalizadas en cualesquier pares de lenguas de *Apertium, *merci de considerar el hecho de proporcionarlos en el proyecto para que nos podamos ofrecer un mejor *toolbox a la comunidad. Os podéis dirigir vuestros datos (en tres ficheros *XML, un fichero para cada diccionario *monolingue y otro para el diccionario bilingüe) a las direcciones siguientes: <br />
<br />
<*pre><br />
Datos españoles-catalanes<br />
Mireia *Ginestí: *mginesti [*at] *dlsi [dote] *ua [dote] eres<br />
Dadas español-portugués <br />
Carme *Armentano: *carmentano [*at] *dlsi [dote] *ua [dote] eres<br />
Dadas español-gallego<br />
Xavier Gómez-*Guinovart: *xgg [*at] *uvigo [dote] eres<br />
</*pre><br />
<br />
Si os opináis que os vais contribuir más profundamente en el proyecto, os podéis inscribir en el equipo de desarrollo sobre *www.*sourceforge.Limpio. Si os no habéis una cuenta a *sourceforge, *merci de crear una; después dirigíos a Mikel L. Forcada (*mlf [*at] *ua [dote] eres), a Sergio Ortiz (*sortiz [*at] *dlsi [dote] *ua [dote] eres) o a Xavier Gómez *Guinovart, si os habéis interesado en el par de lenguas españolas-gallegas, y explicáis *brièvement vuestras motivaciones y vuestras experiencias profesionales para inscribiros en el proyecto. El modo más corriente de contribuir <br />
es de utilizar *CVS; tanto que un miembro del proyecto, os tendréis que estar capaz de grabar directamente vuestros cambios en los diccionarios. <br />
<br />
El *ajout de las contribuciones *lexicales simples ha sido recientemente *simplifié mediante formularios sobre la web a *http://*xixona.*dlsi.*ua.Eres/prototipo/*webform/, con el fin de que los que contribuyen no tengan que tratar directamente con *XML. <br />
<br />
Os tendríais que estar consciente ya que los datos que os habéis proporcionado en el proyecto, unas veces agregadas, serán distribuidas libremente conforme a la actual licencia (*GNU *General Público *License ahora bien *Creative *Commons 2.5 atribución-*sharealike-*noncommercial, tal qué es indicada). Aseguraos que los datos proporcionados no son afectadas por ningún tipo de licencia pudiendo estar incompatible con las licencias utilizadas en este proyecto. Ningún tipo de compromiso o contrato es hecho entre os y los que desarrollan el proyecto. Si os tenéis cuestiones u os consideráis de hacer una contribución masiva, *contactez Mikel L. Forcada.<br />
<br />
<br />
== Cómo Añadir reglas de *transfert estructural (*grammaire) ==<br />
<br />
Las reglas de *transfert estructural realizan transformaciones en el texto *désambiguïsé, lo que es necesario a causa de las discrepancias *grammaticales, *syntaxiques y *lexicales entre ambas lenguas implicadas (de los cambios de género y de número quién aseguran un acuerdo en la lengua de llegada, la apuesta en orden de las palabras, de los cambios de las preposiciones,etc.). Las reglas detectan motivos (secuencias) en las formas *lexicales del texto de salida y les aplican las transformaciones correspondientes. El módulo detecta por lectura el motivo más largo izquierdo-derecha; por ejemplo, la frase « *the *big *cat » será detectada y tratada por la regla para determinante – adjetivo – nombre y no por la regla para determinar – adjetivo, porque el primer modelo es el más largo. Si dos motivos han la misma longitud, la regla aplicada es la que es definida en primero.<br />
<br />
El módulo de *transfert estructural (generado a marchar del fichero de las reglas de *transfert estructural) llama el módulo de *transfert *lexical (generado a marchar del diccionario bilingüe) colgando todo el proceso para determinar los equivalentes de la lengua de llegada a marchar de las formas *lexicales de la lengua de salida.<br />
<br />
Las reglas de *transfert estructural son comprendidas en un fichero *XML, cada una para cada dirección de traducción (por ejemplo, para la traducción del español al catalán, el fichero es *apertium-eres-*ca.*trules-Eres-*ca.*xml). Os tenéis que editar este fichero si os queréis añadir o modificar reglas de *transfert. <br />
<br />
Las reglas han un motivo y una parte de acción. El motivo precisa qué secuencias de las formas *lexicales tengan que estar detectadas y tratadas. La acción descrita las comprobaciones y las transformaciones quiénes tengan que estar hechas en sus constituyentes. Las operaciones de transformación las más corrientes (tales que el acuerdo de género y de número) son definidas en una *macroinstruction quién es llamada adentro de la regla. Al final de la parte de la acción de la regla, las formas *lexicales *résultantes de la lengua de llegada son enviadas con el fin de que sean tratadas por los módulos siguientes en el sistema de traducción.<br />
<br />
Un fichero de reglas de *transfert contiene cuatro secciones con las definiciones de los elementos utilizados en las reglas, y una quinta sección dónde las reglas actuales son definidas. Las secciones son las siguientes:<br />
<br />
* <Sección-*def-*cats>: Esta sección contiene la definición de las categorías quiénes serán utilizadas en los motivos de las reglas (es decir, el tipo de las formas *lexicales quiénes será detectado por una regla *quelconque). En lo que respecta a la regla presentada aquí-debajo, las categorías « *det » y « nombre » (determinante y nombre) tengan que estar definidas aquí. Las categorías son definidas precisando los símbolos *grammaticaux correspondientes a las formas *lexicales. Un *astérisque muestra que un o varios símbolos siguen los que han sido precisados. El ejemplo siguiente es la definición de la categoría « *det », quién agrupa los determinantes y los *prédéterminants en la misma categoría, porque jueguen el mismo rol en los objetivos de *transfert:<br />
<br />
<*pre><br />
<*def-*cat *n="*det"> <br />
<*cat-*item *tags="*det.*"/><br />
<*cat-*item *tags="*predet.*"/><br />
</*def-*cat><br />
</*pre><br />
<br />
Es también posible de definir un *lemme *quelconque como una categoría. A continuación, os podéis constatarlo con la preposición "en":<br />
<br />
<*pre><br />
<*def-*cat *n="en"><br />
<*cat-*item *lemma="en" *tags="*pr"/><br />
</*def-*cat><br />
</*pre><br />
<br />
<br />
* <Sección-*def-*attrs>: Esta sección contiene la definición de las *attributs quiénes serán utilizados adentro reglas, en la parte de acción. Os habéis necesidad de las *attributs para todas las categorías definidas a la sección precedente, cuando van a estar utilizados en la parte de acción de la regla (para verificarlas o para enviarlas en el final de la regla), así como para las otras *attributs necesarios en la regla (tales que el género y el número). Los *attributs tengan que estar definidos utilizando sus símbolos *grammaticaux correspondientes y no pueden haber de los *astérisques; su nombre tiene que estar único. El ejemplo siguiente muestra las definiciones para las *attributs « ha_*det » (para los determinantes) y « *gen » (para el género): <br />
<br />
<*pre><br />
<*def-*attr *n="Ha_*det"> <br />
<*attr-*item *tags="*det.*def"/><br />
<*attr-*item *tags="*det.*ind"/><br />
<*attr-*item *tags="*det.*dem"/><br />
<*attr-*item *tags="*det.*pos"/><br />
<*attr-*item *tags="*predet"/><br />
</*def-*attr><br />
<br />
<*def-*attr *n="*gen"> <br />
<*attr-*item *tags="M"/><br />
<*attr-*item *tags="f"/><br />
<*attr-*item *tags="*mf"/><br />
<*attr-*item *tags="*nt"/><br />
<*attr-*item *tags="*GD"/><br />
</*def-*attr><br />
</*pre><br />
* <sección-*def-*vars> : Esta sección contiene la definición de las variables utilizadas en las reglas.<br />
<*pre><br />
<*def-*var *n="*interrogativa"/><br />
</*pre><br />
<br />
* <Sección-*def-*macros> : Los *macroinstructions son definidas aquí. Contengan las secuencias de código frecuentemente utilizadas en las reglas; de este modo, los *linguistes no tengan que escribir varias veces las mismas acciones. Ha, por ejemplo, de los *macroinstructions para las operaciones de acuerdo de género y de número.<br />
<br />
* <Sección-*rules> : En esta sección las reglas de *transfert estructural son escritas.<br />
<br />
El ejemplo siguiente muestra una regla quién detecta la secuencia determinante – nombre:<br />
<br />
<*pre><br />
<*rule><br />
<*pattern><br />
<*pattern-*item *n="*det"/><br />
<*pattern-*item *n="Nombre"/><br />
</*pattern><br />
<acción><br />
<*call-*macro *n="f_*concord2"><br />
<*with-*param *pos="2"/><br />
<*with-*param *pos="1"/><br />
</*call-*macro> <br />
<*out> <br />
<leído><br />
<*clip *pos="1" *side="*tl" parte="*whole"/><br />
</leído><br />
<*b *pos="1"/> <br />
<leído><br />
<*clip *pos="2" *side="*tl" parte="*whole"/><br />
</leído> <br />
</*out> <br />
</acción><br />
</*rule><br />
</*pre><br />
<br />
Una parte de la acción efectuada en este motivo es precisada en la *macroinstruction « f_*concord2 » y definida a la sección-*def-*macros>. Cela realiza operaciones de acuerdo de género y de número: se ha un cambio de género o de número entre la lengua de salida y la lengua de llegada (en lo que respecta al nombre), el determinante cambia su género o su número *convenablement; indigna, si el género o el número son *indéterminés (« *GD » o « *ND », lo que es explicado en la sección precedente « Cómo añadir palabras en los diccionarios *monolingues y bilingües »), el nombre recibe el valor de género y de número correcto del determinante precedente. En *Apertium eres-*ca, eres-*gl *and eres-*pt *systems, hay de los *macroinstructions de acuerdo definidas para una, dos, tres o cuatro unidades *lexicales (f_*concord1, f_*concord2, f_*concord3, f_*concord4). Cuando en una regla las *macroinstructions son llamadas, tiene que estar precisado qué es la unidad *lexicale principal (la que determina *convenablement el género y el número de las otras unidades *lexicales) y qué unidades *lexicales del motivo tengan que estar *incluses en las operaciones de acuerdo, por orden de importancia. Cela es hecho con el elemento <*with-*param *pos=""/>. En la regla precedente, la unidad *lexicale principal es el nombre (posición « 2 » en el motivo) y la segunda es el determinante (posición « 1 » en el motivo).<br />
<br />
Después de haber hecho las acciones pertinentes, las formas *lexicales *résultantes son enviadas en el elemento <*out>. Cada unidad *lexicale es definida con un <*clip>. Sus *attributs significan:<br />
<br />
* *pos: Hace referencia en la posición de la forma *lexicale en el motivo. « 1 » es la primera forma *lexicale (el determinante) y « 2 » la segunda (el nombre).<br />
* *side: Indica si la forma *lexicale es en la lengua de salida (« *sl ») o en la lengua de llegada (« *tl »). Bien Sentido, las palabras son enviados siempre en la lengua de llegada; las formas *lexicales de la lengua de salida pueden estar necesitadas en una regla, cuando se *teste sus *attributs o sus características.<br />
* Parte: indica qué parte de la forma *lexicale es implicada en el '*clip'. Os podéis utilizar algunos valores *prédéfinies:<br />
-*whole: la forma *lexicale en entera (*lemme y símbolos *grammaticaux). Utilizado sólo cuando la unidad *lexicale es enviado (en un elemento <*out>).<br />
-*lem: El *lemme de la unidad *lexicale.<br />
-*lemh: La cabeza del *lemme de un *multimot con una inflexión interna.<br />
-*lemq: La cola del *lemme de un *multimot con una inflexión interna.<br />
<br />
Además de estos valores *prédéfinies, os podéis utilizar todo *attribut definido a <sección-*def-*attrs> (por ejemplo « *gen » o « ha_*det »).<br />
<br />
Los valores « *lemh » y « *lemq » son utilizados cuando de los *multimots con una inflexión interna son enviados (veis la sección « Cómo añadir de las *multimots ») para colocar la cabeza y la cola del *lemme en la correcta posición, porque el módulo precedente ha cambiado de lugar la cola justa después de la cabeza del *lemme a causa de las varias razones. En la práctica, sobre nuestro sistema, eso significa que os tenéis que utilizar estos valores en lugar de '*whole' cuando de los verbos son enviados, porque en nuestros diccionarios de los *multimots con una inflexión interna ha siempre verbos. Si os utilizáis el valor '*whole' cuando son enviados, el *multimot no sería bien formado (la cabeza y la cola del *lemme no habría la correcta posición)<br />
<br />
Por consiguiente, una regla habiendo un verbo en su motivo tiene que enviar las formas *lexicales como en ambos ejemplos siguientes:<br />
<br />
<*rule><br />
<*pattern><br />
<*pattern-*item *n="*verb"/><br />
</*pattern><br />
<Acción><br />
<*out> <br />
<leído><br />
<*clip *pos="1" *side="*tl" parte="*lemh"/><br />
<*clip *pos="1" *side="*tl" parte="ha_*verb"/><br />
<*clip *pos="1" *side="*tl" parte="tiempo"/><br />
<*clip *pos="1" *side="*tl" parte="*persona"/><br />
<*clip *pos="1" *side="*tl" parte="*gen"/><br />
<*clip *pos="1" *side="*tl" parte="*nbr"/><br />
<*clip *pos="1" *side="*tl" parte="*lemq"/><br />
</leído> <br />
</*out><br />
</acción><br />
</*rule><br />
<br />
<br />
<*rule><br />
<*pattern><br />
<*pattern-*item *n="*verb"/><br />
<*pattern-*item *n="*prnenc"/><br />
</*pattern><br />
<Acción><br />
<*out><br />
<*mlu><br />
<leído><br />
<*clip *pos="1" *side="*tl" parte="*lemh"/><br />
<*clip *pos="1" *side="*tl" parte="ha_*verb"/><br />
<*clip *pos="1" *side="*tl" parte="tiempo"/><br />
<*clip *pos="1" *side="*tl" parte="*persona"/><br />
<*clip *pos="1" *side="*tl" parte="*nbr"/><br />
</leído><br />
<leído><br />
<*clip *pos="2" *side="*tl" parte="*lem"/><br />
<*clip *pos="2" *side="*tl" parte="ha_*prnenc"/><br />
<*clip *pos="2" *side="*tl" parte="*persona"/><br />
<*clip *pos="2" *side="*tl" parte="*gen"/><br />
<*clip *pos="2" *side="*tl" parte="*nbr"/><br />
<*clip *pos="1" *side="*tl" parte="*lemq"/><br />
</leído> <br />
</*mlu><br />
</*out><br />
</acción><br />
</*rule><br />
<br />
La primera regla detecta un verbo y coloca la cola en la correcta posición, después de eso, los símbolos *grammaticaux. La unidad *lexicale es enviada todo precisando los *attributs *séparément: cabeza del *lemme, categoría *lexicale (verbo), tiempo, persona, género (para los participios), número y cola del *lemme.<br />
<br />
La segunda regla detecta un verbo seguido de un pronombre *enclitique y envío ambas formas *lexicales precisando igualmente las *attributs *séparément; la primera unidad *lexicale es constituida de: cabeza del *lemme, categoría *lexicale (verbo), tiempo, persona y número; la segunda unidad *lexicale es constituida de: *lemme, categoría *lexicale (pronombre *enclitique), persona, género, número y cola del *lemme. Ambas unidades *lexicales (verbo y pronombre *enclitique) son enviados en el elemento <*mlu>, porque tengan que alcanzar el *générateur *morphologique como una unidad *multilexicale (*multimot). <br />
<br />
<br />
Si os queréis añadir una nueva regla de *transfert, os tenéis que seguir estas etapas:<br />
<br />
#Precisáis el motivo que os queréis detectar. Recordaos que las palabras son tratados sólo una vez por regla y que éstas son tratados izquierda-derecha tomando la secuencia más larga. Por ejemplo, imagináis que os tenéis en vuestro fichero de las reglas de *transfert sólo dos reglas, la una para el motivo determinante - nombre » y el otro para el motivo « nombre - adjetivo ». La frase española « *el *valle *verde » (el valle verde) sería detectada y tratada para la primera regla y no por la segunda. Os tendréis que añadir una regla para el motivo determinante – nombre - adjetivo » si os deseáis que las tres unidades *lexicales sean tratadas en el mismo motivo. <br />
#Describís las operaciones que os queréis realizar en el motivo. Sobre *Apertium eres-*ca, eres-*gl *and eres-*pt, de las operaciones de acuerdo simples (acuerdo de género y de número) son fáciles a realizar en una regla mediante una *macroinstruction. Para hacer otras operaciones, os tenéis que utilizar elementos más complicados; para una descripción más detallada del lenguaje empleado para crear reglas, consultáis la sección 3.4.2 de la documentación del sistema. Os podéis igualmente leer la *DTD del fichero de las reglas de *transfert estructural (*transfer.*dtd) Proporcionada con el lote de *Apertium, en el cual todos los elementos del lenguaje son descritos en inglés.<br />
#Enviáis las unidades *lexicales del motivo en la lengua de llegada en el elemento <*out>. Cada unidad *lexicale tiene que estar *incluse en el elemento leído>. Si dos o varias unidades tengan que estar generadas como una unidad *multilexicale (sólo para los pronombres *enclitiques en los pares de lenguas tratadas hasta presente), tengan que estar agrupadas en el elemento <*mlu>.<br />
Todas las palabras detectados por una regla (quién forman parte del motivo) tengan que estar enviados al final de la regla para que el módulo siguiente (el *générateur) los recibe. Si una unidad *lexicale es detectada para un motivo y qué no es *incluse en el elemento <*out>, no será generada.<br />
<br />
<br />
== Cómo Añadir datos en el *tagger de la parte del discurso ==<br />
<br />
A escribir.<br />
<br />
<br />
== Entrenamiento del *tagger de la parte del discurso ==.{#Nom|*Tagger *training}}<br />
<br />
A escribir.<br />
<br />
== Detección de los errores ==<br />
<br />
Es fácil de cometer errores al momento de añadir nuevas palabras o de las reglas de *transfert en el sistema de *Apertium.<br />
<br />
Es posible qué en el momento de *compiler de los nuevos ficheros, el sistema anuncia un mensaje de error. En este caso, es un error de uso (el olvido de una etiqueta *XML, una etiqueta quién no es permitida en un cierto contexto, etc.). Os no habéis qué ir al número de línea indicada para el mensaje de error y *compiler nuevamente. Otros tipos de errores no son detectados en el momento de *compiler, pero eso puede provocar que el sistema no traduzca bien una palabra o qué da una secuencia *textuelle incomprensible. Hay errores lingüísticos quiénes pueden estar detectadas y *corrigées a la ayuda de los consejos dados en este capítulo. La información siguiente es para los usuarios de Linux, porque, de momento, *Apertium no trabaja qué con este HUESO.<br />
<br />
Como todos los datos tratadas por el sistema, desde el texto de salida hacia el texto de llegada, circulan entre los ocho módulos del sistema en formato de texto plano, es posible de arrestar el flujo de texto en cualquier momento con el fin de saber las entradas y las salidas de los datos de un cierto módulo. Os no habéis qué a pegar los órdenes correctos en el terminal utilizando una estructura *pipeline para que la salida estándar de un módulo sea utilizada como la entrada del módulo siguiente.<br />
<br />
Utilizando los órdenes *echo o *cat, os podéis enviar un texto en un o varios módulos para analizar sus salidas y detectar así el origen del error. Os tenéis que ir al repertorio dónde los datos lingüísticos se han guardado y pegar los órdenes explicados aquí-debajo.<br />
<br />
===La salida de la *analysateur *morphologique===<br />
<br />
Para saber cómo una palabra es analizado por el traductor, pegáis el ejemplo siguiente en el terminal (ejemplo de la palabra catalana « *gener »):<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin<br />
</*pre><br />
<br />
Os podéis reemplazar *ca-eres por la dirección de traducción que os queréis *tester.<br />
<br />
La salida a *Apertium tendría que estar:<br />
<br />
<*pre*gener/*gener<*n><M><*sg./.<Siente>$[][]<br />
</*pre><br />
<br />
La secuencia *structurelle es: <código*word/*lemma<*morphological *analysis>$</código>. La etiqueta <código><siente></código> es el análisis de la parada completa, porque todo final de frase es representada por una parada completa en el sistema, que este sea indicado de modo explícito o en la frase.<br />
<br />
El análisis de una palabra desconocida es (ignorando la información de parada completa):<br />
<br />
<*pre*genoma/**genoma$<br />
</*pre><br />
<br />
Y el análisis de una palabra ambigua:<br />
<br />
<*preColocó/colocó<*n><f><*sg>/*casar<*vblex><*pri><*p3><*sg>/*casar<*vblex><*imp><*p2><*sg>$<br />
</*pre><br />
<br />
Cada forma *lexicale (*lemme más el análisis *morphologique) es presentada como un análisis posible de la palabra « colocó »<br />
<br />
===La salida del *tagger===<br />
<br />
Si os queréis conocer la salida del *tagger para el texto de la lengua de salida, pegáis el ejemplo siguiente en el terminal (ejemplo para la dirección catalana-español):<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob<br />
</*pre><br />
<br />
La salida será:<br />
<*pre*gener<*n><m><*sg.<Siente>$[][]<br />
</*pre><br />
<br />
La salida de una palabra ambigua será como el ejemplo precedente, porque el *tagger escogido una forma *lexicale. Por consiguiente, la salida de « colocó » en catalán será, por ejemplo (según el contexto):<br />
<br />
<*preColocó<*n><f><*sg.<Siente>$[][]<br />
</*pre><br />
<br />
===La salida del prado-*transfert===<br />
<br />
Este módulo realiza algunos cambios a los *multimots (desplaza la cola del *lemme de un *multimot con una inflexión interna justa después de la cabeza del *lemme):<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer<br />
</*pre><br />
Como « *gener » no es un *multimot en los diccionarios, este módulo no cambia sus entradas.<br />
<br />
===La salida del *transfert estructural===<br />
<br />
Para saber cómo una frase o una palabra es traducido hacia la lengua de llegada y cómo son tratadas por las reglas de *transfert estructural, pegáis el ejemplo siguiente en el terminal:<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer | *apertium-*transfer *trules-*ca-Eres.*xml *trules-*ca-Eres.*bin *ca-Eres.*autobil.*bin<br />
</*pre><br />
<br />
La salida para la palabra catalana « *gener » será:<br />
<br />
<*pre*enero<*n><M><*sg>$<br />
</*pre><br />
<br />
El hecho de analizar cómo una frase o una palabra ha salido de este módulo puedes ayudar a detectar errores en el diccionario bilingüe o en las reglas de *transfert estructural. Los errores más corrientes de los diccionarios bilingües son: dos equivalentes para la misma forma *lexicale de la lengua de salida, o la mala elección de los símbolos *morphologiques. Los errores provocados por las reglas de *transfert estructural varían mucho según las acciones realizadas por las reglas.<br />
<br />
===La salida del *générateur *morphologique===<br />
<br />
Para saber cómo una palabra es generado por el sistema, pegáis el ejemplo siguiente en el terminal:<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer | *apertium-*transfer *trules-*ca-Eres.*xml *trules-*ca-Eres.*bin *ca-Eres.*autobil.*bin | *lt-*proc -G *ca-eres.*autogen.*bin<br />
</*pre><br />
<br />
Con este orden os podéis detectar errores de generación debida en una entrada incorrecta en el diccionario *monolingue de la lengua de llegada o causadas por la discrepancia entre la salida del diccionario bilingüe (la salida del módulo precedente) y la entrada del diccionario *monolingue.<br />
<br />
La salida correcta para la entrada « *gener » sería:<br />
<*pre><br />
*enero.[][]<br />
</*pre><br />
En este caso, no hay símbolos *morphologiques y la palabra aparece desviado. <br />
<br />
<br />
===La salida del *post-*générateur===<br />
<br />
No es muy corriendo de haber errores debidos al *post-*générateur, gracias a su pequeño tamaño y al hecho qué es modificado raramente después del *ajout de las combinaciones habituales, pero os podéis también *tester cómo el texto de la lengua de salida suerte de este módulo, pegando:<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer | *apertium-*transfer *trules-*ca-Eres.*xml *trules-*ca-Eres.*bin *ca-Eres.*autobil.*bin | *lt-*proc -G *ca-eres.*autogen.*bin | *lt-*proc -*p *ca-Eres.*autopgen.*bin<br />
</*pre><br />
<br />
===La salida final===<br />
<br />
Os podéis poner todos los módulos del sistema en una estructura de *pipeline y ver el pasaje del texto de la lengua de salida por todos los módulos y su traducción hacia la lengua de llegada. Os no habéis qué añadir el *reformatter al orden precedente:<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer | *apertium-*transfer *trules-*ca-Eres.*xml *trules-*ca-Eres.*bin *ca-Eres.*autobil.*bin | *lt-*proc -G *ca-eres.*autogen.*bin | *lt-*proc -*p *ca-Eres.*autopgen.*bin | *apertium-*retxt<br />
</*pre><br />
Es el mismo que el *shell *script « *apertium » proporcionado por el lote de *Apertium: <br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium -D . *ca-Eres<br />
</*pre><br />
<br />
(La parada completa indica el repertorio dónde los datos lingüísticos son guardadas).<br />
<br />
Bien Sentido, en lugar de pegar todos los órdenes, quiénes han sido presentados, a cada vez que os habéis necesidad de *tester una traducción, os podéis crear un *shell *script para cada acción y utilizarlo para *tester la salida de cada módulo.<br />
<br />
Ejemplos de los errores<br />
<br />
A escribir.<br />
<br />
== Cómo Generar un nuevo sistema *Apertium a marchar de los datos modificados ==<br />
<br />
Si os hacéis cambios a cada fichero de los datos lingüísticos de *Apertium (los diccionarios, las reglas de *transfert, el fichero o los *corpus del *tagger, los diccionarios de *post-generación), los cambios no serán efectuados hasta que os *recompilez los módulos. Para hacerlo, pegáis '*make' en el repertorio dónde los datos lingüísticos son guardadas (*apertium-eres-*ca, *apertium-eres-*gl o lo que pueda estar aplicable) para que el sistema genera nuevos ficheros *binaires.<br />
<br />
Si los cambios han sido hechos en el fichero del *tagger o en los *corpus utilizados para entrenar el *tagger, os habréis también necesidad de entrenar nuevamente el *tagger. En el mismo repertorio mencionado aquí-encima, después de haber pegado '*make', pegáis '*make tren' con el fin de efectuar el entrenamiento.<br />
<br />
Ahora, el traductor *Apertium trabajará con los datos recientemente añadidos.<br />
<br />
<br />
==*See *also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
* [[Comment contribuer à une paire de langues existante]]<br />
<br />
== Fuente ==<br />
<br />
*The Original versión *was *transferred *from fuente *http://*apertium.*sourceforge.Limpio/*extending.html.<br />
<br />
[[*Category:Documentación]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Contributing_to_an_existing_pair&diff=3135Contributing to an existing pair2007-12-19T14:25:07Z<p>172.17.30.131: /* See also */</p>
<hr />
<div>{{TOCD}}<br />
Adding linguistic data to an existing language pair in Apertium. Apertium has data for many languages pairs. These linguistic data include mainly dictionaries (monolingual and bilingual), structural transfer rules that perform grammatical and other transformations between the two languages involved, and lexical data for the part-of-speech tagger, which is in charge of the disambiguation of the source language text.<br />
<br />
All these linguistic data are contained in a single directory. For example, <code>apertium-es-ca</code> for the Spanish-Catalan pair. The files that you can find in these directories are described next.<br />
<br />
==Example file layout==<br />
<br />
===Apertium 1===<br />
<br />
For the Spanish–Catalan pair (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Spanish monolingual dictionary, containing 11,800 entries (as of 17 november 2005) <br />
* apertium-es-ca.ca.dix : Catalan monolingual dictionary, containing 11,800 entries.<br />
* apertium-es-ca.es-ca.dix : Spanish-Catalan bilingual dictionary, containing 12,800 entries (correspondences Spanish-Catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Structural transfer rules for the translation from Spanish to Catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Structural transfer rules for the translation from Catalan to Spanish.<br />
* apertium-es-ca.es.tsx : Tagger definition file for Spanish<br />
* apertium-es-ca.ca.tsx : Tagger definition file for Catalan<br />
* apertium-es-ca.post-es.dix : Post-generation dictionary for Spanish, with 25 entries and 5 paradigms (applies when translating from Catalan to Spanish)<br />
* apertium-es-ca.post-ca.dix : Post-generation dictionary for Catalan, with 16 entries and 57 paradigms (applies when translating from Spanish to Catalan)<br />
* directory es-tagger-data : Contains data needed for the Spanish tagger (corpora, etc.)<br />
* directory ca-tagger-data : Contains data needed for the Catalan tagger (corpora, etc.)<br />
<br />
== Adding words to the dictionaries ==<br />
<br />
When extending or adapting Apertium, the most likely operation that will be performed will be to extend its dictionaries. In fact, it will be far more common than adding transfer or post-generation rules.<br />
<br />
IMPORTANT: Every time a set of modifications is made to any of the dictionaries, the modules have to be recompiled. Type make in the directory where the linguistic data are saved (apertium-es-ca, apertium-es-gl or what may be applicable) so that the system generates the new binary files.<br />
<br />
If you want to add a new word to Apertium, you need to add three entries in the dictionaries. Suppose you are working with the Spanish-Catalan pair. In this case, you have to add:<br />
<br />
# an entry in the Spanish monolingual dictionary: so that the translator can analyze ("understand") the word when it finds it in a text, and generate it when translating this word into Spanish.<br />
# an entry in the bilingual dictionary: so that you can tell Apertium how to translate this word from one language to the other.<br />
# an entry in the Catalan monolingual dictionary: so that the translator can analyze ("understand") the word when it finds it in a text, and generate it when translating this word into Catalan.<br />
<br />
You will need to go to the directory containing the XML dictionaries (for the Spanish-Catalan pair, this is apertium-es-ca) and open with a text editor or a specialized XML editor the three dictionary files mentioned: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. The entries you need to create in these three dictionaries share a common structure.<br />
<br />
== Monolingual dictionary (Spanish) ==<br />
<br />
You may want, for example, to add the Spanish adjective "cósmico", whose equivalent in Catalan is "còsmic". The first step is to add this word to the Spanish monolingual dictionary. You will see that a monolingual dictionary has basically two types of data: paradigms (in the "<pardefs>" section of the dictionary, each paradigm inside a <pardef> element) and word entries (in the main <section> of the dictionary, each one inside an <e> element). Word entries consist of a lemma (that is, the word as you would find it in a typical paper dictionary) plus grammatical information; paradigms contain the inflection data of all lemmas in the dictionary. You can search a particular word by searching the string lm="word" (lm meaning lemma). (The element lm is optional and some other dictionaries may not contain it.)<br />
Look at the word entries in the Spanish monolingual dictionary, for example at the entry for the adjective "bonito". You can find it by searching lm="bonito":<br />
<br />
<pre><br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
To add a word, you will have to create an entry with the same structure. The part between <nowiki><i></nowiki> and <nowiki></i></nowiki> contains the prefix of the word that is common to all inflected forms, and the element <par> refers to the inflection paradigm of this word. Therefore, this entry means that the adjective "bonito" inflects like the adjective "absoluto" and has the same morphological analysis: the forms <i>bonito, bonita, bonitos, bonitas</i> are equivalent to the forms <i>absoluto, absoluta, absolutos, absolutas</i> and have the morphological analysis: adj m sg, adj f sg, adj m pl and adj f pl respectively.<br />
<br />
<br />
Now, you have to decide which is the lexical category of the word you want to add. The word "cósmico" is an adjective, like "bonito". Next, you have to find the appropriate paradigm for this adjective. Is it the same as the one for "bonito" and "absoluto"? Can you say <i>cósmico, cósmica, cósmicos, cósmicas</i>? The answer is yes, and, with all this information, you can now create the correct entry:<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
If the word you want to add has a different paradigm, you have to find it in the dictionary and assign it to the entry. You have two ways to find the appropriate paradigm: looking in the <pardefs> section of the dictionary, where all the paradigms are defined inside a <pardef> element, or finding another word that you think may already exist in the dictionary and that has the same inflection paradigm as the one to be added. For example, if you want to add the word "genoma", you need to find an appropriate paradigm for a noun whose gender is masculine and forms the plural with the addition of an -s. This will be the paradigm "abismo__n" in our present dictionaries. Therefore, the entry for this new word would be:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
In exceptional cases you will need to create a new paradigm for a certain word. You can look at the structure of other paradigms and create one accordingly. For a more detailed description of paradigms and word entries in the dictionaries, refer to section 3.1.2 of the system documentation.<br />
<br />
== Monolingual dictionary (Catalan) ==<br />
<br />
<br />
Once you have added the word to one monolingual dictionary, you have to do the same to the other monolingual dictionary of the translation pair (in our example, the Catalan monolingual dictionary) using the same structure. The result would be:<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
== Monolingual dictionary (Galician) ==<br />
<br />
In the case you are trying to improve the XML dictionaries for the Spanish-Galician pair, you will need to go to the directory apertium-es-gl and open with a text editor or a specialized XML editor the three dictionary files apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. In that case, once you have added the new Spanish word "genoma" to the Spanish monolingual dictionary (apertium-es-gl.es.dix), you have to add the equivalent Galician word "xenoma" to the Galician monolingual dictionary (apertium-es-gl.gl.dix), that is:<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Bilingual dictionary ==<br />
<br />
The last step is to add the translation to the bilingual dictionary.<br />
A bilingual dictionary does not usually have paradigms, only lemmas. An entry contains only the lemma in both languages and the first grammatical symbol (the lexical category) of each one. Entries have a left side (<l>) and a right side (<r>), and each language has always to be in the same position: in our system, it has been agreed that Spanish occupies the left side, and Catalan, Galician and Portuguese the right side. Once the "side" of each language has been agreed in a system, it has to be observed all through the dictionaries so that the translation works.<br />
With the addition of the lemma of both words, the system will translate all their inflected forms (the grammatical symbols are copied from the source language word to the target language word). This will only work if the source language word and the target language word are grammatically equivalent, that is, if they share exactly the same morphological symbols for all of their inflected forms. This is the case with our example; therefore, the entry you have to add to the bilingual dictionary is:<br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
This entry will translate all the inflected forms, that is, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. It works for the translation in both directions: from Spanish to Catalan and from Catalan to Spanish.<br />
<br />
In the case of the Spanish-Galician pair, the following bilingual entry in the Spanish-Galician bilingual dictionary (apertium-es-gl.es-gl) will translate all the inflected forms for the equivalent words </i>genoma/xenoma</i> in both directions, that is, from Spanish to Galician and from Galician to Spanish:<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
What to do if the word pair is not equivalent grammatically (their grammatical symbols are not exactly the same)? In that case, you need to specify all the grammatical symbols (in the same order as they are specified in the monolingual dictionaries) until you reach the symbol that differs between the source language word and the target language word. For example, the Spanish noun "limón" has masculine gender and its equivalent in Catalan, "llimona", has feminine gender. The entry in the bilingual dictionary must be as follows:<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
A more difficult problem arises when two words have different grammatical symbols and the grammatical information of the source language word is not enough to determine the gender (masculine or feminine) or the number (singular or plural) of the target language word. Take for example the Spanish adjective "canadiense". Its gender is (masculine-feminine) since it is invariable in gender, that is, it can go both with masculine and feminine nouns (hombre canadiense, mujer canadiense). In Catalan, on the other hand, the adjective has a different inflection for the masculine and the feminine (home canadenc, dona canadenca). Therefore, when translating from Spanish to Catalan it is not possible to know, without looking at the accompanying noun, whether the Spanish adjective (mf) has to be translated as a feminine or a masculine adjective in Catalan. In that case, the symbol "GD" (for "gender to be determined") is used instead of the gender symbol. The word's gender will be determined by the structural transfer module, by means of a transfer rule (a rule that detects the gender of the preceding noun in this particular case).<br />
<br />
Therefore, "GD" must be used only when translating from Spanish to Catalan, but not when translating from Catalan to Spanish, as in Spanish the gender will always be mf regardless of the gender of the original word.<br />
<br />
In the bilingual dictionary you will need to add, in this case, more than one entry with direction indications, as you must specify in which translation direction the gender remains undetermined. The entries for this adjective should be as follows:<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
"LR" means "left to right", and "RL", "right to left". Since Spanish is on the left and Catalan on the right, the adjective will be "GD" only when translating from Spanish to Catalan ("LR"). For the translation "RL" you need to create two entries, one for the adjective in feminine and another one for the adjective in masculine.<br />
The same principle applies when it is not possible to determine the number (singular or plural) of the target word for the same reasons mentioned above. For example, the Spanish noun "rascacielos" (skyscraper) is invariable in number, that is, it can be singular as well as plural (<i>un rascacielos, dos rascacielos</i>). In Catalan, on the other hand, the noun has a different inflection for the singular and for the plural (<i>un gratacel, dos gratacels</i>). In this case the symbol used is "ND" ("number to be determined") and the entries should be like this:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
For a more detailed description of this kind of entries, refer to section 3.1.2.4.2 of the system documentation.<br />
<br />
== Adding direction restrictions ==<br />
<br />
In the previous example we have already seen the use of direction restrictions for entries with undetermined gender or number ("GD" or "ND"). Restrictions can also be used in other cases.<br />
It is important to note that the current version of Apertium can give only a single equivalent for each source-language lexical form (a lexical form is the lemma plus its grammatical information), that is, no word-sense disambiguation is performed. [Note: The system performs only part-of-speech disambiguation for homograph words, that is, for ambiguous words that can be analyzed as more than one lexical form, like vino in Spanish, that can mean both "wine" and "he/she came". This type of disambiguation is performed by the tagger.] When a lemma can be translated in two or more different ways, one has to be chosen (the most general, the most frequent, etc.). You can tell Apertium that a certain word has to be understood (analyzed) but not generated, as it is not the translation of any source-language lemma.<br />
<br />
Let's see this with an example. The Spanish noun "muñeca" can be translated in two different ways in Catalan depending on its meaning: "canell" (wrist) or "nina" (doll). The context decides which translation is the correct one, but in its present state Apertium can not make such a decision (but see below the section on multiword units for ways to circumvent this problem). Therefore, you have to decide which word you want as an equivalent when translating from Spanish to Catalan. From Catalan to Spanish, both words can be translated as "muñeca" without any problem. You have to specify all these circumstances in the dictionary entries using direction restrictions ("LR" meaning "left to right", that is, Spanish-Catalan, and "RL" meaning "right to left", that is, Catalan-Spanish). If you decide to translate "muñeca" as "canell" in all cases, the entries in the bilingual dictionary shall be:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
This means that translation directions will be:<br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Note that that there is also a gender change in the case of "muñeca" (feminine) and "canell" (masculine))<br />
<br />
It should be emphasized that a lemma can not have two translations in the target language, because the system would give an error when translating that lemma (see the section "Detecting errors" below to see how to find and correct these and other types of errors). When a word can be translated in two different ways in the target language in all contexts, you need to choose one as the translation equivalent and leave the other one as a lemma that can be analyzed but not generated, using direction restrictions like in the previous example. For example, the Catalan lemmas "mot" and "paraula" can be both translated into Spanish as "palabra" (word) and the entry in the bilingual dictionary should look like this:<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Therefore, for this lemmas the translation directions will be:<br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
<br />
One may have to specify restrictions regarding translation direction also in monolingual dictionaries. For example, both Spanish forms cantaran or cantasen should be analyzed as cantar,verb, subjunctive imperfect, 3rd person plural, but when generating Spanish text, one has to decide which one will be generated. Monolingual dictionaries are read in two directions depending on its purpose: for the analysis, the reading direction is left to right; for the generation, right to left. Therefore, a word that must be analyzed but not generated must have the restriction "LR", and a word that must be generated but not analyzed must have the restriction "RL".<br />
The case of cantaran or cantasen must have already been taken care of in inflection paradigms and it is unlikely to be a problem for most people extending a dictionary. In some other cases it can be necessary to introduce a restriction in the word entries of monolingual dictionaries.<br />
<br />
== Adding multiwords ==<br />
<br />
It is possible to create entries consisting of two ore more words, if these words are considered to build a single "translation unit".<br />
These "multiword units" can also be useful when it comes to select the correct equivalent for a word inside a fixed expression. For example, the Spanish word "dirección" may be translated into two Catalan words: "direcció" (direction, management, directorate, steering, etc.) and "adreça" (address); including, for example, frequent multiword units such as "dirección general" --> "direcció general" (general directorate) and "dirección postal" --> "adreça postal" (postal address) may help get improved translations in some situations.<br />
<br />
Multiword units can be classified basically into two categories: multiwords with inner inflection and multiwords without inner inflection.<br />
<br />
Multiwords without inner inflection are just like the normal one-word entries, with the only difference that you need to insert the element <b/> (which represents a blank) between the individual words that make up the unit. Therefore, if you want to add, for example, the Spanish multiword "hoy en día" (nowadays), whose equivalent in Catalan is "avui dia", the entries you need to add to the different dictionaries are:<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
For Spanish-Galician pair, if you want to add, for example, the Spanish multiword "manga por hombro" (disarranged), whose equivalent in Galician is "sen xeito nin modo", the entries you need to add are:<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
;Galician monolingual dictionary:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
;Spanish-Galician bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Multiwords with inner inflection consist of a word that can inflect (typically a verb) and an invariable element. For these entries you need to specify the inflection paradigm just after the word that inflects. The invariable part must be marked with the element <g> in the right side. The blanks between words are indicated, like in the previous case, with the element <b/>. Look at the following example for the Spanish multiword "echar de menos" (to miss), translated into Catalan as "trobar a faltar":<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Note that the grammatical symbol is appended at the end, after the group marked with the <g>.<br />
It can be the case that a lemma is a multiword in one language and a single word in the other language. In that case, in the bilingual dictionary, the multiword will contain the <g> element and the single word will not. In the monolingual dictionaries, each entry will be created according to its type. Look at the following example for the Spanish multiword "darse cuenta" (to realize), translated into Catalan as the verb "adonar-se":<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre> <br />
<e lm="darse cuenta"><br />
<i>d</i><br />
<par n="d/ar__vblex"/><br />
<p><br />
<l><b/>cuenta</l><br />
<r><g><b/>cuenta</g></r><br />
</p><br />
</e><br />
</pre> <br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="adonar-se"><br />
<i>adon</i><br />
<par n="abander/ar__vblex"/><br />
</e><br />
</pre><br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>dar<g><b/>cuenta</g><s n="vblex"/></l><br />
<r>adonar<s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Note that the enclitic pronouns (such as "-se") after both the Spanish and Catalan verb forms need not be specified and will be taken care of by structural transfer rules; the correct positioning of clitics is one of the main reasons for using the <g>... </g> labels around the invariable part of multi-word verbs.<br />
<br />
The same principles and actions described for basic entries (gender and number change, direction restrictions, etc.) apply to all kinds of multiwords.<br />
For a more detailed description of multiword units, refer to section 3.1.2.5 of the system documentation.<br />
<br />
== Brief introduction to paradigms ==<br />
<br />
<br />
The paradigms of the previous examples, as adverbs do not inflect, contain only the grammatical symbol of the lexical form, as you see in this example:<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Paradigms are build like a lexical entry. We have seen so far lexical entries where the common part of the lemma is put between <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
But you can also express the same with a pair of strings: a left string <l> and a right string <r> inside a <nowiki><p></nowiki> element:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
These two entries are equivalent. The use of the <nowiki><i></nowiki> element helps get more simple and compact entries, and you can use it when the left side and the right side of the string pair are identical. As has been explained before, monolingual dictionaries are read LR for the analysis of a text and RL for the generation. Therefore, when there is some difference between the analysed string and the generated string (not very usual) the entry can not be written using the <nowiki><i></nowiki> element.<br />
In paradigms, the left and right strings are never identical, since the right side must contain the grammatical symbols that will go through all the modules of the system.<br />
<br />
== Consider contributing your improved lexical data ==<br />
<br />
If you have successfully added general-purpose lexical data to any of the Apertium language pairs, please consider contributing it to the project so that we can offer a better toolbox to the community. You can e-mail your data (in three XML files, one for each monolingual dictionary and another one for the bilingual dictionary) to the following addresses:<br />
<pre><br />
Spanish-Catalan data<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Spanish-Portuguese data<br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Spanish-Galician data<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
If you believe you are going to contribute more heavily to the project, you can join the development team through www.sourceforge.net. If you do not have a sourceforge account, please create one; then write to Mikel L. Forcada (mlf [at] ua [dot] es) or Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) or to Xavier Gómez Guinovart if you are interested in the Spanish-Galician language pair, explaining briefly your motivations and background to join the project. The usual way to contribute is to use CVS; as a project member, you will be able to commit your changes to dictionaries directly.<br />
<br />
The addition of simple lexical contributions has recently been made simpler by means of web forms at http://xixona.dlsi.ua.es/prototype/webform/, so that contributors do not have to deal directly with XML.<br />
<br />
You should be aware that the data you contribute to the project, once added, will be freely distributed under the current license (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, as indicated). Make sure the data you contribute is not affected by any kind of license which may be incompatible with the licenses used in this project. No kind of agreement or contract is created between you and the developers. If you have any doubt, or you plan to make a massive contribution, contact Mikel L. Forcada.<br />
<br />
== Adding structural transfer (grammar) rules ==<br />
Structural transfer rules carry out transformations to the disambiguated text, which are needed because of grammatical, syntactical and lexical divergences between the two languages involved (gender and number changes to ensure agreement in the target language, word reorderings, changes in prepositions, etc.). The rules detect patterns (sequences) of source text lexical forms and apply to them the corresponding transformations. The module detects the patterns in a left-to-right, longest-match way; for example, the phrase "the big cat" will be detected and processed by the rule for determiner - adjective - noun and not by the rule for determiner - adjective, since the first pattern is longer. If two patterns have the same length, the rule that applies is the one defined in the first place.<br />
<br />
The structural transfer module (generated from the structural transfer rules file) calls the lexical transfer module (generated from the bilingual dictionary) all through the process to determine the target language equivalents of the source language lexical forms.<br />
<br />
The structural transfer rules are contained in a XML file, one for each translation direction (for example, for the translation from Spanish to Catalan, the file is apertium-es-ca.trules-es-ca.xml). You need to edit this file if you want to add or change transfer rules.<br />
<br />
Rules have a pattern and an action part. The pattern specifies which sequences of lexical forms have to be detected and processed. The action describes the verifications and transformations that need to be done on its constituents. Usual transformation operations (such as gender and number agreement) are defined inside a macroinstruction which is called inside the rule. At the end of the action part of the rule, the resulting lexical forms in the target language are sent out so that they are processed by the next modules in the translation system.<br />
<br />
A transfer rules file contains four sections with definitions of elements used in the rules, and a fifth section where the actual rules are defined. The sections are the following:<br />
<br />
* <section-def-cats>: This section contains the definition of the categories which are to be used in the rule patterns (that is, the type of lexical forms that will be detected by a certain rule). For the rule presented below, the categories "det" and "nom" (determiner and noun) need to be defined here. Categories are defined specifying the grammatical symbols that the lexical forms have. An asterisk indicates that one or more grammatical symbols follow the ones specified. The following is the definition of the category "det", which groups determiners and predeterminers in the same category since they play the same role for transfer purposes:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
It is also possible to define as a category a certain lemma, like the following for the preposition "en":<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
* <section-def-attrs>: This section contains the definition of the attributes that will be used inside of the rules, in the action part. You need attributes for all the categories defined in the previous section, if they are to be used in the action part of the rule (to make verifications on them or to send them out at the end of the rule), as well as for other attributes needed in the rule (such as gender or number). Attributes have to be defined using their corresponding grammatical symbols and can not have asterisks; its name must be unique. The following are the definitions for the attributes "a_det" (for determiners) and "gen" (gender):<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : This section contains the definition of the variables used in the rules.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Here the macroinstructions are defined, which contain sequences of code that are frequently used in the rules; this way, linguists do not need to write the same actions repeatedly. There are, for example, macroinstructions for gender and number agreement operations.<br />
<br />
<br />
* <section-rules> : This is the section where the structural transfer rules are written.<br />
<br />
<br />
<br />
The following is an example of a rule which detects the sequence determiner -- noun:<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Part of the action performed on this pattern is specified inside the macroinstruction "f_concord2", which is defined in the <section-def-macros>. It performs gender and number agreement operations: if there is a gender or number change between the source language and the target language (in the noun), the determiner changes its gender or number accordingly; furthermore, if gender or number are undetermined ("GD" or "ND", as explained in the previous section "Adding words to monolingual and bilingual dictionaries"), the noun receives the correct gender or number values from the preceding determiner. In the Apertium es-ca, es-gl and es-pt systems, there are agreement macroinstructions defined for one, two, three or four lexical units (f_concord1, f_concord2, f_concord3, f_concord4). When calling the macroinstructions in a rule, it must be specified which is the main lexical unit (the one which most heavily determines the gender or number of the other lexical units) and which other lexical units of the pattern have to be included in the agreement operations, in order of importance. This is done with the <with-param pos=""/> element. In the previous rule, the main lexical unit is the noun (position "2" in the pattern) and the second one is the determiner (position "1" in the pattern).<br />
<br />
After the pertinent actions, the resulting lexical forms are sent out, inside the <out> element. Each lexical unit is defined with a <clip>. Its attributes mean the following:<br />
<br />
* pos: refers to the position of the lexical form in the pattern. "1" is the first lexical form (the determiner) and "2" the second one (the noun).<br />
* side: indicates if the lexical form is in the source language ("sl") or in the target language ("tl"). Of course, words are sent out always in the target language; source language lexical forms may be needed inside of a rule, when testing its attributes or characteristics.<br />
* part: indicates which part of the lexical form is referred to in the 'clip'. You can use some predefined values:<br />
-whole: the whole lexical form (lemma and grammatical symbols). Used only when sending out the lexical unit (inside an <out> element).<br />
-lem: the lemma of the lexical unit<br />
-lemh: the head of the lemma of a multiword with inner inflection<br />
-lemq: the queue of a lemma of a multiword with inner inflection<br />
As well as these predefined values, you can use any of the attributes defined in <section-def-attrs> (for example "gen" or "a_det").<br />
<br />
The values "lemh" and "lemq" are used when sending out multiwords with inner inflection (see the section "Adding multiwords") in order to place the head and the queue of the lemma in the right position, since the previous module moved the queue just after the lemma head for various reasons. In pratice, in our system, this means that you must use these values instead of 'whole' when sending out verbs, since in our dictionaries multiwords with inner inflection are always verbs and, if you use the value "whole" when sending them out, the multiword would not be well formed (the head and the queue of the lemma would not have the correct position).<br />
<br />
Therefore, a rule that has a verb in its pattern must send the lexical forms like in the following two examples:<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
</pre><br />
<br />
The first rule detects a verb and places the queue in the correct place, after all the grammatical symbols. The lexical unit is sent specifying the attributes separately: lemma head, lexical category (verb), tense, person, gender (for the participles), number and lemma queue.<br />
<br />
The second rule detects a verb followed by an enclitic pronoun and sends the two lexical forms specifying also the attributes separately; the first lexical unit consists of: lemma head, lexical category (verb), tense, person and number; the second lexical unit consists of: lemma, lexical category (enclitic pronoun), person, gender, number and lemma queue. This way, the queue of the lemma is placed after the enclitic pronoun. The two lexical units (verb and enclitic pronoun) are sent inside a <mlu> element, since they have to reach the morphological generator as a multilexical unit (multiword).<br />
<br />
If you want to add a new transfer rule, you have to follow these steps:<br />
<br />
#Specify which pattern you want to detect. Bear in mind that words are processed only once by a rule, and that rules are applied left to right and choosing the longest match. For example, imagine you have in your transfer rules file only two rules, one for the pattern "determiner - noun" and one for the pattern "noun - adjective". The Spanish phrase "el valle verde" (the green valley)" would be detected and processed by the first one, not by the second. You will need to add a rule for the pattern "determiner - noun - adjective" if you wish that the three lexical units are processed in the same pattern.<br />
#Describe the operations you want to perform on the pattern. In the Apertium es-ca, es-gl and es-pt, simple agreement operations (gender and number agreement) are easy to perform in a rule by means of a macroinstruction. To perform other operations, you will need to use more complicated elements; for a more detailed description of the language used to create rules, refer to the section 3.4.2 of the system documentation. You can also read the DTD of the structural transfer rules file (transfer.dtd) provided with the Apertium package, in which all the elements of the language are described in English.<br />
#Send the lexical units of the pattern in the target language inside an <out> element. Each lexical unit must be included in a <lu> element. If two or more lexical units must be generated as a multilexical unit (only for enclitic pronouns in the present language pairs), they must be grouped inside a <mlu> element.<br />
All the words that are detected by a rule (that are part of a pattern) must be sent out at the end of the rule so that the next module (the generator) receives them. If a lexical unit is detected by a pattern and is not included in the <out> element, it will not be generated.<br />
<br />
== Adding data to the part-of-speech tagger ==<br />
To be written.<br />
== Retraining the part-of-speech tagger ==<br />
{{main|Tagger training}}<br />
To be written.<br />
== Detecting errors ==<br />
It is easy to make errors when adding new words or transfer rules to the Apertium system.<br />
<br />
It is possible that, when compiling the new files, the system displays an error message. In this case, this is a formal error (a missing XML tag, a tag that is not allowed in a certain context, etc.). You just have to go to the line number indicated by the error message, correct the error and compile again. Other types of errors are not detected when compiling, but can make the system mistranslate a word or give an incomprehensible text string. These are linguistic errors, which can be detected and corrected with the tips given in this chapter. The following information is for Linux users, since Apertium works for the moment only with this OS.<br />
<br />
As all the data processed by the system, from the original text to the translated text, circulate between the eight modules of the system in text format, it is possible to stop the text stream at any point to know what is the input or the output of a certain module. You just have to type the right commands in the terminal using a pipeline structure so that the standard output of one is used as the standard input for the next one.<br />
<br />
Using the echo or cat commands, you can send a text through one or more modules to analyse their output and detect the origin of the error. You have to move to the directory where the linguistic data are saved and type the commands explained below.<br />
<br />
===The morphological analyser output===<br />
To know how a word is analysed by the translator, type the following in the terminal (example for the Catalan word gener):<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
You can replace ca-es with the translation direction you want to test.<br />
<br />
The output in Apertium should be:<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
The string structure is: <code>^word/lemma<morphological analysis>$</code>. The <code><sent></code> tag is the analysis of the full stop, as every sentence end is represented as a full stop by the system, whether or not explicitly indicated in the sentence.<br />
<br />
The analysis of an unknown word is (ignoring the full stop information):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
and the analysis of an ambiguous word:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Each lexical form (lemma plus morphological analysis) is presented as a possible analysis of the word casa.<br />
<br />
===The tagger output===<br />
<br />
To know the output of the tagger for a source language text, type the following in the terminal (example for the Catalan-Spanish direction):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
The output will be:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
The output for an ambiguous word will be like the one above, since the tagger chooses one lexical form. Therefore, the output for casa in Catalan will be, for example (depending on the context):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===The pretransfer output===<br />
<br />
This module applies some changes to multiwords (move the lemma queue of a multiword with inner inflection just after the lemma head). To know its output, type:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Since gener is not a multiword in the dictionaries, this module does not alter its input.<br />
<br />
===The structural transfer output===<br />
<br />
To know how a word, phrase or sentence is translated into the target language and processed by structural transfer rules, type the following in the terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
The output for the Catalan word gener will be:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Analysing how a word or phrase is output by this module can help you detect errors in the bilingual dictionary or in the structural transfer rules. Typical bilingual dictionary errors are: two equivalents for the same source language lexical form, or wrong assignment of morphological symbols. Errors due to structurual transfer rules vary a lot depending on the actions performed by the rules.<br />
<br />
===The morphological generator output===<br />
<br />
To know how a word is generated by the system, type the following in the terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
With this command you can detect generation errors due to an incorrect entry in the target language monolingual dictionary or to a divergence between the output of the bilingual dictionary (the output of the previous module) and the entry in the monolingual dictionary.<br />
<br />
The correct output for the input "gener" would be:<br />
<pre><br />
enero.[][]<br />
</pre><br />
There are in this case no morphological symbols, and the word appears inflected.<br />
<br />
===The post-generator output===<br />
<br />
It is not very usual to have errors due to the postgenerator, because of its generally small size and the fact that it is seldom changed after adding usual combinations, but you can also test how a source language text comes out of this module, by typing:<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===The final output===<br />
<br />
You can put all the modules of the system in the pipeline structure and see how a source language text goes through all the modules and gets translated into the target language. You just have to add the reformatter to the previous command:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
<br />
This is the same as using the "apertium" shell script provided by the Apertium package:<br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(The full stop indicates the directory where the linguistic data are saved.)<br />
<br />
Of course, instead of typing all the presented commands every time you need to test a translation, you can create shell scripts for every action and use them to test the output of each module.<br />
<br />
Error examples<br />
<br />
To be written.<br />
<br />
<br />
[[Category:Documentation]]<br />
<br />
== Generating a new Apertium system from modified data ==<br />
If you make changes to any of the linguistic data files of Apertium (the dictionaries, the transfer rules, the tagger file or corpora or the postgeneration dictionaries), the changes will not be applied until you recompile the modules. To do this, type 'make' in the directory where the linguistic data are saved (apertium-es-ca, apertium-es-gl or what may be applicable) so that the system generates the new binary files.<br />
<br />
If changes were made to the tagger file or to the corpora used to train the tagger, you will need also to retrain the tagger. In the same directory mentioned above, after typing make, type make train in order to perform the retraining.<br />
<br />
Now the Apertium translator will work using the recently added data.<br />
<br />
==See also==<br />
<br />
* [[Comment contribuer à une paire de langues existante]]<br />
<br />
* [[Cómo Contribuir a un par de lenguas existentes]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=C%C3%B3mo_Contribuir_a_un_par_de_lenguas_existentes&diff=3134Cómo Contribuir a un par de lenguas existentes2007-12-19T14:21:57Z<p>172.17.30.131: New page: {#unknown{^*TOCD}} Cómo Añadir datos lingüísticos a un par de las lenguas existentes a *Apertium. *Apertium Tiene datos para muchos pares de lenguas. Estos datos lingüísticos compre...</p>
<hr />
<div>{#unknown{^*TOCD}}<br />
<br />
Cómo Añadir datos lingüísticos a un par de las lenguas existentes a *Apertium. *Apertium Tiene datos para muchos pares de lenguas. Estos datos lingüísticos comprenden principalmente diccionarios (*monolingues y bilingües), de las reglas de *transfert estructural quién realizan operaciones *grammaticales y otras transformaciones entre dos lenguas implicadas, y de los datos *lexicales para el *PoS *tagger, quién es en carga de la *désambiguation del texto de la lengua de salida.<br />
<br />
Todos estos datos lingüísticos son comprendidas en un solo repertorio. Por ejemplo, <código>*apertium-eres-*ca</código> para el par español-catalán. A continuación, os describimos los ficheros que os podéis encontrar en este repertorio.<br />
<br />
<br />
==Ejemplo de edición de los ficheros==<br />
<br />
===*Apertium 1===<br />
<br />
<br />
Para el par español-catalán (*apertium-eres-*ca):<br />
<br />
* *apertium-Eres-*ca.Eres.Diez : Diccionario *monolingue español, habiendo 11,800 entradas (desde el 17 de noviembre de 2005) <br />
* *apertium-eres-*ca.*ca.Diez : Diccionario *monolingue catalán, habiendo 11,800 entradas.<br />
* *apertium-Eres-*ca.Eres-*ca.Diez : Diccionario bilingüe español-catalán, habiendo 12,800 entradas (*correspondences español-catalán).<br />
* *apertium-Eres-*ca.*trules-Eres-*ca.*xml : Reglas de *transfert estructural para la traducción del español al catalán.<br />
* *apertium-Eres-*ca.*trules-*ca-Eres.*xml : Reglas de *transfert estructural para la traducción del catalán al español.<br />
* *apertium-Eres-*ca.Eres.*tsx : Fichero de definición del *tagger para el español<br />
* *apertium-eres-*ca.*ca.*tsx : Fichero de definición del *tagger para el catalán<br />
* *apertium-eres-*ca.*post-Eres.Diez : Diccionario de *post-generación para el español, con 25 entradas y 5 paradigmas (pedidos en el momento de traducir del catalán al español)<br />
* *apertium-eres-*ca.*post-*ca.Diez : Diccionario de *post-generación para el catalán, con 16 entradas y 57 paradigmas (pedidos en el momento de traducir del español al catalán)<br />
* repertorio eres-*tagger-dató : Contiene los datos necesarios para el *tagger español (*corpus, etc.)<br />
* Repertorio *ca-*tagger-dató : Contiene los datos necesarios para el *tagger catalán (*corpus, etc.)<br />
<br />
== Cómo Añadir palabras en los diccionarios ==<br />
<br />
En el momento de desarrollar o de adaptar *Apertium, la operación quién será realizada más probablemente será el desarrollo de sus diccionarios. De hecho, será mucho más común que el *ajout de las reglas de *transfert o de *post-generación.<br />
<br />
Importante: A cada vez que las modificaciones de un grupo son hechas para cada diccionario, los módulos tengan que estar *compilés nuevamente. Pegáis '*make' en el repertorio dónde los datos lingüísticos son guardadas (*apertium-eres-*ca, *apertium-eres-*gl o lo que puede ser aplicable) para que el sistema genera nuevos ficheros *binaires.<br />
<br />
Si os queréis añadir una nueva palabra a *Apertium, os tenéis que añadir tres entradas en los diccionarios. Suponemos que os trabajáis con el par español-catalán. En este caso, os tenéis que añadir:<br />
<br />
<br />
# Una entrada en el diccionario *monolingue español: para que el traductor pueda analizar ("comprender") la palabra cuando lo encuentra en un texto, y generarlo cuando va a traducirlo hacia el español.<br />
# Una entrada en el diccionario bilingüe: para que os podáis decir a *Apertium cómo traducir esta palabra de una lengua a la otra.<br />
# Una entrada en el diccionario *monolingue catalán: para que el traductor pueda analizar ("comprender") la palabra cuando lo encuentra en un texto, y generarlo cuando va a traducirlo hacia el catalán.<br />
<br />
Os tendréis que ir al repertorio habiendo los diccionarios *XML (para el par español-catalán, es *apertium-eres-*ca) y abrir con un editor de texto o un editor *XML especializado los tres ficheros de los diccionarios *précités: *apertium-eres-*ca.Eres.Diez, *apertium-eres-*ca.Eres-*ca.Diez *and *apertium-eres-*ca.*ca.Diez. Las entradas que os tenéis que crear en estos tres diccionarios comparten una estructura común.<br />
<br />
== Diccionario *monolingue (Español) ==<br />
<br />
Os queréis, por ejemplo, añadir el adjetivo español « *cósmico », cuyo el equivalente en catalán es « *còsmic ». La primera etapa es de añadir esta palabra en el diccionario *monolingue español. Os podéis constatar que un diccionario *monolingue ha esencialmente dos tipos de los datos: los paradigmas (a la sección "<*pardefs>" del diccionario, cada paradigma en un elemento <*pardef>) y las entradas de las palabras a la sección> « mano » del diccionario, cada una en un elemento <*e>). Las entradas de las palabras son de las *lemmes (eso representa la palabra como lo encontraríais en un diccionario en papel) más la información *grammaticale; los paradigmas contienen los datos de inflexión de todas las *lemmes en el diccionario. Os podéis encontrar una palabra en particular buscando la secuencia *lm="palabra" (*lm significa *lemme). (El elemento *lm es opcional y otros diccionarios pueden haberlo no).<br />
Miráis las entradas de las palabras en el diccionario *monolingue español, por ejemplo, la entrada del adjetivo « *bonito ». Os podéis encontrarla buscando *lm=« *bonito »:<br />
<br />
<*e *lm="*bonito"><br />
<I>*bonit</i><br />
<por *n="*absolut/*o__*adj"/><br />
</*e><br />
Para añadir una palabra, os tendréis que crear una entrada con la misma estructura. La parte entre <i> y </i> contiene el *préfixe de la palabra lo que es común para todas las formas desviadas, y el elemento <por> hecho referencia a la inflexión del paradigma de esta palabra. Por consiguiente, esta entrada significa que el adjetivo « *bonito » desvía todo como el adjetivo « *absoluto » habiendo el mismo análisis *morphologique: las formas *bonito, *bonita, *bonitos, *bonitas son equivalentes a las formas *absoluto, *absoluta, *absolutos, *absolutas habiendo el análisis *morphologique: *adj m *sg, *adj f *sg, *adj m *pl *and *adj f *pl respectivamente.<br />
Ahora, os tenéis que decidir qué es la categoría *lexicale de la palabra que os queréis añadir. La palabra « *cósmico » es un adjetivo como « *bonito ». Por la continuación, os tenéis que encontrar el paradigma apropiado para este adjetivo. Ha- la misma inflexión que « *bonito » y « *absoluto »? Poded decir *cósmico, *cósmica, *cósmicos, *cósmicas? La respuesta es sí. Con toda esta información os podéis ahora crear la entrada correcta:<br />
<br />
<*e *lm="*cósmico"><br />
<I>*cósmic</i><br />
<por *n="*absolut/*o__*adj"/><br />
</*e><br />
<br />
Si la palabra que os queréis añadir ha un paradigma diferente, os tenéis que buscarlo en el diccionario y asignarlo a la entrada. Os habéis dos caminos para encontrar el paradigma apropiado: sea mirando la sección <*pardefs> del diccionario, dónde todos los paradigmas son definidos en un elemento <*pardefs>, sea buscando otra palabra quién podría ya existir en el diccionario habiendo la misma inflexión del paradigma que la palabra a añadir. Por ejemplo, si os queréis añadir la palabra « *genoma » os tenéis que encontrar un paradigma apropiado para un nombre cuyo género es masculino y quién hace son plural añadiendo una s. Este será el paradigma « *abismo_*n » en nuestro diccionario actual. Por consiguiente, la entrada de esta nueva palabra sería:<br />
<br />
<*pre><br />
<*e *lm="*genoma"><br />
<I>*genoma</i><br />
<por *n="*abismo__*n"/><br />
</*e><br />
</*pre><br />
<br />
En casos excepcionales os tendréis que crear un nuevo paradigma para una cierta palabra . Os podéis miráis la estructura otra paradigmas y en crear un correctamente. Para una descripción más detallada de los paradigmas y de las entradas de las palabras en los diccionarios, consultáis la sección 3.1.2 de la documentación del sistema.<br />
<br />
== Diccionario *monolingue (Catalán) ==<br />
<br />
<br />
Una vez que os habéis añadido la palabra en un diccionario *monolingue, os tenéis que rehacerlo en el otro diccionario *monolingue del par de traducción (en nuestro ejemplo, el diccionario *monolingue catalán) utilizando la misma estructura. El resultado sería:<br />
<br />
<*pre><br />
<*e *lm="*còsmic"><br />
<I>*còsmi</i><br />
<por *n="*acadèmi/*c__*adj"/><br />
</*e><br />
</*pre><br />
<br />
<br />
== Diccionario *monolingue (Gallego) ==<br />
<br />
En caso de que os intentáis de mejorar los diccionarios *XML para el par español-gallego, os tendréis que dirigir al repertorio *apertium-eres-*gl y os tendréis que abrir con un editor de texto o con un editor *XML especializado los tres ficheros de los diccionarios *apertium-eres-*gl.Eres.Diez, *apertium-eres-*gl.Eres-*gl.Diez *and *apertium-eres-*gl.*gl.Diez. En este caso, una vez que os habéis añadido la nueva palabra español « *genoma » en el diccionario *monolingue español (*apertium-eres-*gl.Eres.Diez), os tenéis que añadir la palabra gallega equivalente « *xenoma » en el diccionario *monolingue gallego (*apertium-eres-*gl.*gl.Diez), este sería:<br />
<br />
<*pre><br />
<*e *lm="*xenoma"><br />
<I>*xenoma</i><br />
<por *n="*Xulio__*n"/><br />
</*e><br />
</*pre><br />
<br />
== Diccionario bilingüe ==<br />
<br />
La última etapa consiste en añadir la traducción en el diccionario bilingüe. Normalmente, un diccionario bilingüe no ha paradigmas, pero de los *lemmes. Una entrada contiene sólo el *lemme en ambas lenguas y el primer símbolo *grammatical (la categoría *lexicale) de cada uno.<br />
<br />
Las entradas han un lado izquierdo (<l>) y un lado derecho (<*r>), y cada lengua tiene que colocarse siempre en la misma posición: en nuestro sistema, ha sido convenido que el español ocupa el lado izquierdo y que el catalán, el gallego y el portugués ocupan el lado derecho. Una vez que el lado » ha sido convenido en el sistema, ha hecho falta observar los diccionarios en entera para que la traducción funciona.<br />
<br />
Añadiendo el *lemme de dos palabras, el sistema traducirá todas las formas desviadas (los símbolos *grammaticaux son *copiés de la palabra de la lengua de salida a la palabra de la lengua de llegada. Cela funcionará sólo si la palabra de la lengua de salida y la palabra de la lengua de llegada son *grammaticalement equivalentes, es decir, se comparten exactamente los mismos símbolos *morphologiques para todas sus formas desviadas. Es el caso de nuestro ejemplo; por consiguiente, la entrada que os tenéis que añadir en el diccionario bilingüe este: <br />
<*pre><br />
<*e> <br />
<*p><br />
<l>*cósmico<s *n="*adj"/></l><br />
<*r>*còsmic<s *n="*adj"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Esta entrada traducirá todas las formas desviadas, es decir, <i>*adj m *sg</i>, <i>*adj f *sg</i>, <i>*adj m *pl</i> *and <i>*adj f *pl</i>. Cela funciona para la traducción en ambas direcciones: del español al catalán y del catalán al español.<br />
<br />
En el caso del par español-gallego, la entrada bilingüe siguiente en el diccionario bilingüe español-gallego (*apertium-eres-*gl.Eres-*gl) traducirá todas las formas desviadas para las palabras equivalentes </i>*genoma/*xenoma</i> en ambas direcciones, es decir, del español al gallego y del gallego al español: <br />
<br />
<*pre><br />
<*e> <br />
<*p><br />
<L>*genoma<s *n="*n"/></l><br />
<*r>*xenoma<s *n="*n"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Qué se tiene que hacer si el par de palabras no es equivalente *grammaticalement (sus símbolos *grammaticaux no son exactamente los mismos)? En este caso, os tenéis que precisar todos los símbolos *grammaticaux (en el mismo orden qué son precisados en los diccionarios *monolingues) hasta que os encontráis el símbolo quién difiere entre la palabra de la lengua de salida y la palabra de la lengua de llegada. Por ejemplo, el nombre español « *limón » es masculino y su equivalente en catalán, « *llimona » es femenino. La entrada en el diccionario bilingüe tiene que estar:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*limón<s *n="*n"/><s *n="m"/></l><br />
<*r>*llimona<s *n="*n"/><s *n="f"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Un problema más complicado surge cuando dos palabras tienen símbolos *grammaticaux diferentes y la información *grammaticale de la palabra de la lengua de salida no es suficiente para determinar el género (masculino o femenino) o el número (singular o plural) de la palabra de la lengua de llegada. Tomáis a título de ejemplo el adjetivo español « *canadiense ». Su género es (masculino-femenino) y él queda *invariable, es decir, puede seguir sea un nombre masculino, sea un nombre femenino (*hombre *canadiense, *mujer *canadiense). Del otro lado, en catalán el adjetivo ha una inflexión diferente para el masculino y el femenino (*home *canadenc, *dona *canadenca). Por consiguiente, cuando se tradujo del español al catalán no es posible a saber si el adjetivo español (*mf) tiene que estar traducido como un adjetivo femenino o masculino al catalán, sin mirar la palabra que lo acompaña. En este caso, el símbolo « *GD » (« género a determinar ») es utilizado en lugar del símbolo de género. El género de las palabras será determinado por el módulo de *transfert estructural, mediante una regla de *transfert (una regla quién detecta el género del nombre precedente en este caso preciso).<br />
<br />
Por consiguiente, « *GD » tiene que estar empleado sólo cuando se tradujo del español al catalán, pero en absoluto cuando se tradujo del catalán al español, siendo dado qué en español el género será siempre « *mf » qué qué sea el género de la palabra original.<br />
<br />
En el diccionario bilingüe os tendréis que añadir, en este caso, varias entradas con indicaciones *directionnelles, ya que os tenéis que precisar en qué dirección de traducción el género resto *indéterminé. Las entradas para este adjetivo serían: <br />
<br />
<*pre><br />
<*e *r="*LR"><br />
<*p><br />
<L>*canadiense<s *n="*adj"/><s *n="*mf"/></l><br />
<*r>*canadenc<s *n="*adj"/><s *n="*GD"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*canadiense<s *n="*adj"/><s *n="*mf"/></l><br />
<*r>*canadenc<s *n="*adj"/><s *n="f"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*canadiense<s *n="*adj"/><s *n="*mf"/></l><br />
<*r>*canadenc<s *n="*adj"/><s *n="m"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
« *LR » Significa « *left *to *right » (de izquierda a derecha), y « *RL », « *right *to *left » (de derecha a izquierda). Como el español es a derecha y el catalán a izquierda, el adjetivo será « *GD » sólo cuando se tradujo del español al catalán (« *LR »). Para la traducción « *RL » os tenéis que crear dos entradas, la una para el adjetivo femenino y el otro para el adjetivo masculino.<br />
<br />
El mismo principio es aplicado cuando no es posible de determinar el número (singular o plural) de la palabra de llegada a causa de las razones indicadas aquí-encima. Por ejemplo, el nombre español « *rascacielos » (rascacielos) es *invariable enumera, es decir, él puede ser singular así como plural (<i>un *rascacielos, espalda *rascacielos</i>). En catalán, de otro lado, el nombre ha una inflexión diferente para el singular y para el plural (<i>un *gratacel, espalda *gratacels</i>). En este caso, el símbolo utilizado es « *ND » (« número a determinar ») y las entradas serían como ésta:<br />
<br />
<*pre><br />
<*e *r="*LR"><br />
<*p><br />
<L>*rascacielos<s *n="*n"/><s *n="m"/><s *n="*sp"/></l><br />
<*r>*gratacel<s *n="*n"/><s *n="m"/><s *n="*ND"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*rascacielos<s *n="*n"/><s *n="m"/><s *n="*sp"/></l><br />
<*r>*gratacel<s *n="*n"/><s *n="m"/><s *n="*pl"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*rascacielos<s *n="*n"/><s *n="m"/><s *n="*sp"/></l><br />
<*r>*gratacel<s *n="*n"/><s *n="m"/><s *n="*sg"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Para una descripción más detallada de este tipo de entrada, consultáis la sección 3.1.2.4.2 de la documentación del sistema.<br />
<br />
<br />
== Cómo Añadir restricciones *directionnelles == <br />
<br />
En el ejemplo precedente nos hemos visto ya la utilización de las restricciones *directionnelles para entradas con el género y el número *indéterminés (« *GD » o « *ND »). Las restricciones pueden estar igualmente hechas en otros casos. Es importante de anotar que la versión actual de *Apertium no puede proporcionar que un equivalente para cada forma *lexicale de la lengua de salida (una forma *lexicale es el *lemme más su información *grammaticale), es decir, la *désambiguation del sentido de la palabra no es realizada. [Nota: El sistema no realiza que la *désambiguation de la parte del discurso para las palabras *homographes, es decir, para palabras ambiguas quiénes pueden estar analizados a varias formas *lexicales, como « *vino » en español, quién puede significar « vino » así como « vino - /ha venido/*e ». Este tipo de *désambiguation es realizada por el *tagger.] Cuando un *lemme puede ser traducido de dos o varios modos, hace falta escoger una (la más general, la más frecuente,etc.). Os podéis decir a *Apertium que una cierta palabra tiene que estar comprendido (analizado) pero generado, porque este no es la traducción de un *lemme de la lengua de salida.<br />
<br />
Nos vamos ver eso con un ejemplo. La palabra española « *muñeca » puede ser traducido en catalán de dos modos diferentes según el sentido: « *canell » (muñeca) o « *nina » (muñeca). El contexto decide qué traducción es la correcta, pero *Apertium, en su estado actual, no puede tomar una tal decisión (miráis, no obstante, a la sección de las unidades *multimots para ver cómo evitar este problema). Por consiguiente, os tenéis que decidir la palabra equivalente cuando se tradujo del español al catalán. Del catalán al español, ambas palabras pueden estar traducidos <br />
como « *muñeca » sin ningún problema. Os tenéis que precisar todas estas circunstancias en las entradas del diccionario utilizando de las restricciones *directionnelles (« *LR » quiénes significa « *left *to *right », es decir, español-catalán, y « *RL » quién significa « *right *to *left », es decir, catalán-español). Si os decidís de traducir « *muñeca » como « *canell » de todas maneras, las entradas en el diccionario bilingüe serían:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*muñeca<s *n="*n"/><s *n="f"/></l><br />
<*r>*canell<s *n="*n"/><s *n="m"/></*r><br />
</*p><br />
</*e><br />
<br />
<*e *r="*RL"><br />
<*p><br />
<L>*muñeca<s *n="*n"/></l><br />
<*r>*nina<s *n="*n"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Cela quiere decir que las direcciones de traducción serán: <br />
<br />
*muñeca --> *canell<br />
*muñeca <-- *canell<br />
*muñeca <-- *nina<br />
<br />
(Anotáis que ha también un cambio de género en el caso de « *muñeca » (femenino) y « *canell » (masculino))<br />
<br />
Tiene que estar subrayado que un *lemme no puede haber dos traducciones en la lengua de llegada, porque el sistema produciría un error cuando se tradujo este *lemme (consultáis la sección « Cómo detectar los errores » aquí-debajo para ver cómo encontrar y *corriger estos errores y otros tipos de errores). Cuando una palabra puede ser traducida de dos modos diferentes en la lengua de llegada aproximadamente sea el contexto, os tenéis que escoger un como el equivalente de traducción y en dejar la otra como un *lemme quién puede ser analizado, pero generado, utilizando de las restricciones *directionnelles como en el ejemplo precedente. Por ejemplo, los *lemmes catalana « palabra » y « *paraula » pueden estar traducidos al español como « *palabra » (palabra), pues la entrada en el diccionario bilingüe sería:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*palabra<s *n="*n"/></l><br />
<*r>*paraula<s *n="*n"/></*r><br />
</*p><br />
</*e><br />
<*e *r="*RL"><br />
<*p><br />
<l>*palabra<s *n="*n"/><s *n="f"/></l><br />
<*r>palabra<s *n="*n"/><s *n="m"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Por consiguiente, para estos *lemmes las direcciones de traducción serán: <br />
<br />
*palabra --> *paraula<br />
*palabra <-- *paraula<br />
*palabra <-- Palabra<br />
<br />
Alguno tiene que también precisar las restricciones con relación a la dirección de traducción en el diccionario *monolingue. Por ejemplo, ambas formas españolas « *cantaran » o « *cantasen » son analizadas como « *cantar », verbo, *subjonctif *imparfait, 3*ème persona del plural, pero cuando se genera el texto en español, alguno tiene que decidir qué forma va a estar generado. Los diccionarios *monolingues son leídos en ambas direcciones según su objetivo: para el análisis, la dirección de lectura es izquierda a derecha; para la generación, de derecha a izquierda. Por consiguiente, la palabra quién tiene que estar analizado, pero generado, tiene que haber la restricción « *LR », y la palabra quién tiene que estar generado, pero analizado, tiene que haber la restricción « *RL ».<br />
<br />
<br />
== Cómo Añadir de los *multimots ==<br />
<br />
Es posible de crear entradas constituidas de dos o varias palabras, siempre y cuando estas palabras puedan construir una sola unidad de traducción ».<br />
Estas unidades *multimots » pueden también estar útiles cuando hace falta escoger el equivalente correcto para una palabra en una expresión fija. Por ejemplo, la palabra española « *dirección » puede ser traducido de dos modos al catalán: « *direcció » (dirección, dirección y gestión de empresas) y «*adreça» (dirección); puede constituir, por ejemplo, de las unidades *multimots frecuentes tales que « *dirección *general » --> « *direcció *general » (dirección general) y « *dirección postal » --> « *adreça postal » (dirección postal). Esto puedo ayudar a obtener una mejor traducción en algunas situaciones.<br />
<br />
Las unidades *multimots pueden estar *catégorisées como: de los *multimots con una inflexión interna y de las *multimots sin una inflexión interna.<br />
<br />
Los *multimots sin una inflexión interna son como las entradas de una palabra, pero hace falta *insérer el elemento <*b/> (quién representa un blanco) entre las palabras quiénes componen la unidad. Por consiguiente, si os queréis añadir, por ejemplo, el *multimot español « *hoy en *día » (hoy), cuyo el equivalente en catalán es « *avui *dia », las entradas que os tenéis que añadir en los tres diccionarios son:<br />
<br />
<br />
* Diccionario *monolingue español:<br />
<br />
<*pre><br />
<*e *lm="*hoy *día"><br />
<i>*hoy<*b/>en<*b/>*día</i><br />
<por *n="*ahora__*adv"/><br />
</*e><br />
</*pre><br />
<br />
* Diccionario *monolingue catalán:<br />
<br />
<*pre><br />
<*e *lm="*avui *dia"><br />
<I>*avui<*b/>*dia</i><br />
<por *n="*ahir__*adv"/><br />
</*e><br />
</*pre> <br />
<br />
* Diccionario bilingüe español-catalán:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*hoy<*b/>en<*b/>*día<s *n="*adv"/></l><br />
<*r>*avui<*b/>*dia<s *n="*adv"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Para el par español-gallego, si os queréis añadir, por ejemplo, el *multimot español « *manga *por *hombro » (ser sentido encima debajo) cuyo el equivalente en gallego es « *sen *xeito *nin *modo ». Las entradas que os tenéis que añadir son:<br />
<br />
* Diccionario *monolingue español:<br />
<br />
<*pre><br />
<*e *lm="*manga *por *hombro"><br />
<I>*manga<*b/>*por<*b/>*hombro</i><br />
<por *n="*abajo__*adv"/><br />
</*e><br />
</*pre><br />
<br />
* Diccionario *monolingue gallego:<br />
<br />
<*pre><br />
<*e *lm="*sen *xeito *nin *modo"><br />
<I>*sen<*b/>*xeito<*b/>*nin<*b/>*modo</i><br />
<por *n="*Deo_*gratias__*adv"/><br />
</*e><br />
</*pre><br />
<br />
* Diccionario bilingüe español-gallego:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*manga<*b/>*por<*b/>*hombro<s *n="*adv"/></l><br />
<*r>*sen<*b/>*xeito<*b/>*nin<*b/>*modo<s *n="*adv"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
Los *multimots con una inflexión interna son constituidos palabra quién puede desviar (normalmente un verbo) y de un elemento *invariable. Para estas entradas os tenéis que precisar el paradigma de inflexión justa después de la palabra quién desvía. La parte *invariable tiene que estar marcada con el elemento <g> en el lado derecho. Los blancos entre las palabras son indicados, como en el caso precedente, con el elemento <*b/>. Miráis el ejemplo siguiente para el *multimot español « *echar de *menos » (faltar), tradujo al catalán como « *trobar ha *faltar »: <br />
<br />
* Diccionario *monolingue español:<br />
<br />
<*pre><br />
<*e *lm="*echar De *menos"><br />
<i>*ech</i><br />
<por *n="*aspir/*ar__*vblex"/><br />
<*p><br />
<l><*b/>de<*b/>*menos</l><br />
<*r><g><*b/>de<*b/>*menos</g></*r><br />
</*p><br />
</*e> <br />
</*pre><br />
<br />
* Diccionario *monolingue catalán:<br />
<br />
<*pre><br />
<*e *lm="*trobar Ha *faltar"><br />
<i>*trob</i><br />
<por *n="*abander/*ar__*vblex"/><br />
<*p><br />
<l><*b/>ha<*b/>*faltar</l><br />
<*r><g><*b/>ha<*b/>*faltar</g></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
* Diccionario bilingüe español-catalán:<br />
<br />
<*pre><br />
<*e><br />
<*p><br />
<L>*echar<g><*b/>de<*b/>*menos</g><s *n="*vblex"/></l><br />
<*r>*trobar<g><*b/>ha<*b/>*faltar</g><s *n="*vblex"/></*r><br />
</*p><br />
</*e><br />
</*pre><br />
<br />
<br />
== En resumen introducción a los paradigmas ==<br />
<br />
<br />
Los paradigmas de los ejemplos precedentes contienen sólo un símbolo de la forma *lexicale, ya que los adverbios no han inflexión. Os podéis constatarlo en este ejemplo:<br />
<br />
<*pre><br />
<*pardef *n="*ahora__*adv"><br />
<*e><br />
<*p><br />
<L/><br />
<*r><s *n="*adv"/></*r><br />
</*p><br />
</*e><br />
</*pardef><br />
</*pre><br />
<br />
Los paradigmas son construidos como una entrada *lexicale. Nos hemos visto hasta presente de las entradas *lexicales cuya parte común del *lemme es puesta entra <*nowiki><i> </i></*nowiki>:<br />
<br />
<*pre><br />
<*e *lm="*cósmico"><br />
<I>*cósmic</i><br />
<por *n="*absolut/*o__*adj"/><br />
</*e><br />
</*pre><br />
<br />
Sin embargo, os podéis también representar la misma cosa con un par de secuencias: una secuencia a izquierda <l> y una secuencia a derecha <*r> en un elemento <*nowiki><*p></*nowiki> :<br />
<br />
<*pre><br />
<*e *lm="*cósmico"><br />
<*p><br />
<L>*cósmic</l><br />
<*r>*cósmic</*r><br />
</*p><br />
<por *n="*absolut/*o__*adj"/><br />
</*e><br />
</*pre><br />
<br />
Estas dos entradas son equivalentes. El uso del elemento <*nowiki><i></*nowiki> nos ayuda a *simplifier y *compacter las entradas, y os podéis utilizarlo cuando el lado izquierdo y el lado derecho del par *séquentielle son idénticos. Como os hemos explicado ya, los diccionarios *monolingues son leídos *LR para el análisis de un texto y *RL para la generación. Por consiguiente, cuando hay una diferencia entre la secuencia analizada y la secuencia generada (quién no es muy corriendo) la entrada no puede estar escrita mediante el elemento <*nowiki><i></*nowiki>.<br />
En los paradigmas, las secuencias izquierdas y derechas no son nunca idénticas, ya que el lado derecho tiene que contener los símbolos *grammaticales quiénes van a pasar en todos los módulos del sistema.<br />
<br />
<br />
== Consideráis el hecho de proporcionarnos vuestras mejoras de los datos *lexicales ==<br />
<br />
Si os habéis añadido con éxitos de los datos *lexicales banalizadas en cualesquier pares de lenguas de *Apertium, *merci de considerar el hecho de proporcionarlos en el proyecto para que nos podamos ofrecer un mejor *toolbox a la comunidad. Os podéis dirigir vuestros datos (en tres ficheros *XML, un fichero para cada diccionario *monolingue y otro para el diccionario bilingüe) a las direcciones siguientes: <br />
<br />
<*pre><br />
Datos españoles-catalanes<br />
Mireia *Ginestí: *mginesti [*at] *dlsi [dote] *ua [dote] eres<br />
Dadas español-portugués <br />
Carme *Armentano: *carmentano [*at] *dlsi [dote] *ua [dote] eres<br />
Dadas español-gallego<br />
Xavier Gómez-*Guinovart: *xgg [*at] *uvigo [dote] eres<br />
</*pre><br />
<br />
Si os opináis que os vais contribuir más profundamente en el proyecto, os podéis inscribir en el equipo de desarrollo sobre *www.*sourceforge.Limpio. Si os no habéis una cuenta a *sourceforge, *merci de crear una; después dirigíos a Mikel L. Forcada (*mlf [*at] *ua [dote] eres), a Sergio Ortiz (*sortiz [*at] *dlsi [dote] *ua [dote] eres) o a Xavier Gómez *Guinovart, si os habéis interesado en el par de lenguas españolas-gallegas, y explicáis *brièvement vuestras motivaciones y vuestras experiencias profesionales para inscribiros en el proyecto. El modo más corriente de contribuir <br />
es de utilizar *CVS; tanto que un miembro del proyecto, os tendréis que estar capaz de grabar directamente vuestros cambios en los diccionarios. <br />
<br />
El *ajout de las contribuciones *lexicales simples ha sido recientemente *simplifié mediante formularios sobre la web a *http://*xixona.*dlsi.*ua.Eres/prototipo/*webform/, con el fin de que los que contribuyen no tengan que tratar directamente con *XML. <br />
<br />
Os tendríais que estar consciente ya que los datos que os habéis proporcionado en el proyecto, unas veces agregadas, serán distribuidas libremente conforme a la actual licencia (*GNU *General Público *License ahora bien *Creative *Commons 2.5 atribución-*sharealike-*noncommercial, tal qué es indicada). Aseguraos que los datos proporcionados no son afectadas por ningún tipo de licencia pudiendo estar incompatible con las licencias utilizadas en este proyecto. Ningún tipo de compromiso o contrato es hecho entre os y los que desarrollan el proyecto. Si os tenéis cuestiones u os consideráis de hacer una contribución masiva, *contactez Mikel L. Forcada.<br />
<br />
<br />
== Cómo Añadir reglas de *transfert estructural (*grammaire) ==<br />
<br />
Las reglas de *transfert estructural realizan transformaciones en el texto *désambiguïsé, lo que es necesario a causa de las discrepancias *grammaticales, *syntaxiques y *lexicales entre ambas lenguas implicadas (de los cambios de género y de número quién aseguran un acuerdo en la lengua de llegada, la apuesta en orden de las palabras, de los cambios de las preposiciones,etc.). Las reglas detectan motivos (secuencias) en las formas *lexicales del texto de salida y les aplican las transformaciones correspondientes. El módulo detecta por lectura el motivo más largo izquierdo-derecha; por ejemplo, la frase « *the *big *cat » será detectada y tratada por la regla para determinante – adjetivo – nombre y no por la regla para determinar – adjetivo, porque el primer modelo es el más largo. Si dos motivos han la misma longitud, la regla aplicada es la que es definida en primero.<br />
<br />
El módulo de *transfert estructural (generado a marchar del fichero de las reglas de *transfert estructural) llama el módulo de *transfert *lexical (generado a marchar del diccionario bilingüe) colgando todo el proceso para determinar los equivalentes de la lengua de llegada a marchar de las formas *lexicales de la lengua de salida.<br />
<br />
Las reglas de *transfert estructural son comprendidas en un fichero *XML, cada una para cada dirección de traducción (por ejemplo, para la traducción del español al catalán, el fichero es *apertium-eres-*ca.*trules-Eres-*ca.*xml). Os tenéis que editar este fichero si os queréis añadir o modificar reglas de *transfert. <br />
<br />
Las reglas han un motivo y una parte de acción. El motivo precisa qué secuencias de las formas *lexicales tengan que estar detectadas y tratadas. La acción descrita las comprobaciones y las transformaciones quiénes tengan que estar hechas en sus constituyentes. Las operaciones de transformación las más corrientes (tales que el acuerdo de género y de número) son definidas en una *macroinstruction quién es llamada adentro de la regla. Al final de la parte de la acción de la regla, las formas *lexicales *résultantes de la lengua de llegada son enviadas con el fin de que sean tratadas por los módulos siguientes en el sistema de traducción.<br />
<br />
Un fichero de reglas de *transfert contiene cuatro secciones con las definiciones de los elementos utilizados en las reglas, y una quinta sección dónde las reglas actuales son definidas. Las secciones son las siguientes:<br />
<br />
* <Sección-*def-*cats>: Esta sección contiene la definición de las categorías quiénes serán utilizadas en los motivos de las reglas (es decir, el tipo de las formas *lexicales quiénes será detectado por una regla *quelconque). En lo que respecta a la regla presentada aquí-debajo, las categorías « *det » y « nombre » (determinante y nombre) tengan que estar definidas aquí. Las categorías son definidas precisando los símbolos *grammaticaux correspondientes a las formas *lexicales. Un *astérisque muestra que un o varios símbolos siguen los que han sido precisados. El ejemplo siguiente es la definición de la categoría « *det », quién agrupa los determinantes y los *prédéterminants en la misma categoría, porque jueguen el mismo rol en los objetivos de *transfert:<br />
<br />
<*pre><br />
<*def-*cat *n="*det"> <br />
<*cat-*item *tags="*det.*"/><br />
<*cat-*item *tags="*predet.*"/><br />
</*def-*cat><br />
</*pre><br />
<br />
Es también posible de definir un *lemme *quelconque como una categoría. A continuación, os podéis constatarlo con la preposición "en":<br />
<br />
<*pre><br />
<*def-*cat *n="en"><br />
<*cat-*item *lemma="en" *tags="*pr"/><br />
</*def-*cat><br />
</*pre><br />
<br />
<br />
* <Sección-*def-*attrs>: Esta sección contiene la definición de las *attributs quiénes serán utilizados adentro reglas, en la parte de acción. Os habéis necesidad de las *attributs para todas las categorías definidas a la sección precedente, cuando van a estar utilizados en la parte de acción de la regla (para verificarlas o para enviarlas en el final de la regla), así como para las otras *attributs necesarios en la regla (tales que el género y el número). Los *attributs tengan que estar definidos utilizando sus símbolos *grammaticaux correspondientes y no pueden haber de los *astérisques; su nombre tiene que estar único. El ejemplo siguiente muestra las definiciones para las *attributs « ha_*det » (para los determinantes) y « *gen » (para el género): <br />
<br />
<*pre><br />
<*def-*attr *n="Ha_*det"> <br />
<*attr-*item *tags="*det.*def"/><br />
<*attr-*item *tags="*det.*ind"/><br />
<*attr-*item *tags="*det.*dem"/><br />
<*attr-*item *tags="*det.*pos"/><br />
<*attr-*item *tags="*predet"/><br />
</*def-*attr><br />
<br />
<*def-*attr *n="*gen"> <br />
<*attr-*item *tags="M"/><br />
<*attr-*item *tags="f"/><br />
<*attr-*item *tags="*mf"/><br />
<*attr-*item *tags="*nt"/><br />
<*attr-*item *tags="*GD"/><br />
</*def-*attr><br />
</*pre><br />
* <sección-*def-*vars> : Esta sección contiene la definición de las variables utilizadas en las reglas.<br />
<*pre><br />
<*def-*var *n="*interrogativa"/><br />
</*pre><br />
<br />
* <Sección-*def-*macros> : Los *macroinstructions son definidas aquí. Contengan las secuencias de código frecuentemente utilizadas en las reglas; de este modo, los *linguistes no tengan que escribir varias veces las mismas acciones. Ha, por ejemplo, de los *macroinstructions para las operaciones de acuerdo de género y de número.<br />
<br />
* <Sección-*rules> : En esta sección las reglas de *transfert estructural son escritas.<br />
<br />
El ejemplo siguiente muestra una regla quién detecta la secuencia determinante – nombre:<br />
<br />
<*pre><br />
<*rule><br />
<*pattern><br />
<*pattern-*item *n="*det"/><br />
<*pattern-*item *n="Nombre"/><br />
</*pattern><br />
<acción><br />
<*call-*macro *n="f_*concord2"><br />
<*with-*param *pos="2"/><br />
<*with-*param *pos="1"/><br />
</*call-*macro> <br />
<*out> <br />
<leído><br />
<*clip *pos="1" *side="*tl" parte="*whole"/><br />
</leído><br />
<*b *pos="1"/> <br />
<leído><br />
<*clip *pos="2" *side="*tl" parte="*whole"/><br />
</leído> <br />
</*out> <br />
</acción><br />
</*rule><br />
</*pre><br />
<br />
Una parte de la acción efectuada en este motivo es precisada en la *macroinstruction « f_*concord2 » y definida a la sección-*def-*macros>. Cela realiza operaciones de acuerdo de género y de número: se ha un cambio de género o de número entre la lengua de salida y la lengua de llegada (en lo que respecta al nombre), el determinante cambia su género o su número *convenablement; indigna, si el género o el número son *indéterminés (« *GD » o « *ND », lo que es explicado en la sección precedente « Cómo añadir palabras en los diccionarios *monolingues y bilingües »), el nombre recibe el valor de género y de número correcto del determinante precedente. En *Apertium eres-*ca, eres-*gl *and eres-*pt *systems, hay de los *macroinstructions de acuerdo definidas para una, dos, tres o cuatro unidades *lexicales (f_*concord1, f_*concord2, f_*concord3, f_*concord4). Cuando en una regla las *macroinstructions son llamadas, tiene que estar precisado qué es la unidad *lexicale principal (la que determina *convenablement el género y el número de las otras unidades *lexicales) y qué unidades *lexicales del motivo tengan que estar *incluses en las operaciones de acuerdo, por orden de importancia. Cela es hecho con el elemento <*with-*param *pos=""/>. En la regla precedente, la unidad *lexicale principal es el nombre (posición « 2 » en el motivo) y la segunda es el determinante (posición « 1 » en el motivo).<br />
<br />
Después de haber hecho las acciones pertinentes, las formas *lexicales *résultantes son enviadas en el elemento <*out>. Cada unidad *lexicale es definida con un <*clip>. Sus *attributs significan:<br />
<br />
* *pos: Hace referencia en la posición de la forma *lexicale en el motivo. « 1 » es la primera forma *lexicale (el determinante) y « 2 » la segunda (el nombre).<br />
* *side: Indica si la forma *lexicale es en la lengua de salida (« *sl ») o en la lengua de llegada (« *tl »). Bien Sentido, las palabras son enviados siempre en la lengua de llegada; las formas *lexicales de la lengua de salida pueden estar necesitadas en una regla, cuando se *teste sus *attributs o sus características.<br />
* Parte: indica qué parte de la forma *lexicale es implicada en el '*clip'. Os podéis utilizar algunos valores *prédéfinies:<br />
-*whole: la forma *lexicale en entera (*lemme y símbolos *grammaticaux). Utilizado sólo cuando la unidad *lexicale es enviado (en un elemento <*out>).<br />
-*lem: El *lemme de la unidad *lexicale.<br />
-*lemh: La cabeza del *lemme de un *multimot con una inflexión interna.<br />
-*lemq: La cola del *lemme de un *multimot con una inflexión interna.<br />
<br />
Además de estos valores *prédéfinies, os podéis utilizar todo *attribut definido a <sección-*def-*attrs> (por ejemplo « *gen » o « ha_*det »).<br />
<br />
Los valores « *lemh » y « *lemq » son utilizados cuando de los *multimots con una inflexión interna son enviados (veis la sección « Cómo añadir de las *multimots ») para colocar la cabeza y la cola del *lemme en la correcta posición, porque el módulo precedente ha cambiado de lugar la cola justa después de la cabeza del *lemme a causa de las varias razones. En la práctica, sobre nuestro sistema, eso significa que os tenéis que utilizar estos valores en lugar de '*whole' cuando de los verbos son enviados, porque en nuestros diccionarios de los *multimots con una inflexión interna ha siempre verbos. Si os utilizáis el valor '*whole' cuando son enviados, el *multimot no sería bien formado (la cabeza y la cola del *lemme no habría la correcta posición)<br />
<br />
Por consiguiente, una regla habiendo un verbo en su motivo tiene que enviar las formas *lexicales como en ambos ejemplos siguientes:<br />
<br />
<*rule><br />
<*pattern><br />
<*pattern-*item *n="*verb"/><br />
</*pattern><br />
<Acción><br />
<*out> <br />
<leído><br />
<*clip *pos="1" *side="*tl" parte="*lemh"/><br />
<*clip *pos="1" *side="*tl" parte="ha_*verb"/><br />
<*clip *pos="1" *side="*tl" parte="tiempo"/><br />
<*clip *pos="1" *side="*tl" parte="*persona"/><br />
<*clip *pos="1" *side="*tl" parte="*gen"/><br />
<*clip *pos="1" *side="*tl" parte="*nbr"/><br />
<*clip *pos="1" *side="*tl" parte="*lemq"/><br />
</leído> <br />
</*out><br />
</acción><br />
</*rule><br />
<br />
<br />
<*rule><br />
<*pattern><br />
<*pattern-*item *n="*verb"/><br />
<*pattern-*item *n="*prnenc"/><br />
</*pattern><br />
<Acción><br />
<*out><br />
<*mlu><br />
<leído><br />
<*clip *pos="1" *side="*tl" parte="*lemh"/><br />
<*clip *pos="1" *side="*tl" parte="ha_*verb"/><br />
<*clip *pos="1" *side="*tl" parte="tiempo"/><br />
<*clip *pos="1" *side="*tl" parte="*persona"/><br />
<*clip *pos="1" *side="*tl" parte="*nbr"/><br />
</leído><br />
<leído><br />
<*clip *pos="2" *side="*tl" parte="*lem"/><br />
<*clip *pos="2" *side="*tl" parte="ha_*prnenc"/><br />
<*clip *pos="2" *side="*tl" parte="*persona"/><br />
<*clip *pos="2" *side="*tl" parte="*gen"/><br />
<*clip *pos="2" *side="*tl" parte="*nbr"/><br />
<*clip *pos="1" *side="*tl" parte="*lemq"/><br />
</leído> <br />
</*mlu><br />
</*out><br />
</acción><br />
</*rule><br />
<br />
La primera regla detecta un verbo y coloca la cola en la correcta posición, después de eso, los símbolos *grammaticaux. La unidad *lexicale es enviada todo precisando los *attributs *séparément: cabeza del *lemme, categoría *lexicale (verbo), tiempo, persona, género (para los participios), número y cola del *lemme.<br />
<br />
La segunda regla detecta un verbo seguido de un pronombre *enclitique y envío ambas formas *lexicales precisando igualmente las *attributs *séparément; la primera unidad *lexicale es constituida de: cabeza del *lemme, categoría *lexicale (verbo), tiempo, persona y número; la segunda unidad *lexicale es constituida de: *lemme, categoría *lexicale (pronombre *enclitique), persona, género, número y cola del *lemme. Ambas unidades *lexicales (verbo y pronombre *enclitique) son enviados en el elemento <*mlu>, porque tengan que alcanzar el *générateur *morphologique como una unidad *multilexicale (*multimot). <br />
<br />
<br />
Si os queréis añadir una nueva regla de *transfert, os tenéis que seguir estas etapas:<br />
<br />
#Precisáis el motivo que os queréis detectar. Recordaos que las palabras son tratados sólo una vez por regla y que éstas son tratados izquierda-derecha tomando la secuencia más larga. Por ejemplo, imagináis que os tenéis en vuestro fichero de las reglas de *transfert sólo dos reglas, la una para el motivo determinante - nombre » y el otro para el motivo « nombre - adjetivo ». La frase española « *el *valle *verde » (el valle verde) sería detectada y tratada para la primera regla y no por la segunda. Os tendréis que añadir una regla para el motivo determinante – nombre - adjetivo » si os deseáis que las tres unidades *lexicales sean tratadas en el mismo motivo. <br />
#Describís las operaciones que os queréis realizar en el motivo. Sobre *Apertium eres-*ca, eres-*gl *and eres-*pt, de las operaciones de acuerdo simples (acuerdo de género y de número) son fáciles a realizar en una regla mediante una *macroinstruction. Para hacer otras operaciones, os tenéis que utilizar elementos más complicados; para una descripción más detallada del lenguaje empleado para crear reglas, consultáis la sección 3.4.2 de la documentación del sistema. Os podéis igualmente leer la *DTD del fichero de las reglas de *transfert estructural (*transfer.*dtd) Proporcionada con el lote de *Apertium, en el cual todos los elementos del lenguaje son descritos en inglés.<br />
#Enviáis las unidades *lexicales del motivo en la lengua de llegada en el elemento <*out>. Cada unidad *lexicale tiene que estar *incluse en el elemento leído>. Si dos o varias unidades tengan que estar generadas como una unidad *multilexicale (sólo para los pronombres *enclitiques en los pares de lenguas tratadas hasta presente), tengan que estar agrupadas en el elemento <*mlu>.<br />
Todas las palabras detectados por una regla (quién forman parte del motivo) tengan que estar enviados al final de la regla para que el módulo siguiente (el *générateur) los recibe. Si una unidad *lexicale es detectada para un motivo y qué no es *incluse en el elemento <*out>, no será generada.<br />
<br />
<br />
== Cómo Añadir datos en el *tagger de la parte del discurso ==<br />
<br />
A escribir.<br />
<br />
<br />
== Entrenamiento del *tagger de la parte del discurso ==.{#Nom|*Tagger *training}}<br />
<br />
A escribir.<br />
<br />
== Detección de los errores ==<br />
<br />
Es fácil de cometer errores al momento de añadir nuevas palabras o de las reglas de *transfert en el sistema de *Apertium.<br />
<br />
Es posible qué en el momento de *compiler de los nuevos ficheros, el sistema anuncia un mensaje de error. En este caso, es un error de uso (el olvido de una etiqueta *XML, una etiqueta quién no es permitida en un cierto contexto, etc.). Os no habéis qué ir al número de línea indicada para el mensaje de error y *compiler nuevamente. Otros tipos de errores no son detectados en el momento de *compiler, pero eso puede provocar que el sistema no traduzca bien una palabra o qué da una secuencia *textuelle incomprensible. Hay errores lingüísticos quiénes pueden estar detectadas y *corrigées a la ayuda de los consejos dados en este capítulo. La información siguiente es para los usuarios de Linux, porque, de momento, *Apertium no trabaja qué con este HUESO.<br />
<br />
Como todos los datos tratadas por el sistema, desde el texto de salida hacia el texto de llegada, circulan entre los ocho módulos del sistema en formato de texto plano, es posible de arrestar el flujo de texto en cualquier momento con el fin de saber las entradas y las salidas de los datos de un cierto módulo. Os no habéis qué a pegar los órdenes correctos en el terminal utilizando una estructura *pipeline para que la salida estándar de un módulo sea utilizada como la entrada del módulo siguiente.<br />
<br />
Utilizando los órdenes *echo o *cat, os podéis enviar un texto en un o varios módulos para analizar sus salidas y detectar así el origen del error. Os tenéis que ir al repertorio dónde los datos lingüísticos se han guardado y pegar los órdenes explicados aquí-debajo.<br />
<br />
===La salida de la *analysateur *morphologique===<br />
<br />
Para saber cómo una palabra es analizado por el traductor, pegáis el ejemplo siguiente en el terminal (ejemplo de la palabra catalana « *gener »):<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin<br />
</*pre><br />
<br />
Os podéis reemplazar *ca-eres por la dirección de traducción que os queréis *tester.<br />
<br />
La salida a *Apertium tendría que estar:<br />
<br />
<*pre*gener/*gener<*n><M><*sg./.<Siente>$[][]<br />
</*pre><br />
<br />
La secuencia *structurelle es: <código*word/*lemma<*morphological *analysis>$</código>. La etiqueta <código><siente></código> es el análisis de la parada completa, porque todo final de frase es representada por una parada completa en el sistema, que este sea indicado de modo explícito o en la frase.<br />
<br />
El análisis de una palabra desconocida es (ignorando la información de parada completa):<br />
<br />
<*pre*genoma/**genoma$<br />
</*pre><br />
<br />
Y el análisis de una palabra ambigua:<br />
<br />
<*preColocó/colocó<*n><f><*sg>/*casar<*vblex><*pri><*p3><*sg>/*casar<*vblex><*imp><*p2><*sg>$<br />
</*pre><br />
<br />
Cada forma *lexicale (*lemme más el análisis *morphologique) es presentada como un análisis posible de la palabra « colocó »<br />
<br />
===La salida del *tagger===<br />
<br />
Si os queréis conocer la salida del *tagger para el texto de la lengua de salida, pegáis el ejemplo siguiente en el terminal (ejemplo para la dirección catalana-español):<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob<br />
</*pre><br />
<br />
La salida será:<br />
<*pre*gener<*n><m><*sg.<Siente>$[][]<br />
</*pre><br />
<br />
La salida de una palabra ambigua será como el ejemplo precedente, porque el *tagger escogido una forma *lexicale. Por consiguiente, la salida de « colocó » en catalán será, por ejemplo (según el contexto):<br />
<br />
<*preColocó<*n><f><*sg.<Siente>$[][]<br />
</*pre><br />
<br />
===La salida del prado-*transfert===<br />
<br />
Este módulo realiza algunos cambios a los *multimots (desplaza la cola del *lemme de un *multimot con una inflexión interna justa después de la cabeza del *lemme):<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer<br />
</*pre><br />
Como « *gener » no es un *multimot en los diccionarios, este módulo no cambia sus entradas.<br />
<br />
===La salida del *transfert estructural===<br />
<br />
Para saber cómo una frase o una palabra es traducido hacia la lengua de llegada y cómo son tratadas por las reglas de *transfert estructural, pegáis el ejemplo siguiente en el terminal:<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer | *apertium-*transfer *trules-*ca-Eres.*xml *trules-*ca-Eres.*bin *ca-Eres.*autobil.*bin<br />
</*pre><br />
<br />
La salida para la palabra catalana « *gener » será:<br />
<br />
<*pre*enero<*n><M><*sg>$<br />
</*pre><br />
<br />
El hecho de analizar cómo una frase o una palabra ha salido de este módulo puedes ayudar a detectar errores en el diccionario bilingüe o en las reglas de *transfert estructural. Los errores más corrientes de los diccionarios bilingües son: dos equivalentes para la misma forma *lexicale de la lengua de salida, o la mala elección de los símbolos *morphologiques. Los errores provocados por las reglas de *transfert estructural varían mucho según las acciones realizadas por las reglas.<br />
<br />
===La salida del *générateur *morphologique===<br />
<br />
Para saber cómo una palabra es generado por el sistema, pegáis el ejemplo siguiente en el terminal:<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer | *apertium-*transfer *trules-*ca-Eres.*xml *trules-*ca-Eres.*bin *ca-Eres.*autobil.*bin | *lt-*proc -G *ca-eres.*autogen.*bin<br />
</*pre><br />
<br />
Con este orden os podéis detectar errores de generación debida en una entrada incorrecta en el diccionario *monolingue de la lengua de llegada o causadas por la discrepancia entre la salida del diccionario bilingüe (la salida del módulo precedente) y la entrada del diccionario *monolingue.<br />
<br />
La salida correcta para la entrada « *gener » sería:<br />
<*pre><br />
*enero.[][]<br />
</*pre><br />
En este caso, no hay símbolos *morphologiques y la palabra aparece desviado. <br />
<br />
<br />
===La salida del *post-*générateur===<br />
<br />
No es muy corriendo de haber errores debidos al *post-*générateur, gracias a su pequeño tamaño y al hecho qué es modificado raramente después del *ajout de las combinaciones habituales, pero os podéis también *tester cómo el texto de la lengua de salida suerte de este módulo, pegando:<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer | *apertium-*transfer *trules-*ca-Eres.*xml *trules-*ca-Eres.*bin *ca-Eres.*autobil.*bin | *lt-*proc -G *ca-eres.*autogen.*bin | *lt-*proc -*p *ca-Eres.*autopgen.*bin<br />
</*pre><br />
<br />
===La salida final===<br />
<br />
Os podéis poner todos los módulos del sistema en una estructura de *pipeline y ver el pasaje del texto de la lengua de salida por todos los módulos y su traducción hacia la lengua de llegada. Os no habéis qué añadir el *reformatter al orden precedente:<br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer | *apertium-*transfer *trules-*ca-Eres.*xml *trules-*ca-Eres.*bin *ca-Eres.*autobil.*bin | *lt-*proc -G *ca-eres.*autogen.*bin | *lt-*proc -*p *ca-Eres.*autopgen.*bin | *apertium-*retxt<br />
</*pre><br />
Es el mismo que el *shell *script « *apertium » proporcionado por el lote de *Apertium: <br />
<br />
<*pre><br />
$ *echo "*gener" | *apertium -D . *ca-Eres<br />
</*pre><br />
<br />
(La parada completa indica el repertorio dónde los datos lingüísticos son guardadas).<br />
<br />
Bien Sentido, en lugar de pegar todos los órdenes, quiénes han sido presentados, a cada vez que os habéis necesidad de *tester una traducción, os podéis crear un *shell *script para cada acción y utilizarlo para *tester la salida de cada módulo.<br />
<br />
Ejemplos de los errores<br />
<br />
A escribir.<br />
<br />
== Cómo Generar un nuevo sistema *Apertium a marchar de los datos modificados ==<br />
<br />
Si os hacéis cambios a cada fichero de los datos lingüísticos de *Apertium (los diccionarios, las reglas de *transfert, el fichero o los *corpus del *tagger, los diccionarios de *post-generación), los cambios no serán efectuados hasta que os *recompilez los módulos. Para hacerlo, pegáis '*make' en el repertorio dónde los datos lingüísticos son guardadas (*apertium-eres-*ca, *apertium-eres-*gl o lo que pueda estar aplicable) para que el sistema genera nuevos ficheros *binaires.<br />
<br />
Si los cambios han sido hechos en el fichero del *tagger o en los *corpus utilizados para entrenar el *tagger, os habréis también necesidad de entrenar nuevamente el *tagger. En el mismo repertorio mencionado aquí-encima, después de haber pegado '*make', pegáis '*make tren' con el fin de efectuar el entrenamiento.<br />
<br />
Ahora, el traductor *Apertium trabajará con los datos recientemente añadidos.<br />
<br />
<br />
==*See *also==<br />
<br />
* [[*Contributing *to Año *existing *pair]]<br />
<br />
* [[*Cómo *Contribuir Ha un por de *lenguas *existentes]]<br />
<br />
== Fuente ==<br />
<br />
*The Original versión *was *transferred *from fuente *http://*apertium.*sourceforge.Limpio/*extending.html.<br />
<br />
[[*Category:Documentación]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3133Comment contribuer à une paire de langues existante2007-12-19T14:18:29Z<p>172.17.30.131: /* See also */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, nous vous décrivons les fichiers que vous pouvez trouver dans ce répertoire.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Contient les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Contient les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Au moment de développer ou d'adapter Apertium, l'opération qui sera réalisée plus probablement sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créer dans ces trois dictionnaires partagent une structure commune.<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (à la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots à la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Entraînement du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant dans le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
===La sortie du générateur morphologique===<br />
<br />
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant dans le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.<br />
<br />
La sortie correcte pour l'entrée « gener » serait:<br />
<pre><br />
enero.[][]<br />
</pre><br />
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi. <br />
<br />
<br />
===La sortie du post-générateur===<br />
<br />
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===La sortie finale===<br />
<br />
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
C'est le même que le shell script « apertium » fourni par le lot d'Apertium: <br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(L'arrêt complet indique le répertoire où les données linguistiques sont gardées).<br />
<br />
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.<br />
<br />
Exemples des erreurs<br />
<br />
À écrire.<br />
<br />
== Comment générer un nouveau système Apertium à partir des données modifiées ==<br />
<br />
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui puisse être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.<br />
<br />
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
* [[Cómo Contribuir a un par de lenguas existentes]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Contributing_to_an_existing_pair&diff=3132Contributing to an existing pair2007-12-19T14:14:17Z<p>172.17.30.131: /* See also */</p>
<hr />
<div>{{TOCD}}<br />
Adding linguistic data to an existing language pair in Apertium. Apertium has data for many languages pairs. These linguistic data include mainly dictionaries (monolingual and bilingual), structural transfer rules that perform grammatical and other transformations between the two languages involved, and lexical data for the part-of-speech tagger, which is in charge of the disambiguation of the source language text.<br />
<br />
All these linguistic data are contained in a single directory. For example, <code>apertium-es-ca</code> for the Spanish-Catalan pair. The files that you can find in these directories are described next.<br />
<br />
==Example file layout==<br />
<br />
===Apertium 1===<br />
<br />
For the Spanish–Catalan pair (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Spanish monolingual dictionary, containing 11,800 entries (as of 17 november 2005) <br />
* apertium-es-ca.ca.dix : Catalan monolingual dictionary, containing 11,800 entries.<br />
* apertium-es-ca.es-ca.dix : Spanish-Catalan bilingual dictionary, containing 12,800 entries (correspondences Spanish-Catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Structural transfer rules for the translation from Spanish to Catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Structural transfer rules for the translation from Catalan to Spanish.<br />
* apertium-es-ca.es.tsx : Tagger definition file for Spanish<br />
* apertium-es-ca.ca.tsx : Tagger definition file for Catalan<br />
* apertium-es-ca.post-es.dix : Post-generation dictionary for Spanish, with 25 entries and 5 paradigms (applies when translating from Catalan to Spanish)<br />
* apertium-es-ca.post-ca.dix : Post-generation dictionary for Catalan, with 16 entries and 57 paradigms (applies when translating from Spanish to Catalan)<br />
* directory es-tagger-data : Contains data needed for the Spanish tagger (corpora, etc.)<br />
* directory ca-tagger-data : Contains data needed for the Catalan tagger (corpora, etc.)<br />
<br />
== Adding words to the dictionaries ==<br />
<br />
When extending or adapting Apertium, the most likely operation that will be performed will be to extend its dictionaries. In fact, it will be far more common than adding transfer or post-generation rules.<br />
<br />
IMPORTANT: Every time a set of modifications is made to any of the dictionaries, the modules have to be recompiled. Type make in the directory where the linguistic data are saved (apertium-es-ca, apertium-es-gl or what may be applicable) so that the system generates the new binary files.<br />
<br />
If you want to add a new word to Apertium, you need to add three entries in the dictionaries. Suppose you are working with the Spanish-Catalan pair. In this case, you have to add:<br />
<br />
# an entry in the Spanish monolingual dictionary: so that the translator can analyze ("understand") the word when it finds it in a text, and generate it when translating this word into Spanish.<br />
# an entry in the bilingual dictionary: so that you can tell Apertium how to translate this word from one language to the other.<br />
# an entry in the Catalan monolingual dictionary: so that the translator can analyze ("understand") the word when it finds it in a text, and generate it when translating this word into Catalan.<br />
<br />
You will need to go to the directory containing the XML dictionaries (for the Spanish-Catalan pair, this is apertium-es-ca) and open with a text editor or a specialized XML editor the three dictionary files mentioned: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. The entries you need to create in these three dictionaries share a common structure.<br />
<br />
== Monolingual dictionary (Spanish) ==<br />
<br />
You may want, for example, to add the Spanish adjective "cósmico", whose equivalent in Catalan is "còsmic". The first step is to add this word to the Spanish monolingual dictionary. You will see that a monolingual dictionary has basically two types of data: paradigms (in the "<pardefs>" section of the dictionary, each paradigm inside a <pardef> element) and word entries (in the main <section> of the dictionary, each one inside an <e> element). Word entries consist of a lemma (that is, the word as you would find it in a typical paper dictionary) plus grammatical information; paradigms contain the inflection data of all lemmas in the dictionary. You can search a particular word by searching the string lm="word" (lm meaning lemma). (The element lm is optional and some other dictionaries may not contain it.)<br />
Look at the word entries in the Spanish monolingual dictionary, for example at the entry for the adjective "bonito". You can find it by searching lm="bonito":<br />
<br />
<pre><br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
To add a word, you will have to create an entry with the same structure. The part between <nowiki><i></nowiki> and <nowiki></i></nowiki> contains the prefix of the word that is common to all inflected forms, and the element <par> refers to the inflection paradigm of this word. Therefore, this entry means that the adjective "bonito" inflects like the adjective "absoluto" and has the same morphological analysis: the forms <i>bonito, bonita, bonitos, bonitas</i> are equivalent to the forms <i>absoluto, absoluta, absolutos, absolutas</i> and have the morphological analysis: adj m sg, adj f sg, adj m pl and adj f pl respectively.<br />
<br />
<br />
Now, you have to decide which is the lexical category of the word you want to add. The word "cósmico" is an adjective, like "bonito". Next, you have to find the appropriate paradigm for this adjective. Is it the same as the one for "bonito" and "absoluto"? Can you say <i>cósmico, cósmica, cósmicos, cósmicas</i>? The answer is yes, and, with all this information, you can now create the correct entry:<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
If the word you want to add has a different paradigm, you have to find it in the dictionary and assign it to the entry. You have two ways to find the appropriate paradigm: looking in the <pardefs> section of the dictionary, where all the paradigms are defined inside a <pardef> element, or finding another word that you think may already exist in the dictionary and that has the same inflection paradigm as the one to be added. For example, if you want to add the word "genoma", you need to find an appropriate paradigm for a noun whose gender is masculine and forms the plural with the addition of an -s. This will be the paradigm "abismo__n" in our present dictionaries. Therefore, the entry for this new word would be:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
In exceptional cases you will need to create a new paradigm for a certain word. You can look at the structure of other paradigms and create one accordingly. For a more detailed description of paradigms and word entries in the dictionaries, refer to section 3.1.2 of the system documentation.<br />
<br />
== Monolingual dictionary (Catalan) ==<br />
<br />
<br />
Once you have added the word to one monolingual dictionary, you have to do the same to the other monolingual dictionary of the translation pair (in our example, the Catalan monolingual dictionary) using the same structure. The result would be:<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
== Monolingual dictionary (Galician) ==<br />
<br />
In the case you are trying to improve the XML dictionaries for the Spanish-Galician pair, you will need to go to the directory apertium-es-gl and open with a text editor or a specialized XML editor the three dictionary files apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. In that case, once you have added the new Spanish word "genoma" to the Spanish monolingual dictionary (apertium-es-gl.es.dix), you have to add the equivalent Galician word "xenoma" to the Galician monolingual dictionary (apertium-es-gl.gl.dix), that is:<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Bilingual dictionary ==<br />
<br />
The last step is to add the translation to the bilingual dictionary.<br />
A bilingual dictionary does not usually have paradigms, only lemmas. An entry contains only the lemma in both languages and the first grammatical symbol (the lexical category) of each one. Entries have a left side (<l>) and a right side (<r>), and each language has always to be in the same position: in our system, it has been agreed that Spanish occupies the left side, and Catalan, Galician and Portuguese the right side. Once the "side" of each language has been agreed in a system, it has to be observed all through the dictionaries so that the translation works.<br />
With the addition of the lemma of both words, the system will translate all their inflected forms (the grammatical symbols are copied from the source language word to the target language word). This will only work if the source language word and the target language word are grammatically equivalent, that is, if they share exactly the same morphological symbols for all of their inflected forms. This is the case with our example; therefore, the entry you have to add to the bilingual dictionary is:<br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
This entry will translate all the inflected forms, that is, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. It works for the translation in both directions: from Spanish to Catalan and from Catalan to Spanish.<br />
<br />
In the case of the Spanish-Galician pair, the following bilingual entry in the Spanish-Galician bilingual dictionary (apertium-es-gl.es-gl) will translate all the inflected forms for the equivalent words </i>genoma/xenoma</i> in both directions, that is, from Spanish to Galician and from Galician to Spanish:<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
What to do if the word pair is not equivalent grammatically (their grammatical symbols are not exactly the same)? In that case, you need to specify all the grammatical symbols (in the same order as they are specified in the monolingual dictionaries) until you reach the symbol that differs between the source language word and the target language word. For example, the Spanish noun "limón" has masculine gender and its equivalent in Catalan, "llimona", has feminine gender. The entry in the bilingual dictionary must be as follows:<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
A more difficult problem arises when two words have different grammatical symbols and the grammatical information of the source language word is not enough to determine the gender (masculine or feminine) or the number (singular or plural) of the target language word. Take for example the Spanish adjective "canadiense". Its gender is (masculine-feminine) since it is invariable in gender, that is, it can go both with masculine and feminine nouns (hombre canadiense, mujer canadiense). In Catalan, on the other hand, the adjective has a different inflection for the masculine and the feminine (home canadenc, dona canadenca). Therefore, when translating from Spanish to Catalan it is not possible to know, without looking at the accompanying noun, whether the Spanish adjective (mf) has to be translated as a feminine or a masculine adjective in Catalan. In that case, the symbol "GD" (for "gender to be determined") is used instead of the gender symbol. The word's gender will be determined by the structural transfer module, by means of a transfer rule (a rule that detects the gender of the preceding noun in this particular case).<br />
<br />
Therefore, "GD" must be used only when translating from Spanish to Catalan, but not when translating from Catalan to Spanish, as in Spanish the gender will always be mf regardless of the gender of the original word.<br />
<br />
In the bilingual dictionary you will need to add, in this case, more than one entry with direction indications, as you must specify in which translation direction the gender remains undetermined. The entries for this adjective should be as follows:<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
"LR" means "left to right", and "RL", "right to left". Since Spanish is on the left and Catalan on the right, the adjective will be "GD" only when translating from Spanish to Catalan ("LR"). For the translation "RL" you need to create two entries, one for the adjective in feminine and another one for the adjective in masculine.<br />
The same principle applies when it is not possible to determine the number (singular or plural) of the target word for the same reasons mentioned above. For example, the Spanish noun "rascacielos" (skyscraper) is invariable in number, that is, it can be singular as well as plural (<i>un rascacielos, dos rascacielos</i>). In Catalan, on the other hand, the noun has a different inflection for the singular and for the plural (<i>un gratacel, dos gratacels</i>). In this case the symbol used is "ND" ("number to be determined") and the entries should be like this:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
For a more detailed description of this kind of entries, refer to section 3.1.2.4.2 of the system documentation.<br />
<br />
== Adding direction restrictions ==<br />
<br />
In the previous example we have already seen the use of direction restrictions for entries with undetermined gender or number ("GD" or "ND"). Restrictions can also be used in other cases.<br />
It is important to note that the current version of Apertium can give only a single equivalent for each source-language lexical form (a lexical form is the lemma plus its grammatical information), that is, no word-sense disambiguation is performed. [Note: The system performs only part-of-speech disambiguation for homograph words, that is, for ambiguous words that can be analyzed as more than one lexical form, like vino in Spanish, that can mean both "wine" and "he/she came". This type of disambiguation is performed by the tagger.] When a lemma can be translated in two or more different ways, one has to be chosen (the most general, the most frequent, etc.). You can tell Apertium that a certain word has to be understood (analyzed) but not generated, as it is not the translation of any source-language lemma.<br />
<br />
Let's see this with an example. The Spanish noun "muñeca" can be translated in two different ways in Catalan depending on its meaning: "canell" (wrist) or "nina" (doll). The context decides which translation is the correct one, but in its present state Apertium can not make such a decision (but see below the section on multiword units for ways to circumvent this problem). Therefore, you have to decide which word you want as an equivalent when translating from Spanish to Catalan. From Catalan to Spanish, both words can be translated as "muñeca" without any problem. You have to specify all these circumstances in the dictionary entries using direction restrictions ("LR" meaning "left to right", that is, Spanish-Catalan, and "RL" meaning "right to left", that is, Catalan-Spanish). If you decide to translate "muñeca" as "canell" in all cases, the entries in the bilingual dictionary shall be:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
This means that translation directions will be:<br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Note that that there is also a gender change in the case of "muñeca" (feminine) and "canell" (masculine))<br />
<br />
It should be emphasized that a lemma can not have two translations in the target language, because the system would give an error when translating that lemma (see the section "Detecting errors" below to see how to find and correct these and other types of errors). When a word can be translated in two different ways in the target language in all contexts, you need to choose one as the translation equivalent and leave the other one as a lemma that can be analyzed but not generated, using direction restrictions like in the previous example. For example, the Catalan lemmas "mot" and "paraula" can be both translated into Spanish as "palabra" (word) and the entry in the bilingual dictionary should look like this:<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Therefore, for this lemmas the translation directions will be:<br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
<br />
One may have to specify restrictions regarding translation direction also in monolingual dictionaries. For example, both Spanish forms cantaran or cantasen should be analyzed as cantar,verb, subjunctive imperfect, 3rd person plural, but when generating Spanish text, one has to decide which one will be generated. Monolingual dictionaries are read in two directions depending on its purpose: for the analysis, the reading direction is left to right; for the generation, right to left. Therefore, a word that must be analyzed but not generated must have the restriction "LR", and a word that must be generated but not analyzed must have the restriction "RL".<br />
The case of cantaran or cantasen must have already been taken care of in inflection paradigms and it is unlikely to be a problem for most people extending a dictionary. In some other cases it can be necessary to introduce a restriction in the word entries of monolingual dictionaries.<br />
<br />
== Adding multiwords ==<br />
<br />
It is possible to create entries consisting of two ore more words, if these words are considered to build a single "translation unit".<br />
These "multiword units" can also be useful when it comes to select the correct equivalent for a word inside a fixed expression. For example, the Spanish word "dirección" may be translated into two Catalan words: "direcció" (direction, management, directorate, steering, etc.) and "adreça" (address); including, for example, frequent multiword units such as "dirección general" --> "direcció general" (general directorate) and "dirección postal" --> "adreça postal" (postal address) may help get improved translations in some situations.<br />
<br />
Multiword units can be classified basically into two categories: multiwords with inner inflection and multiwords without inner inflection.<br />
<br />
Multiwords without inner inflection are just like the normal one-word entries, with the only difference that you need to insert the element <b/> (which represents a blank) between the individual words that make up the unit. Therefore, if you want to add, for example, the Spanish multiword "hoy en día" (nowadays), whose equivalent in Catalan is "avui dia", the entries you need to add to the different dictionaries are:<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
For Spanish-Galician pair, if you want to add, for example, the Spanish multiword "manga por hombro" (disarranged), whose equivalent in Galician is "sen xeito nin modo", the entries you need to add are:<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
;Galician monolingual dictionary:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
;Spanish-Galician bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Multiwords with inner inflection consist of a word that can inflect (typically a verb) and an invariable element. For these entries you need to specify the inflection paradigm just after the word that inflects. The invariable part must be marked with the element <g> in the right side. The blanks between words are indicated, like in the previous case, with the element <b/>. Look at the following example for the Spanish multiword "echar de menos" (to miss), translated into Catalan as "trobar a faltar":<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Note that the grammatical symbol is appended at the end, after the group marked with the <g>.<br />
It can be the case that a lemma is a multiword in one language and a single word in the other language. In that case, in the bilingual dictionary, the multiword will contain the <g> element and the single word will not. In the monolingual dictionaries, each entry will be created according to its type. Look at the following example for the Spanish multiword "darse cuenta" (to realize), translated into Catalan as the verb "adonar-se":<br />
<br />
;Spanish monolingual dictionary:<br />
<br />
<pre> <br />
<e lm="darse cuenta"><br />
<i>d</i><br />
<par n="d/ar__vblex"/><br />
<p><br />
<l><b/>cuenta</l><br />
<r><g><b/>cuenta</g></r><br />
</p><br />
</e><br />
</pre> <br />
<br />
;Catalan monolingual dictionary:<br />
<br />
<pre><br />
<e lm="adonar-se"><br />
<i>adon</i><br />
<par n="abander/ar__vblex"/><br />
</e><br />
</pre><br />
<br />
;Spanish-Catalan bilingual dictionary:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>dar<g><b/>cuenta</g><s n="vblex"/></l><br />
<r>adonar<s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Note that the enclitic pronouns (such as "-se") after both the Spanish and Catalan verb forms need not be specified and will be taken care of by structural transfer rules; the correct positioning of clitics is one of the main reasons for using the <g>... </g> labels around the invariable part of multi-word verbs.<br />
<br />
The same principles and actions described for basic entries (gender and number change, direction restrictions, etc.) apply to all kinds of multiwords.<br />
For a more detailed description of multiword units, refer to section 3.1.2.5 of the system documentation.<br />
<br />
== Brief introduction to paradigms ==<br />
<br />
<br />
The paradigms of the previous examples, as adverbs do not inflect, contain only the grammatical symbol of the lexical form, as you see in this example:<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Paradigms are build like a lexical entry. We have seen so far lexical entries where the common part of the lemma is put between <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
But you can also express the same with a pair of strings: a left string <l> and a right string <r> inside a <nowiki><p></nowiki> element:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
These two entries are equivalent. The use of the <nowiki><i></nowiki> element helps get more simple and compact entries, and you can use it when the left side and the right side of the string pair are identical. As has been explained before, monolingual dictionaries are read LR for the analysis of a text and RL for the generation. Therefore, when there is some difference between the analysed string and the generated string (not very usual) the entry can not be written using the <nowiki><i></nowiki> element.<br />
In paradigms, the left and right strings are never identical, since the right side must contain the grammatical symbols that will go through all the modules of the system.<br />
<br />
== Consider contributing your improved lexical data ==<br />
<br />
If you have successfully added general-purpose lexical data to any of the Apertium language pairs, please consider contributing it to the project so that we can offer a better toolbox to the community. You can e-mail your data (in three XML files, one for each monolingual dictionary and another one for the bilingual dictionary) to the following addresses:<br />
<pre><br />
Spanish-Catalan data<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Spanish-Portuguese data<br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Spanish-Galician data<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
If you believe you are going to contribute more heavily to the project, you can join the development team through www.sourceforge.net. If you do not have a sourceforge account, please create one; then write to Mikel L. Forcada (mlf [at] ua [dot] es) or Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) or to Xavier Gómez Guinovart if you are interested in the Spanish-Galician language pair, explaining briefly your motivations and background to join the project. The usual way to contribute is to use CVS; as a project member, you will be able to commit your changes to dictionaries directly.<br />
<br />
The addition of simple lexical contributions has recently been made simpler by means of web forms at http://xixona.dlsi.ua.es/prototype/webform/, so that contributors do not have to deal directly with XML.<br />
<br />
You should be aware that the data you contribute to the project, once added, will be freely distributed under the current license (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, as indicated). Make sure the data you contribute is not affected by any kind of license which may be incompatible with the licenses used in this project. No kind of agreement or contract is created between you and the developers. If you have any doubt, or you plan to make a massive contribution, contact Mikel L. Forcada.<br />
<br />
== Adding structural transfer (grammar) rules ==<br />
Structural transfer rules carry out transformations to the disambiguated text, which are needed because of grammatical, syntactical and lexical divergences between the two languages involved (gender and number changes to ensure agreement in the target language, word reorderings, changes in prepositions, etc.). The rules detect patterns (sequences) of source text lexical forms and apply to them the corresponding transformations. The module detects the patterns in a left-to-right, longest-match way; for example, the phrase "the big cat" will be detected and processed by the rule for determiner - adjective - noun and not by the rule for determiner - adjective, since the first pattern is longer. If two patterns have the same length, the rule that applies is the one defined in the first place.<br />
<br />
The structural transfer module (generated from the structural transfer rules file) calls the lexical transfer module (generated from the bilingual dictionary) all through the process to determine the target language equivalents of the source language lexical forms.<br />
<br />
The structural transfer rules are contained in a XML file, one for each translation direction (for example, for the translation from Spanish to Catalan, the file is apertium-es-ca.trules-es-ca.xml). You need to edit this file if you want to add or change transfer rules.<br />
<br />
Rules have a pattern and an action part. The pattern specifies which sequences of lexical forms have to be detected and processed. The action describes the verifications and transformations that need to be done on its constituents. Usual transformation operations (such as gender and number agreement) are defined inside a macroinstruction which is called inside the rule. At the end of the action part of the rule, the resulting lexical forms in the target language are sent out so that they are processed by the next modules in the translation system.<br />
<br />
A transfer rules file contains four sections with definitions of elements used in the rules, and a fifth section where the actual rules are defined. The sections are the following:<br />
<br />
* <section-def-cats>: This section contains the definition of the categories which are to be used in the rule patterns (that is, the type of lexical forms that will be detected by a certain rule). For the rule presented below, the categories "det" and "nom" (determiner and noun) need to be defined here. Categories are defined specifying the grammatical symbols that the lexical forms have. An asterisk indicates that one or more grammatical symbols follow the ones specified. The following is the definition of the category "det", which groups determiners and predeterminers in the same category since they play the same role for transfer purposes:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
It is also possible to define as a category a certain lemma, like the following for the preposition "en":<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
* <section-def-attrs>: This section contains the definition of the attributes that will be used inside of the rules, in the action part. You need attributes for all the categories defined in the previous section, if they are to be used in the action part of the rule (to make verifications on them or to send them out at the end of the rule), as well as for other attributes needed in the rule (such as gender or number). Attributes have to be defined using their corresponding grammatical symbols and can not have asterisks; its name must be unique. The following are the definitions for the attributes "a_det" (for determiners) and "gen" (gender):<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : This section contains the definition of the variables used in the rules.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Here the macroinstructions are defined, which contain sequences of code that are frequently used in the rules; this way, linguists do not need to write the same actions repeatedly. There are, for example, macroinstructions for gender and number agreement operations.<br />
<br />
<br />
* <section-rules> : This is the section where the structural transfer rules are written.<br />
<br />
<br />
<br />
The following is an example of a rule which detects the sequence determiner -- noun:<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Part of the action performed on this pattern is specified inside the macroinstruction "f_concord2", which is defined in the <section-def-macros>. It performs gender and number agreement operations: if there is a gender or number change between the source language and the target language (in the noun), the determiner changes its gender or number accordingly; furthermore, if gender or number are undetermined ("GD" or "ND", as explained in the previous section "Adding words to monolingual and bilingual dictionaries"), the noun receives the correct gender or number values from the preceding determiner. In the Apertium es-ca, es-gl and es-pt systems, there are agreement macroinstructions defined for one, two, three or four lexical units (f_concord1, f_concord2, f_concord3, f_concord4). When calling the macroinstructions in a rule, it must be specified which is the main lexical unit (the one which most heavily determines the gender or number of the other lexical units) and which other lexical units of the pattern have to be included in the agreement operations, in order of importance. This is done with the <with-param pos=""/> element. In the previous rule, the main lexical unit is the noun (position "2" in the pattern) and the second one is the determiner (position "1" in the pattern).<br />
<br />
After the pertinent actions, the resulting lexical forms are sent out, inside the <out> element. Each lexical unit is defined with a <clip>. Its attributes mean the following:<br />
<br />
* pos: refers to the position of the lexical form in the pattern. "1" is the first lexical form (the determiner) and "2" the second one (the noun).<br />
* side: indicates if the lexical form is in the source language ("sl") or in the target language ("tl"). Of course, words are sent out always in the target language; source language lexical forms may be needed inside of a rule, when testing its attributes or characteristics.<br />
* part: indicates which part of the lexical form is referred to in the 'clip'. You can use some predefined values:<br />
-whole: the whole lexical form (lemma and grammatical symbols). Used only when sending out the lexical unit (inside an <out> element).<br />
-lem: the lemma of the lexical unit<br />
-lemh: the head of the lemma of a multiword with inner inflection<br />
-lemq: the queue of a lemma of a multiword with inner inflection<br />
As well as these predefined values, you can use any of the attributes defined in <section-def-attrs> (for example "gen" or "a_det").<br />
<br />
The values "lemh" and "lemq" are used when sending out multiwords with inner inflection (see the section "Adding multiwords") in order to place the head and the queue of the lemma in the right position, since the previous module moved the queue just after the lemma head for various reasons. In pratice, in our system, this means that you must use these values instead of 'whole' when sending out verbs, since in our dictionaries multiwords with inner inflection are always verbs and, if you use the value "whole" when sending them out, the multiword would not be well formed (the head and the queue of the lemma would not have the correct position).<br />
<br />
Therefore, a rule that has a verb in its pattern must send the lexical forms like in the following two examples:<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
</pre><br />
<br />
The first rule detects a verb and places the queue in the correct place, after all the grammatical symbols. The lexical unit is sent specifying the attributes separately: lemma head, lexical category (verb), tense, person, gender (for the participles), number and lemma queue.<br />
<br />
The second rule detects a verb followed by an enclitic pronoun and sends the two lexical forms specifying also the attributes separately; the first lexical unit consists of: lemma head, lexical category (verb), tense, person and number; the second lexical unit consists of: lemma, lexical category (enclitic pronoun), person, gender, number and lemma queue. This way, the queue of the lemma is placed after the enclitic pronoun. The two lexical units (verb and enclitic pronoun) are sent inside a <mlu> element, since they have to reach the morphological generator as a multilexical unit (multiword).<br />
<br />
If you want to add a new transfer rule, you have to follow these steps:<br />
<br />
#Specify which pattern you want to detect. Bear in mind that words are processed only once by a rule, and that rules are applied left to right and choosing the longest match. For example, imagine you have in your transfer rules file only two rules, one for the pattern "determiner - noun" and one for the pattern "noun - adjective". The Spanish phrase "el valle verde" (the green valley)" would be detected and processed by the first one, not by the second. You will need to add a rule for the pattern "determiner - noun - adjective" if you wish that the three lexical units are processed in the same pattern.<br />
#Describe the operations you want to perform on the pattern. In the Apertium es-ca, es-gl and es-pt, simple agreement operations (gender and number agreement) are easy to perform in a rule by means of a macroinstruction. To perform other operations, you will need to use more complicated elements; for a more detailed description of the language used to create rules, refer to the section 3.4.2 of the system documentation. You can also read the DTD of the structural transfer rules file (transfer.dtd) provided with the Apertium package, in which all the elements of the language are described in English.<br />
#Send the lexical units of the pattern in the target language inside an <out> element. Each lexical unit must be included in a <lu> element. If two or more lexical units must be generated as a multilexical unit (only for enclitic pronouns in the present language pairs), they must be grouped inside a <mlu> element.<br />
All the words that are detected by a rule (that are part of a pattern) must be sent out at the end of the rule so that the next module (the generator) receives them. If a lexical unit is detected by a pattern and is not included in the <out> element, it will not be generated.<br />
<br />
== Adding data to the part-of-speech tagger ==<br />
To be written.<br />
== Retraining the part-of-speech tagger ==<br />
{{main|Tagger training}}<br />
To be written.<br />
== Detecting errors ==<br />
It is easy to make errors when adding new words or transfer rules to the Apertium system.<br />
<br />
It is possible that, when compiling the new files, the system displays an error message. In this case, this is a formal error (a missing XML tag, a tag that is not allowed in a certain context, etc.). You just have to go to the line number indicated by the error message, correct the error and compile again. Other types of errors are not detected when compiling, but can make the system mistranslate a word or give an incomprehensible text string. These are linguistic errors, which can be detected and corrected with the tips given in this chapter. The following information is for Linux users, since Apertium works for the moment only with this OS.<br />
<br />
As all the data processed by the system, from the original text to the translated text, circulate between the eight modules of the system in text format, it is possible to stop the text stream at any point to know what is the input or the output of a certain module. You just have to type the right commands in the terminal using a pipeline structure so that the standard output of one is used as the standard input for the next one.<br />
<br />
Using the echo or cat commands, you can send a text through one or more modules to analyse their output and detect the origin of the error. You have to move to the directory where the linguistic data are saved and type the commands explained below.<br />
<br />
===The morphological analyser output===<br />
To know how a word is analysed by the translator, type the following in the terminal (example for the Catalan word gener):<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
You can replace ca-es with the translation direction you want to test.<br />
<br />
The output in Apertium should be:<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
The string structure is: <code>^word/lemma<morphological analysis>$</code>. The <code><sent></code> tag is the analysis of the full stop, as every sentence end is represented as a full stop by the system, whether or not explicitly indicated in the sentence.<br />
<br />
The analysis of an unknown word is (ignoring the full stop information):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
and the analysis of an ambiguous word:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Each lexical form (lemma plus morphological analysis) is presented as a possible analysis of the word casa.<br />
<br />
===The tagger output===<br />
<br />
To know the output of the tagger for a source language text, type the following in the terminal (example for the Catalan-Spanish direction):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
The output will be:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
The output for an ambiguous word will be like the one above, since the tagger chooses one lexical form. Therefore, the output for casa in Catalan will be, for example (depending on the context):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===The pretransfer output===<br />
<br />
This module applies some changes to multiwords (move the lemma queue of a multiword with inner inflection just after the lemma head). To know its output, type:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Since gener is not a multiword in the dictionaries, this module does not alter its input.<br />
<br />
===The structural transfer output===<br />
<br />
To know how a word, phrase or sentence is translated into the target language and processed by structural transfer rules, type the following in the terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
The output for the Catalan word gener will be:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Analysing how a word or phrase is output by this module can help you detect errors in the bilingual dictionary or in the structural transfer rules. Typical bilingual dictionary errors are: two equivalents for the same source language lexical form, or wrong assignment of morphological symbols. Errors due to structurual transfer rules vary a lot depending on the actions performed by the rules.<br />
<br />
===The morphological generator output===<br />
<br />
To know how a word is generated by the system, type the following in the terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
With this command you can detect generation errors due to an incorrect entry in the target language monolingual dictionary or to a divergence between the output of the bilingual dictionary (the output of the previous module) and the entry in the monolingual dictionary.<br />
<br />
The correct output for the input "gener" would be:<br />
<pre><br />
enero.[][]<br />
</pre><br />
There are in this case no morphological symbols, and the word appears inflected.<br />
<br />
===The post-generator output===<br />
<br />
It is not very usual to have errors due to the postgenerator, because of its generally small size and the fact that it is seldom changed after adding usual combinations, but you can also test how a source language text comes out of this module, by typing:<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===The final output===<br />
<br />
You can put all the modules of the system in the pipeline structure and see how a source language text goes through all the modules and gets translated into the target language. You just have to add the reformatter to the previous command:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
<br />
This is the same as using the "apertium" shell script provided by the Apertium package:<br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(The full stop indicates the directory where the linguistic data are saved.)<br />
<br />
Of course, instead of typing all the presented commands every time you need to test a translation, you can create shell scripts for every action and use them to test the output of each module.<br />
<br />
Error examples<br />
<br />
To be written.<br />
<br />
<br />
[[Category:Documentation]]<br />
<br />
== Generating a new Apertium system from modified data ==<br />
If you make changes to any of the linguistic data files of Apertium (the dictionaries, the transfer rules, the tagger file or corpora or the postgeneration dictionaries), the changes will not be applied until you recompile the modules. To do this, type 'make' in the directory where the linguistic data are saved (apertium-es-ca, apertium-es-gl or what may be applicable) so that the system generates the new binary files.<br />
<br />
If changes were made to the tagger file or to the corpora used to train the tagger, you will need also to retrain the tagger. In the same directory mentioned above, after typing make, type make train in order to perform the retraining.<br />
<br />
Now the Apertium translator will work using the recently added data.<br />
<br />
==See also==<br />
<br />
* [[Comment contribuer à une paire de langues existante]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3129Comment contribuer à une paire de langues existante2007-12-19T14:13:00Z<p>172.17.30.131: /* Dictionnaire monolingue (Espagnol) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, nous vous décrivons les fichiers que vous pouvez trouver dans ce répertoire.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Contient les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Contient les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Au moment de développer ou d'adapter Apertium, l'opération qui sera réalisée plus probablement sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créer dans ces trois dictionnaires partagent une structure commune.<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (à la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots à la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Entraînement du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant dans le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
===La sortie du générateur morphologique===<br />
<br />
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant dans le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.<br />
<br />
La sortie correcte pour l'entrée « gener » serait:<br />
<pre><br />
enero.[][]<br />
</pre><br />
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi. <br />
<br />
<br />
===La sortie du post-générateur===<br />
<br />
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===La sortie finale===<br />
<br />
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
C'est le même que le shell script « apertium » fourni par le lot d'Apertium: <br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(L'arrêt complet indique le répertoire où les données linguistiques sont gardées).<br />
<br />
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.<br />
<br />
Exemples des erreurs<br />
<br />
À écrire.<br />
<br />
== Comment générer un nouveau système Apertium à partir des données modifiées ==<br />
<br />
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui puisse être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.<br />
<br />
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3128Comment contribuer à une paire de langues existante2007-12-19T14:08:59Z<p>172.17.30.131: /* Dictionnaire monolingue (Espagnol) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, nous vous décrivons les fichiers que vous pouvez trouver dans ce répertoire.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Contient les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Contient les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Au moment de développer ou d'adapter Apertium, l'opération qui sera réalisée plus probablement sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créer dans ces trois dictionnaires partagent une structure commune.<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (à la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots à la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Entraînement du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant dans le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
===La sortie du générateur morphologique===<br />
<br />
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant dans le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.<br />
<br />
La sortie correcte pour l'entrée « gener » serait:<br />
<pre><br />
enero.[][]<br />
</pre><br />
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi. <br />
<br />
<br />
===La sortie du post-générateur===<br />
<br />
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===La sortie finale===<br />
<br />
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
C'est le même que le shell script « apertium » fourni par le lot d'Apertium: <br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(L'arrêt complet indique le répertoire où les données linguistiques sont gardées).<br />
<br />
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.<br />
<br />
Exemples des erreurs<br />
<br />
À écrire.<br />
<br />
== Comment générer un nouveau système Apertium à partir des données modifiées ==<br />
<br />
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui puisse être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.<br />
<br />
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3127Comment contribuer à une paire de langues existante2007-12-19T14:07:34Z<p>172.17.30.131: /* Comment ajouter des mots dans les dictionnaires */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, nous vous décrivons les fichiers que vous pouvez trouver dans ce répertoire.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Contient les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Contient les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Au moment de développer ou d'adapter Apertium, l'opération qui sera réalisée plus probablement sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créer dans ces trois dictionnaires partagent une structure commune.<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Entraînement du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant dans le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
===La sortie du générateur morphologique===<br />
<br />
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant dans le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.<br />
<br />
La sortie correcte pour l'entrée « gener » serait:<br />
<pre><br />
enero.[][]<br />
</pre><br />
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi. <br />
<br />
<br />
===La sortie du post-générateur===<br />
<br />
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===La sortie finale===<br />
<br />
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
C'est le même que le shell script « apertium » fourni par le lot d'Apertium: <br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(L'arrêt complet indique le répertoire où les données linguistiques sont gardées).<br />
<br />
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.<br />
<br />
Exemples des erreurs<br />
<br />
À écrire.<br />
<br />
== Comment générer un nouveau système Apertium à partir des données modifiées ==<br />
<br />
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui puisse être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.<br />
<br />
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3126Comment contribuer à une paire de langues existante2007-12-19T14:06:07Z<p>172.17.30.131: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, nous vous décrivons les fichiers que vous pouvez trouver dans ce répertoire.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Contient les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Contient les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Au moment de développer ou adapter Apertium, l'opération la plus probable à réaliser sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créer dans ces trois dictionnaires partagent une structure commune.<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Entraînement du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant dans le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
===La sortie du générateur morphologique===<br />
<br />
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant dans le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.<br />
<br />
La sortie correcte pour l'entrée « gener » serait:<br />
<pre><br />
enero.[][]<br />
</pre><br />
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi. <br />
<br />
<br />
===La sortie du post-générateur===<br />
<br />
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===La sortie finale===<br />
<br />
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
C'est le même que le shell script « apertium » fourni par le lot d'Apertium: <br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(L'arrêt complet indique le répertoire où les données linguistiques sont gardées).<br />
<br />
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.<br />
<br />
Exemples des erreurs<br />
<br />
À écrire.<br />
<br />
== Comment générer un nouveau système Apertium à partir des données modifiées ==<br />
<br />
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui puisse être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.<br />
<br />
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3125Comment contribuer à une paire de langues existante2007-12-19T14:05:04Z<p>172.17.30.131: /* Comment ajouter des mots dans les dictionnaires */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, nous vous décrivons les fichiers que vous pouvez trouver dans ce répertoire.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Contient les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Contient les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Au moment de développer ou adapter Apertium, l'opération la plus probable à réaliser sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créer dans ces trois dictionnaires partagent une structure commune.<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Entraînement du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
===La sortie du générateur morphologique===<br />
<br />
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.<br />
<br />
La sortie correcte pour l'entrée « gener » serait:<br />
<pre><br />
enero.[][]<br />
</pre><br />
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi. <br />
<br />
<br />
===La sortie du post-générateur===<br />
<br />
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===La sortie finale===<br />
<br />
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
C'est le même que le shell script « apertium » fourni par le lot d'Apertium: <br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(L'arrêt complet indique le répertoire où les données linguistiques sont gardées).<br />
<br />
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.<br />
<br />
Exemples des erreurs<br />
<br />
À écrire.<br />
<br />
== Comment générer un nouveau système Apertium à partir des données modifiées ==<br />
<br />
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' sur le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui puisse être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.<br />
<br />
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3123Comment contribuer à une paire de langues existante2007-12-19T13:54:41Z<p>172.17.30.131: /* Apertium 1 */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, nous vous décrivons les fichiers que vous pouvez trouver dans ce répertoire.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Contient les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Contient les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créer dans ces trois dictionnaires partagent une structure commune.<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Entraînement du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
===La sortie du générateur morphologique===<br />
<br />
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.<br />
<br />
La sortie correcte pour l'entrée « gener » serait:<br />
<pre><br />
enero.[][]<br />
</pre><br />
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi. <br />
<br />
<br />
===La sortie du post-générateur===<br />
<br />
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===La sortie finale===<br />
<br />
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
C'est le même que le shell script « apertium » fourni par le lot d'Apertium: <br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(L'arrêt complet indique le répertoire où les données linguistiques sont gardées).<br />
<br />
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.<br />
<br />
Exemples des erreurs<br />
<br />
À écrire.<br />
<br />
== Comment générer un nouveau système Apertium à partir des données modifiées ==<br />
<br />
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' sur le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui puisse être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.<br />
<br />
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3121Comment contribuer à une paire de langues existante2007-12-19T13:50:43Z<p>172.17.30.131: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, nous vous décrivons les fichiers que vous pouvez trouver dans ce répertoire.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créer dans ces trois dictionnaires partagent une structure commune.<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Entraînement du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
===La sortie du générateur morphologique===<br />
<br />
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.<br />
<br />
La sortie correcte pour l'entrée « gener » serait:<br />
<pre><br />
enero.[][]<br />
</pre><br />
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi. <br />
<br />
<br />
===La sortie du post-générateur===<br />
<br />
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===La sortie finale===<br />
<br />
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
C'est le même que le shell script « apertium » fourni par le lot d'Apertium: <br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(L'arrêt complet indique le répertoire où les données linguistiques sont gardées).<br />
<br />
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.<br />
<br />
Exemples des erreurs<br />
<br />
À écrire.<br />
<br />
== Comment générer un nouveau système Apertium à partir des données modifiées ==<br />
<br />
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' sur le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui puisse être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.<br />
<br />
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3104Comment contribuer à une paire de langues existante2007-12-19T12:27:03Z<p>172.17.30.131: /* Comment ajouter des mots dans les dictionnaires */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créer dans ces trois dictionnaires partagent une structure commune.<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Entraînement du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
===La sortie du générateur morphologique===<br />
<br />
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.<br />
<br />
La sortie correcte pour l'entrée « gener » serait:<br />
<pre><br />
enero.[][]<br />
</pre><br />
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi. <br />
<br />
<br />
===La sortie du post-générateur===<br />
<br />
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===La sortie finale===<br />
<br />
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
C'est le même que le shell script « apertium » fourni par le lot d'Apertium: <br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(L'arrêt complet indique le répertoire où les données linguistiques sont gardées).<br />
<br />
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.<br />
<br />
Exemples des erreurs<br />
<br />
À écrire.<br />
<br />
== Comment générer un nouveau système Apertium à partir des données modifiées ==<br />
<br />
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' sur le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui puisse être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.<br />
<br />
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3103Comment contribuer à une paire de langues existante2007-12-19T12:25:35Z<p>172.17.30.131: /* Reconversion du tagger de la partie du discours */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Entraînement du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
===La sortie du générateur morphologique===<br />
<br />
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.<br />
<br />
La sortie correcte pour l'entrée « gener » serait:<br />
<pre><br />
enero.[][]<br />
</pre><br />
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi. <br />
<br />
<br />
===La sortie du post-générateur===<br />
<br />
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===La sortie finale===<br />
<br />
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
C'est le même que le shell script « apertium » fourni par le lot d'Apertium: <br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(L'arrêt complet indique le répertoire où les données linguistiques sont gardées).<br />
<br />
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.<br />
<br />
Exemples des erreurs<br />
<br />
À écrire.<br />
<br />
== Comment générer un nouveau système Apertium à partir des données modifiées ==<br />
<br />
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' sur le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui puisse être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.<br />
<br />
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3102Comment contribuer à une paire de langues existante2007-12-19T12:25:09Z<p>172.17.30.131: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
===La sortie du générateur morphologique===<br />
<br />
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.<br />
<br />
La sortie correcte pour l'entrée « gener » serait:<br />
<pre><br />
enero.[][]<br />
</pre><br />
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi. <br />
<br />
<br />
===La sortie du post-générateur===<br />
<br />
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===La sortie finale===<br />
<br />
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
C'est le même que le shell script « apertium » fourni par le lot d'Apertium: <br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(L'arrêt complet indique le répertoire où les données linguistiques sont gardées).<br />
<br />
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.<br />
<br />
Exemples des erreurs<br />
<br />
À écrire.<br />
<br />
== Comment générer un nouveau système Apertium à partir des données modifiées ==<br />
<br />
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' sur le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui puisse être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.<br />
<br />
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3101Comment contribuer à une paire de langues existante2007-12-19T12:03:06Z<p>172.17.30.131: /* La sortie du transfert structural */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
===La sortie du générateur morphologique===<br />
<br />
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin<br />
</pre><br />
<br />
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.<br />
<br />
La sortie correcte pour l'entrée « gener » serait:<br />
<pre><br />
enero.[][]<br />
</pre><br />
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi. <br />
<br />
<br />
===La sortie du post-générateur===<br />
<br />
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin<br />
</pre><br />
<br />
===La sortie finale===<br />
<br />
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt<br />
</pre><br />
C'est le même que le shell script « apertium » fourni par le lot d'Apertium: <br />
<br />
<pre><br />
$ echo "gener" | apertium -d . ca-es<br />
</pre><br />
<br />
(L'arrêt complet indique le répertoire où les données linguistiques sont gardées).<br />
<br />
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.<br />
<br />
Exemples des erreurs<br />
<br />
À écrire.<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3098Comment contribuer à une paire de langues existante2007-12-19T11:04:08Z<p>172.17.30.131: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
===La sortie du pré-transfert===<br />
<br />
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer<br />
</pre><br />
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.<br />
<br />
===La sortie du transfert structural===<br />
<br />
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant sur le terminal:<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin<br />
</pre><br />
<br />
La sortie pour le mot catalan « gener » sera:<br />
<br />
<pre><br />
^enero<n><m><sg>$<br />
</pre><br />
<br />
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3097Comment contribuer à une paire de langues existante2007-12-19T10:32:03Z<p>172.17.30.131: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3096Comment contribuer à une paire de langues existante2007-12-19T10:31:25Z<p>172.17.30.131: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
<br />
===La sortie du tagger===<br />
<br />
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob<br />
</pre><br />
<br />
La sortie sera:<br />
<pre><br />
^gener<n><m><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):<br />
<br />
<pre><br />
^casa<n><f><sg>$^.<sent>$[][]<br />
</pre><br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3076Comment contribuer à une paire de langues existante2007-12-18T12:13:56Z<p>172.17.30.131: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
===La sortie de l'analysateur morphologique===<br />
<br />
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):<br />
<br />
<pre><br />
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin<br />
</pre><br />
<br />
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.<br />
<br />
La sortie à Apertium devrait être:<br />
<br />
<pre><br />
^gener/gener<n><m><sg>$^./.<sent>$[][]<br />
</pre><br />
<br />
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.<br />
<br />
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):<br />
<br />
<pre><br />
^genoma/*genoma$<br />
</pre><br />
<br />
et l'analyse d'un mot ambigu:<br />
<br />
<pre><br />
^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$<br />
</pre><br />
<br />
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3075Comment contribuer à une paire de langues existante2007-12-18T11:52:44Z<p>172.17.30.131: /* Détection des erreurs */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3074Comment contribuer à une paire de langues existante2007-12-18T11:50:03Z<p>172.17.30.131: /* Détection des erreurs */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.<br />
<br />
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.<br />
<br />
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où il se sont gardées les données linguistiques et taper les ordres expliqués ci-dessous.<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3072Comment contribuer à une paire de langues existante2007-12-18T10:43:53Z<p>172.17.30.131: /* Reconversion du tagger de la partie du discours */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3071Comment contribuer à une paire de langues existante2007-12-18T10:43:21Z<p>172.17.30.131: /* Reconversion du tagger de la partie du discours */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3070Comment contribuer à une paire de langues existante2007-12-18T10:42:51Z<p>172.17.30.131: /* Détection des erreurs */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3069Comment contribuer à une paire de langues existante2007-12-18T10:42:41Z<p>172.17.30.131: /* Reconversion du tagger de la partie du discours */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3068Comment contribuer à une paire de langues existante2007-12-18T10:42:26Z<p>172.17.30.131: /* Comment ajouter des données dans le tagger de la partie du discours */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3067Comment contribuer à une paire de langues existante2007-12-18T10:41:54Z<p>172.17.30.131: /* Reconversion du tagger de la partie du discours */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{main|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3066Comment contribuer à une paire de langues existante2007-12-18T10:41:24Z<p>172.17.30.131: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
== Comment ajouter des données dans le tagger de la partie du discours ==<br />
<br />
À écrire.<br />
<br />
== Reconversion du tagger de la partie du discours ==<br />
<br />
{{principal|Tagger training}}<br />
<br />
À écrire.<br />
<br />
== Détection des erreurs ==<br />
<br />
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.<br />
<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3065Comment contribuer à une paire de langues existante2007-12-18T09:35:40Z<p>172.17.30.131: /* Comment ajouter des règles de transfert structural (grammaire) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3064Comment contribuer à une paire de langues existante2007-12-18T09:34:41Z<p>172.17.30.131: /* Comment ajouter des règles de transfert structural (grammaire) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
<br />
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3063Comment contribuer à une paire de langues existante2007-12-18T09:32:43Z<p>172.17.30.131: /* Comment ajouter des règles de transfert structural (grammaire) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)<br />
<br />
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
</pattern><br />
<action><br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="gen"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</out><br />
</action><br />
</rule><br />
<br />
<br />
<rule><br />
<pattern><br />
<pattern-item n="verb"/><br />
<pattern-item n="prnenc"/><br />
</pattern><br />
<action><br />
<out><br />
<mlu><br />
<lu><br />
<clip pos="1" side="tl" part="lemh"/><br />
<clip pos="1" side="tl" part="a_verb"/><br />
<clip pos="1" side="tl" part="temps"/><br />
<clip pos="1" side="tl" part="persona"/><br />
<clip pos="1" side="tl" part="nbr"/><br />
</lu><br />
<lu><br />
<clip pos="2" side="tl" part="lem"/><br />
<clip pos="2" side="tl" part="a_prnenc"/><br />
<clip pos="2" side="tl" part="persona"/><br />
<clip pos="2" side="tl" part="gen"/><br />
<clip pos="2" side="tl" part="nbr"/><br />
<clip pos="1" side="tl" part="lemq"/><br />
</lu> <br />
</mlu><br />
</out><br />
</action><br />
</rule><br />
<br />
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.<br />
<br />
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot). <br />
<br />
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:<br />
<br />
<br />
1.Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif. <br />
<br />
2.Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.<br />
<br />
<br />
<br />
3.Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.<br />
<br />
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3048Comment contribuer à une paire de langues existante2007-12-17T11:32:39Z<p>172.17.30.131: /* Comment ajouter des règles de transfert structural (grammaire) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3047Comment contribuer à une paire de langues existante2007-12-17T11:31:41Z<p>172.17.30.131: /* Comment ajouter des règles de transfert structural (grammaire) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale.<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne.<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne.<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3046Comment contribuer à une paire de langues existante2007-12-17T11:30:34Z<p>172.17.30.131: /* Comment ajouter des règles de transfert structural (grammaire) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3045Comment contribuer à une paire de langues existante2007-12-17T11:29:42Z<p>172.17.30.131: /* Comment ajouter des règles de transfert structural (grammaire) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole : la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem : le lemme de l'unité lexicale<br />
-lemh : la tête du lemme d'un multimot avec une inflexion interne<br />
-lemq : la queue du lemme d'un multimot avec une inflexion interne<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3043Comment contribuer à une paire de langues existante2007-12-17T11:25:48Z<p>172.17.30.131: /* Comment ajouter des règles de transfert structural (grammaire) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3042Comment contribuer à une paire de langues existante2007-12-17T11:24:06Z<p>172.17.30.131: /* Comment ajouter des règles de transfert structural (grammaire) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3041Comment contribuer à une paire de langues existante2007-12-17T11:22:36Z<p>172.17.30.131: /* Comment ajouter des règles de transfert structural (grammaire) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
- whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
- lem: le lemme de l'unité lexicale<br />
- lemh: la tête du lemme d'un multimot avec une inflexion interne<br />
- lemq: la queue du lemme d'un multimot avec une inflexion interne<br />
<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3040Comment contribuer à une paire de langues existante2007-12-17T11:21:52Z<p>172.17.30.131: /* Comment ajouter des règles de transfert structural (grammaire) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne<br />
<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3039Comment contribuer à une paire de langues existante2007-12-17T11:20:47Z<p>172.17.30.131: /* Comment ajouter des règles de transfert structural (grammaire) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne<br />
<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3038Comment contribuer à une paire de langues existante2007-12-17T11:19:44Z<p>172.17.30.131: /* Comment ajouter des règles de transfert structural (grammaire) */</p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
-lem: le lemme de l'unité lexicale<br />
-lemh: la tête du lemme d'un multimot avec une inflexion interne<br />
-lemq: la queue du lemme d'un multimot avec une inflexion interne<br />
<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131https://wiki.apertium.org/w/index.php?title=Comment_contribuer_%C3%A0_une_paire_de_langues_existante&diff=3037Comment contribuer à une paire de langues existante2007-12-17T11:17:45Z<p>172.17.30.131: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.<br />
<br />
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, les fichiers que vous pouvez trouver dans ce répertoire sont décrites.<br />
<br />
<br />
==Exemple d'édition des fichiers==<br />
<br />
===Apertium 1===<br />
<br />
<br />
Pour la paire espagnol-catalan (apertium-es-ca):<br />
<br />
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005) <br />
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.<br />
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).<br />
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.<br />
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.<br />
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol<br />
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan<br />
* apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)<br />
* apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)<br />
* répertoire es-tagger-data : Ayant les données nécessaires pour le tagger espagnol (corpus, etc.)<br />
* répertoire ca-tagger-data : Ayant les données nécessaires pour le tagger catalan (corpus, etc.)<br />
<br />
<br />
== Comment ajouter des mots dans les dictionnaires ==<br />
<br />
Lorsqu'Apertium est développé ou adapté, l'opération qui sera probablement réalisée, sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.<br />
<br />
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez make dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.<br />
<br />
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:<br />
<br />
<br />
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.<br />
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.<br />
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.<br />
<br />
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créér dans ces trois dictionnaires partagent une structure commune.<br />
<br />
<br />
== Dictionnaire monolingue (Espagnol) ==<br />
<br />
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (dans la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots (dans la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire typique en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).<br />
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:<br />
<br />
<e lm="bonito"><br />
<i>bonit</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.<br />
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:<br />
<br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
<br />
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:<br />
<br />
<pre><br />
<e lm="genoma"><br />
<i>genoma</i><br />
<par n="abismo__n"/><br />
</e><br />
</pre><br />
<br />
Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.<br />
<br />
<br />
== Dictionnaire monolingue (Catalan) ==<br />
<br />
<br />
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:<br />
<br />
<pre><br />
<e lm="còsmic"><br />
<i>còsmi</i><br />
<par n="acadèmi/c__adj"/><br />
</e><br />
</pre><br />
<br />
<br />
== Dictionnaire monolingue (Galicien) ==<br />
<br />
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:<br />
<br />
<pre><br />
<e lm="xenoma"><br />
<i>xenoma</i><br />
<par n="Xulio__n"/><br />
</e><br />
</pre><br />
<br />
== Dictionnaire bilingue ==<br />
<br />
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.<br />
<br />
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.<br />
<br />
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est: <br />
<pre><br />
<e> <br />
<p><br />
<l>cósmico<s n="adj"/></l><br />
<r>còsmic<s n="adj"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.<br />
<br />
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol: <br />
<br />
<pre><br />
<e> <br />
<p><br />
<l>genoma<s n="n"/></l><br />
<r>xenoma<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>limón<s n="n"/><s n="m"/></l><br />
<r>llimona<s n="n"/><s n="f"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).<br />
<br />
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.<br />
<br />
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient: <br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="GD"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="f"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>canadiense<s n="adj"/><s n="mf"/></l><br />
<r>canadenc<s n="adj"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.<br />
<br />
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:<br />
<br />
<pre><br />
<e r="LR"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l><br />
<r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.<br />
<br />
<br />
== Comment ajouter des restrictions directionnelles == <br />
<br />
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.<br />
<br />
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits <br />
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>muñeca<s n="n"/><s n="f"/></l><br />
<r>canell<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
<br />
<e r="RL"><br />
<p><br />
<l>muñeca<s n="n"/></l><br />
<r>nina<s n="n"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Cela veut dire que les directions de traduction seront: <br />
<br />
muñeca --> canell<br />
muñeca <-- canell<br />
muñeca <-- nina<br />
<br />
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))<br />
<br />
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>palabra<s n="n"/></l><br />
<r>paraula<s n="n"/></r><br />
</p><br />
</e><br />
<e r="RL"><br />
<p><br />
<l>palabra<s n="n"/><s n="f"/></l><br />
<r>mot<s n="n"/><s n="m"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Par conséquent, pour ces lemmes les directions de traduction seront: <br />
<br />
palabra --> paraula<br />
palabra <-- paraula<br />
palabra <-- mot<br />
<br />
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».<br />
<br />
<br />
== Comment ajouter des multimots ==<br />
<br />
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».<br />
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons au catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans quelques situations.<br />
<br />
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans une inflexion interne.<br />
<br />
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:<br />
<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="hoy en día"><br />
<i>hoy<b/>en<b/>día</i><br />
<par n="ahora__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="avui dia"><br />
<i>avui<b/>dia</i><br />
<par n="ahir__adv"/><br />
</e><br />
</pre> <br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>hoy<b/>en<b/>día<s n="adv"/></l><br />
<r>avui<b/>dia<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:<br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="manga por hombro"><br />
<i>manga<b/>por<b/>hombro</i><br />
<par n="abajo__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire monolingue galicien:<br />
<br />
<pre><br />
<e lm="sen xeito nin modo"><br />
<i>sen<b/>xeito<b/>nin<b/>modo</i><br />
<par n="Deo_gratias__adv"/><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-galicien:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>manga<b/>por<b/>hombro<s n="adv"/></l><br />
<r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »: <br />
<br />
* Dictionnaire monolingue espagnol:<br />
<br />
<pre><br />
<e lm="echar de menos"><br />
<i>ech</i><br />
<par n="aspir/ar__vblex"/><br />
<p><br />
<l><b/>de<b/>menos</l><br />
<r><g><b/>de<b/>menos</g></r><br />
</p><br />
</e> <br />
</pre><br />
<br />
* Dictionnaire monolingue catalan:<br />
<br />
<pre><br />
<e lm="trobar a faltar"><br />
<i>trob</i><br />
<par n="abander/ar__vblex"/><br />
<p><br />
<l><b/>a<b/>faltar</l><br />
<r><g><b/>a<b/>faltar</g></r><br />
</p><br />
</e><br />
</pre><br />
<br />
* Dictionnaire bilingue espagnol-catalan:<br />
<br />
<pre><br />
<e><br />
<p><br />
<l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l><br />
<r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r><br />
</p><br />
</e><br />
</pre><br />
<br />
<br />
== Bref introduction aux paradigmes ==<br />
<br />
<br />
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:<br />
<br />
<pre><br />
<pardef n="ahora__adv"><br />
<e><br />
<p><br />
<l/><br />
<r><s n="adv"/></r><br />
</p><br />
</e><br />
</pardef><br />
</pre><br />
<br />
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<i>cósmic</i><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :<br />
<br />
<pre><br />
<e lm="cósmico"><br />
<p><br />
<l>cósmic</l><br />
<r>cósmic</r><br />
</p><br />
<par n="absolut/o__adj"/><br />
</e><br />
</pre><br />
<br />
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.<br />
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.<br />
<br />
<br />
== Considérez le fait de nous fournir vos améliorations des données lexicales ==<br />
<br />
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, merci de considérer le fait de les fournir dans le projet pour que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous adresser vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes: <br />
<br />
<pre><br />
Données espagnol-catalan<br />
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es<br />
Données espagnol-portugais <br />
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es<br />
Données espagnol-galicien<br />
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es<br />
</pre><br />
<br />
Si vous pensez que vous allez contribuer plus profondément dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas une compte à sourceforge, merci d'en créer une; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de <br />
contribuer est d'utiliser CVS; tant qu'un membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires. <br />
<br />
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML. <br />
<br />
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.<br />
<br />
<br />
== Comment ajouter des règles de transfert structural (grammaire) ==<br />
<br />
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.<br />
<br />
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.<br />
<br />
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert. <br />
<br />
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.<br />
<br />
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:<br />
<br />
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:<br />
<br />
<pre><br />
<def-cat n="det"> <br />
<cat-item tags="det.*"/><br />
<cat-item tags="predet.*"/><br />
</def-cat><br />
</pre><br />
<br />
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":<br />
<br />
<pre><br />
<def-cat n="en"><br />
<cat-item lemma="en" tags="pr"/><br />
</def-cat><br />
</pre><br />
<br />
<br />
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre): <br />
<br />
<pre><br />
<def-attr n="a_det"> <br />
<attr-item tags="det.def"/><br />
<attr-item tags="det.ind"/><br />
<attr-item tags="det.dem"/><br />
<attr-item tags="det.pos"/><br />
<attr-item tags="predet"/><br />
</def-attr><br />
<br />
<def-attr n="gen"> <br />
<attr-item tags="m"/><br />
<attr-item tags="f"/><br />
<attr-item tags="mf"/><br />
<attr-item tags="nt"/><br />
<attr-item tags="GD"/><br />
</def-attr><br />
</pre><br />
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.<br />
<pre><br />
<def-var n="interrogativa"/><br />
</pre><br />
<br />
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.<br />
<br />
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.<br />
<br />
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
<pattern-item n="det"/><br />
<pattern-item n="nom"/><br />
</pattern><br />
<action><br />
<call-macro n="f_concord2"><br />
<with-param pos="2"/><br />
<with-param pos="1"/><br />
</call-macro> <br />
<out> <br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
<b pos="1"/> <br />
<lu><br />
<clip pos="2" side="tl" part="whole"/><br />
</lu> <br />
</out> <br />
</action><br />
</rule><br />
</pre><br />
<br />
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).<br />
<br />
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:<br />
<br />
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).<br />
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.<br />
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:<br />
- whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).<br />
- lem: le lemme de l'unité lexicale<br />
- lemh: la tête du lemme d'un multimot avec une inflexion interne<br />
- lemq: la queue du lemme d'un multimot avec une inflexion interne<br />
<br />
<br />
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).<br />
<br />
==See also==<br />
<br />
* [[Contributing to an existing pair]]<br />
<br />
== Source ==<br />
<br />
The original version was transferred from source http://apertium.sourceforge.net/extending.html.<br />
<br />
[[Category:Documentation]]</div>172.17.30.131