Cómo Contribuir a un par de lenguas existentes

From Apertium
Jump to navigation Jump to search

{#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 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.

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.


Ejemplo de edición de los ficheros

*Apertium 1

Para el par español-catalán (*apertium-eres-*ca):

  • *apertium-Eres-*ca.Eres.Diez : Diccionario *monolingue español, habiendo 11,800 entradas (desde el 17 de noviembre de 2005)
  • *apertium-eres-*ca.*ca.Diez : Diccionario *monolingue catalán, habiendo 11,800 entradas.
  • *apertium-Eres-*ca.Eres-*ca.Diez : Diccionario bilingüe español-catalán, habiendo 12,800 entradas (*correspondences español-catalán).
  • *apertium-Eres-*ca.*trules-Eres-*ca.*xml : Reglas de *transfert estructural para la traducción del español al catalán.
  • *apertium-Eres-*ca.*trules-*ca-Eres.*xml : Reglas de *transfert estructural para la traducción del catalán al español.
  • *apertium-Eres-*ca.Eres.*tsx : Fichero de definición del *tagger para el español
  • *apertium-eres-*ca.*ca.*tsx : Fichero de definición del *tagger para el catalán
  • *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)
  • *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)
  • repertorio eres-*tagger-dató : Contiene los datos necesarios para el *tagger español (*corpus, etc.)
  • Repertorio *ca-*tagger-dató : Contiene los datos necesarios para el *tagger catalán (*corpus, etc.)

Cómo Añadir palabras en los diccionarios

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.

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.

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:


  1. 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.
  2. 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.
  3. 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.

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.

Diccionario *monolingue (Español)

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). 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 »:

     <*e *lm="*bonito">
       *bonit
       <por *n="*absolut/*o__*adj"/>
     </*e>

Para añadir una palabra, os tendréis que crear una entrada con la misma estructura. La parte entre y 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. 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:

     <*e *lm="*cósmico">
       *cósmic
       <por *n="*absolut/*o__*adj"/>
     </*e>

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:

<*pre>

    <*e *lm="*genoma">
       *genoma
       <por *n="*abismo__*n"/>
     </*e>

</*pre>

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.

Diccionario *monolingue (Catalán)

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:

<*pre>

   <*e *lm="*còsmic">
      *còsmi
      <por *n="*acadèmi/*c__*adj"/>
   </*e>

</*pre>


Diccionario *monolingue (Gallego)

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:

<*pre>

   <*e *lm="*xenoma">
      *xenoma
      <por *n="*Xulio__*n"/>
   </*e>

</*pre>

Diccionario bilingüe

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.

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.

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: <*pre>

    <*e> 
       <*p>
         <l>*cósmico</l>
         <*r>*còsmic</*r>
       </*p>
     </*e>

</*pre>

Esta entrada traducirá todas las formas desviadas, es decir, *adj m *sg, *adj f *sg, *adj m *pl *and *adj f *pl. Cela funciona para la traducción en ambas direcciones: del español al catalán y del catalán al español.

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 *genoma/*xenoma en ambas direcciones, es decir, del español al gallego y del gallego al español:

<*pre>

    <*e> 
       <*p>
         <L>*genoma</l>
         <*r>*xenoma</*r>
       </*p>
     </*e>

</*pre>

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:

<*pre>

     <*e>
       <*p>
         <L>*limón</l>
         <*r>*llimona</*r>
       </*p>
     </*e>

</*pre>

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

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.

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:

<*pre>

    <*e *r="*LR">
       <*p>
         <L>*canadiense</l>
         <*r>*canadenc</*r>
       </*p>
     </*e>
     <*e *r="*RL">
       <*p>
         <l>*canadiense</l>
         <*r>*canadenc</*r>
       </*p>
     </*e>
     <*e *r="*RL">
       <*p>
         <l>*canadiense</l>
         <*r>*canadenc</*r>
       </*p>
     </*e>

</*pre>

« *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.

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 (un *rascacielos, espalda *rascacielos). En catalán, de otro lado, el nombre ha una inflexión diferente para el singular y para el plural (un *gratacel, espalda *gratacels). En este caso, el símbolo utilizado es « *ND » (« número a determinar ») y las entradas serían como ésta:

<*pre>

     <*e *r="*LR">
       <*p>
         <L>*rascacielos</l>
         <*r>*gratacel</*r>
       </*p>
     </*e>
     <*e *r="*RL">
       <*p>
         <l>*rascacielos</l>
         <*r>*gratacel</*r>
       </*p>
     </*e>
     <*e *r="*RL">
       <*p>
         <l>*rascacielos</l>
         <*r>*gratacel</*r>
       </*p>
     </*e>

</*pre>

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.


Cómo Añadir restricciones *directionnelles

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.

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

<*pre>

     <*e>
       <*p>
         <L>*muñeca</l>
         <*r>*canell</*r>
       </*p>
     </*e>
     <*e *r="*RL">
       <*p>
         <L>*muñeca</l>
         <*r>*nina</*r>
       </*p>
     </*e>

</*pre>

Cela quiere decir que las direcciones de traducción serán:

     *muñeca --> *canell
     *muñeca <-- *canell
     *muñeca <-- *nina

(Anotáis que ha también un cambio de género en el caso de « *muñeca » (femenino) y « *canell » (masculino))

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:

<*pre>

      <*e>
       <*p>
         <L>*palabra</l>
         <*r>*paraula</*r>
       </*p>
     </*e>
     <*e *r="*RL">
       <*p>
         <l>*palabra</l>
         <*r>palabra</*r>
       </*p>
     </*e>

</*pre>

Por consiguiente, para estos *lemmes las direcciones de traducción serán:

     *palabra --> *paraula
     *palabra <-- *paraula
     *palabra <-- Palabra

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


Cómo Añadir de los *multimots

Es posible de crear entradas constituidas de dos o varias palabras, siempre y cuando estas palabras puedan construir una sola unidad de traducción ». 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.

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.

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:


  • Diccionario *monolingue español:

<*pre>

         <*e *lm="*hoy  *día">
           *hoy<*b/>en<*b/>*día
           <por *n="*ahora__*adv"/>
          </*e>

</*pre>

  • Diccionario *monolingue catalán:

<*pre>

         <*e *lm="*avui *dia">
           *avui<*b/>*dia
           <por *n="*ahir__*adv"/>
         </*e>
</*pre>    
  • Diccionario bilingüe español-catalán:

<*pre>

         <*e>
           <*p>
             <L>*hoy<*b/>en<*b/>*día</l>
             <*r>*avui<*b/>*dia</*r>
           </*p>
         </*e>

</*pre>

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:

  • Diccionario *monolingue español:

<*pre>

         <*e *lm="*manga *por *hombro">
             *manga<*b/>*por<*b/>*hombro
             <por *n="*abajo__*adv"/>
         </*e>

</*pre>

  • Diccionario *monolingue gallego:

<*pre>

         <*e *lm="*sen *xeito *nin *modo">
             *sen<*b/>*xeito<*b/>*nin<*b/>*modo
             <por *n="*Deo_*gratias__*adv"/>
         </*e>

</*pre>

  • Diccionario bilingüe español-gallego:
 <*pre>
         <*e>
            <*p>
               <L>*manga<*b/>*por<*b/>*hombro</l>
               <*r>*sen<*b/>*xeito<*b/>*nin<*b/>*modo</*r>
            </*p>
         </*e>

</*pre>

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

  • Diccionario *monolingue español:

<*pre>

    <*e *lm="*echar De *menos">
       *ech
          <por *n="*aspir/*ar__*vblex"/>
       <*p>
          <l><*b/>de<*b/>*menos</l>
          <*r><g><*b/>de<*b/>*menos</g></*r>
       </*p>
     </*e>          

</*pre>

  • Diccionario *monolingue catalán:

<*pre>

     <*e *lm="*trobar Ha *faltar">
       *trob
          <por *n="*abander/*ar__*vblex"/>
       <*p>
          <l><*b/>ha<*b/>*faltar</l>
          <*r><g><*b/>ha<*b/>*faltar</g></*r>
       </*p>
     </*e>

</*pre>

  • Diccionario bilingüe español-catalán:

<*pre>

    <*e>
      <*p>
        <L>*echar<g><*b/>de<*b/>*menos</g></l>
        <*r>*trobar<g><*b/>ha<*b/>*faltar</g></*r>
     </*p>
    </*e>

</*pre>


En resumen introducción a los paradigmas

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:

<*pre>
    <*pardef *n="*ahora__*adv">
         <*e>
            <*p>
               <L/>
               <*r></*r>
            </*p>
         </*e>
   </*pardef>

</*pre>

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> </*nowiki>:

<*pre>

     <*e *lm="*cósmico">
       *cósmic
       <por *n="*absolut/*o__*adj"/>
     </*e>

</*pre>

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

<*pre>
     <*e *lm="*cósmico">
        <*p>
           <L>*cósmic</l>
           <*r>*cósmic</*r>
        </*p>
        <por *n="*absolut/*o__*adj"/>
     </*e>

</*pre>

Estas dos entradas son equivalentes. El uso del elemento <*nowiki></*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></*nowiki>. 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.


Consideráis el hecho de proporcionarnos vuestras mejoras de los datos *lexicales

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:

<*pre> Datos españoles-catalanes Mireia *Ginestí: *mginesti [*at] *dlsi [dote] *ua [dote] eres Dadas español-portugués Carme *Armentano: *carmentano [*at] *dlsi [dote] *ua [dote] eres Dadas español-gallego Xavier Gómez-*Guinovart: *xgg [*at] *uvigo [dote] eres </*pre>

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 es de utilizar *CVS; tanto que un miembro del proyecto, os tendréis que estar capaz de grabar directamente vuestros cambios en los diccionarios.

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.

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.


Cómo Añadir reglas de *transfert estructural (*grammaire)

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.

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.

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.

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.

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:

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

<*pre>

                            <*def-*cat *n="*det">         
                                    <*cat-*item *tags="*det.*"/>
                                    <*cat-*item *tags="*predet.*"/>
                            </*def-*cat>

</*pre>

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

<*pre>

                          <*def-*cat *n="en">
                                   <*cat-*item *lemma="en" *tags="*pr"/>
                         </*def-*cat>

</*pre>


  • <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):

<*pre>

                            <*def-*attr *n="Ha_*det">         
                                   <*attr-*item *tags="*det.*def"/>
                                   <*attr-*item *tags="*det.*ind"/>
                                   <*attr-*item *tags="*det.*dem"/>
                                   <*attr-*item *tags="*det.*pos"/>
                                   <*attr-*item *tags="*predet"/>
                           </*def-*attr>
                          <*def-*attr *n="*gen">         
                                   <*attr-*item *tags="M"/>
                                   <*attr-*item *tags="f"/>
                                   <*attr-*item *tags="*mf"/>
                                   <*attr-*item *tags="*nt"/>
                                   <*attr-*item *tags="*GD"/>
                           </*def-*attr>

</*pre>

  • <sección-*def-*vars> : Esta sección contiene la definición de las variables utilizadas en las reglas.

<*pre>

                         <*def-*var *n="*interrogativa"/>

</*pre>

  • <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.
  • <Sección-*rules> : En esta sección las reglas de *transfert estructural son escritas.

El ejemplo siguiente muestra una regla quién detecta la secuencia determinante – nombre:

<*pre> <*rule>

     <*pattern>
         <*pattern-*item *n="*det"/>
         <*pattern-*item *n="Nombre"/>
     </*pattern>
     <acción>
         <*call-*macro *n="f_*concord2">
             <*with-*param *pos="2"/>
             <*with-*param *pos="1"/>
         </*call-*macro>    
         <*out>    
             <leído>
                 <*clip *pos="1" *side="*tl" parte="*whole"/>
             </leído>
             <*b *pos="1"/>       
             <leído>
                 <*clip *pos="2" *side="*tl" parte="*whole"/>
             </leído> 
         </*out>     
    </acción>

</*rule> </*pre>

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

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:

  • *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).
  • *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.
  • Parte: indica qué parte de la forma *lexicale es implicada en el '*clip'. Os podéis utilizar algunos valores *prédéfinies:
                       -*whole: la forma *lexicale en entera (*lemme y símbolos *grammaticaux). Utilizado sólo cuando la unidad *lexicale es enviado  (en un elemento <*out>).
                       -*lem: El *lemme de la unidad *lexicale.
                       -*lemh: La cabeza del *lemme de un *multimot con una inflexión interna.
                       -*lemq: La cola del *lemme de un *multimot con una inflexión interna.

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 »).

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)

Por consiguiente, una regla habiendo un verbo en su motivo tiene que enviar las formas *lexicales como en ambos ejemplos siguientes:

<*rule>

      <*pattern>
          <*pattern-*item *n="*verb"/>
      </*pattern>
      <Acción>
          <*out>               
             <leído>
                 <*clip *pos="1" *side="*tl" parte="*lemh"/>
                 <*clip *pos="1" *side="*tl" parte="ha_*verb"/>
                 <*clip *pos="1" *side="*tl" parte="tiempo"/>
                 <*clip *pos="1" *side="*tl" parte="*persona"/>
                 <*clip *pos="1" *side="*tl" parte="*gen"/>
                 <*clip *pos="1" *side="*tl" parte="*nbr"/>
                 <*clip *pos="1" *side="*tl" parte="*lemq"/>
             </leído>       
         </*out>
      </acción>

</*rule>


<*rule>

     <*pattern>
        <*pattern-*item *n="*verb"/>
        <*pattern-*item *n="*prnenc"/>
    </*pattern>
    <Acción>
        <*out>
            <*mlu>
               <leído>
                  <*clip *pos="1" *side="*tl" parte="*lemh"/>
                  <*clip *pos="1" *side="*tl" parte="ha_*verb"/>
                  <*clip *pos="1" *side="*tl" parte="tiempo"/>
                  <*clip *pos="1" *side="*tl" parte="*persona"/>
                  <*clip *pos="1" *side="*tl" parte="*nbr"/>
               </leído>
               <leído>
                  <*clip *pos="2" *side="*tl" parte="*lem"/>
                  <*clip *pos="2" *side="*tl" parte="ha_*prnenc"/>
                  <*clip *pos="2" *side="*tl" parte="*persona"/>
                  <*clip *pos="2" *side="*tl" parte="*gen"/>
                  <*clip *pos="2" *side="*tl" parte="*nbr"/>
                  <*clip *pos="1" *side="*tl" parte="*lemq"/>
              </leído> 
           </*mlu>
      </*out>
   </acción>

</*rule>

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.

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


Si os queréis añadir una nueva regla de *transfert, os tenéis que seguir estas etapas:

  1. 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.
  2. 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.
  3. 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>.

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.


Cómo Añadir datos en el *tagger de la parte del discurso

A escribir.


== Entrenamiento del *tagger de la parte del discurso ==.{#Nom|*Tagger *training}}

A escribir.

Detección de los errores

Es fácil de cometer errores al momento de añadir nuevas palabras o de las reglas de *transfert en el sistema de *Apertium.

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.

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.

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.

La salida de la *analysateur *morphologique

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 »):

<*pre> $ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin </*pre>

Os podéis reemplazar *ca-eres por la dirección de traducción que os queréis *tester.

La salida a *Apertium tendría que estar:

<*pre*gener/*gener<*n><M><*sg./.<Siente>$[][] </*pre>

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.

El análisis de una palabra desconocida es (ignorando la información de parada completa):

<*pre*genoma/**genoma$ </*pre>

Y el análisis de una palabra ambigua:

<*preColocó/colocó<*n><f><*sg>/*casar<*vblex><*pri><*p3><*sg>/*casar<*vblex><*imp><*p2><*sg>$ </*pre>

Cada forma *lexicale (*lemme más el análisis *morphologique) es presentada como un análisis posible de la palabra « colocó »

La salida del *tagger

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

<*pre> $ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob </*pre>

La salida será: <*pre*gener<*n><m><*sg.<Siente>$[][] </*pre>

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

<*preColocó<*n><f><*sg.<Siente>$[][] </*pre>

La salida del prado-*transfert

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

<*pre> $ *echo "*gener" | *apertium-*destxt | *lt-*proc *ca-Eres.*automorf.*bin | *apertium-*tagger --*tagger *ca-Eres.*prob | *apertium-*pretransfer </*pre> Como « *gener » no es un *multimot en los diccionarios, este módulo no cambia sus entradas.

La salida del *transfert estructural

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:

<*pre> $ *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 </*pre>

La salida para la palabra catalana « *gener » será:

<*pre*enero<*n><M><*sg>$ </*pre>

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.

La salida del *générateur *morphologique

Para saber cómo una palabra es generado por el sistema, pegáis el ejemplo siguiente en el terminal:

<*pre> $ *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 </*pre>

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.

La salida correcta para la entrada « *gener » sería: <*pre>

  • enero.[][]

</*pre> En este caso, no hay símbolos *morphologiques y la palabra aparece desviado.


La salida del *post-*générateur

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:

<*pre> $ *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 </*pre>

La salida final

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:

<*pre> $ *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 </*pre> Es el mismo que el *shell *script « *apertium » proporcionado por el lote de *Apertium:

<*pre> $ *echo "*gener" | *apertium -D . *ca-Eres </*pre>

(La parada completa indica el repertorio dónde los datos lingüísticos son guardadas).

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.

Ejemplos de los errores

A escribir.

Cómo Generar un nuevo sistema *Apertium a marchar de los datos modificados

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.

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.

Ahora, el traductor *Apertium trabajará con los datos recientemente añadidos.


*See *also

Fuente

*Category:Documentación