Autoconcord (français)

From Apertium
Jump to navigation Jump to search

In English

Faire concorder les dictionnaires bilingues avec les dictionnaires unilingues[edit]

Le paquet apertium-dixtools contient un outil pour faire en sorte que les symboles (genre, nombre, ...) du dictionnaire bilingue s'accordent automatiquement avec les dictionnaires unilingues.

Comment ça marche ?[edit]

Quelques préparations sont nécessaire.

Les outils cherchent dans les dictionnaires unilingues un commentaire spécial autoconcord dans les paradigmes :

<pardef n="ackord__n" c="autoconcord:nt,sp">
  <e>       <p><l></l>          <r><s n="n"/><s n="nt"/><s n="sp"/><s n="ind"/></r></p></e>
  <e>       <p><l>et</l>        <r><s n="n"/><s n="nt"/><s n="sg"/><s n="def"/></r></p></e>
  <e>       <p><l>en</l>        <r><s n="n"/><s n="nt"/><s n="pl"/><s n="def"/></r></p></e>
</pardef>
...

<e lm="avbrott">         <i>avbrott</i><par n="ackord__n"/></e>

Ce commentaire fait en sorte que toutes les entrées utilisant le paradigme ackord__n ont les symboles autoconcord 'nt' et 'sp'.

Le dictionnaire bilingue contient

 <e><p><l>avbrott<s n="n"/></l><r>afbrydelse<s n="n"/></r></p></e>


Le dictionnaire de droite dix utilise les symboles autoconcord 'ut' et 'sgpl' pour le lemme :

<pardef n="abe__n" c="autoconcord:ut,sgpl">
  <e>       <p><l></l>          <r><s n="n"/><s n="ut"/><s n="sg"/><s n="ind"/></r></p></e>
  <e>       <p><l>n</l>         <r><s n="n"/><s n="ut"/><s n="sg"/><s n="def"/></r></p></e>
  <e>       <p><l>r</l>         <r><s n="n"/><s n="ut"/><s n="pl"/><s n="ind"/></r></p></e>
  <e>       <p><l>rne</l>       <r><s n="n"/><s n="ut"/><s n="pl"/><s n="def"/></r></p></e>
</pardef>
...

<e lm="afbrydelse">      <i>afbrydelse</i><par n="abe__n"/></e>

Qu'est ce que ça fait ?[edit]

Autoconcord va essayer de faire concorder les symboles autoconcord du dictionnaire de gauche (nt,sp) avec ceux du dictionnaire de droite (ut,sgpl). Cela se fait en associant un par un : nt-ut et sp-sgpl. Alors il cherche dans le dictionnaire bilingue les paradigmes avec les commentaires spéciaux autoconcord "autoconcord:nt-ut" et "autoconcord:sp-sgpl" :

<pardef n="_nt_ut" c="autoconcord:nt-ut">
  <e>       <p><l><s n="nt"/></l><r><s n="ut"/></r></p></e>
</pardef>

<pardef n="_sp_sgpl" c="autoconcord:sp-sgpl">
  <e r="LR"><p><l><s n="sp"/><s n="ind"/></l><r><s n="ND"/><s n="ind"/></r></p></e>
  <e r="RL"><p><l><s n="sp"/><s n="ind"/></l><r><s n="sg"/><s n="ind"/></r></p></e>
  <e r="RL"><p><l><s n="sp"/><s n="ind"/></l><r><s n="pl"/><s n="ind"/></r></p></e>
  <e>       <p><l><s n="sg"/><s n="def"/></l><r><s n="sg"/><s n="def"/></r></p></e>
  <e>       <p><l><s n="pl"/><s n="def"/></l><r><s n="pl"/><s n="def"/></r></p></e>
</pardef>

et alors il va changer l'entrée du dictionnaire bilingue de

<e>

<l>avbrott</l><r>afbrydelse</r>

</e>

pour inclure les paradigmes autocondord dans le dictionnaire bilingue :

 <e><p><l>avbrott<s n="n"/></l><r>afbrydelse<s n="n"/></r></p><par n="_nt_ut"/><par n="_sp_sgpl"/></e>


Note: Le préfixe _ dans les noms pardef n'a pas de signification spéciale, c'est juste pour pouvoir les distinguer. Les noms pardef utilisés pour autoconcord peuvent être quelconques.

Variations[edit]

Quelques paradigmes autocondord ne sont pas vraiment utiles à insérer. Par exemple sp-sp et sgpl-sgpl sont triviaux. Vous pouvez éviter l'insertion de ces paradigmes en ajoutant '/omit à ces paradigmes dans le dictionnaire bilingue :

<pardef n="_sgpl_sgpl" c="autoconcord:sgpl-sgpl/omit">
  <e>       <i></i></e>
</pardef>

<pardef n="_sp_sp" c="autoconcord:sp-sp/omit">
  <e>       <i></i></e>
</pardef>

Si vous voulez 'développer en ligne' un paradigme, c'est à dire, avoir les symboles des paradigmes étendus directement dans l'entrée, rajoutez /expand au commentaire autoconcord :

<pardef n="_nt_ut" c="autoconcord:nt-ut/expand">
  <e>       <p><l><s n="nt"/></l><r><s n="ut"/></r></p></e>
</pardef>

Alors l'entrée du dictionnaire bilingue corrigé sera :

 <e><p><l>avbrott<s n="n"/><s n="nt"/></l><r>afbrydelse<s n="n"/><s n="ut"/></r></p><par n="_sp_sgpl"/></e>

Notez que les paradigmes développables en ligne doivent avoir exactement une entrée.

Le paramètre -replace[edit]

Pendant le traitement des entrées du dictionnaire bilingue autoconcord va d'abord détruire tous les paradigmes et les symboles à replacer (traditionnellement les symboles de genre comme m, f, nt et ut). C'est pour supporter les mises en ligne et expansions des symboles comme expliqué ci-dessus.

Le paramètre -replace spécifie quels symboles devraient être supprimés s'ils apparaissent dans une entrée. Les valeurs par défaut sont 'm,f,mf,ut,nt,un'.

Si vous êtes le malheureux propriétaire d'une paire de langues dans laquelle vous devez maintenir la balise de l'adjectif synthétique (<sint>) dans le dictionnaire bilingue, vous devriez écrire des règles autoconcord pour fixer ça (par exemple ajouter/supprimer le <sint> dans le dictionnaire bilingue automatiquement). Dans ce cas vous devriez i.a.(?) passer -replace sint comme paramètre.

Invocation[edit]

Utilisation : apertium-dixtools autoconcord [-symbole(s)_préfixe] [-symboles_remplacement]
              [-leftMon unilingue1.dix] [-rightMon unilingue2.dix] dict_bilingue.dix [sortie.dix]
autoconcord -prepare [-leftMon unilingue1.dix] [-rightMon unilingue2.dix] dict_bilingue.dix

Fait automatiquement en sorte que les symboles (genre, nombre, ...) du dictionnaire bilingue
concordent avec les dictionnaires unilingues. Dans les cas où la concordance ne fait pas de
doute, cela peut être résolu automatiquement.
 -leftMon et -rightMon spécifient les noms des fichiers dictionnaires unilingues. S'ils ne
  sont pas spécifiés ils peuvent être devinés à partir du schéma de nommage par défaut
 -prefix fait concorder '''seulement''' les entrées commençant par cette liste de symboles
  séparés par des virgules. Défaut : -prefix n
 -replace Remplace (supprime) ces symboles durant le traitement. Défaut : m,f,mf,ut,nt,un
 -prepare essaie de détecter et d'insérer les données autoconcord dans les dictionnaires unilingues 

Il y a aussi plusieurs options génériques.

Si vous ne précisez pas de nom de fichier de sortie, le nouveau dictionnaire bilingue sera écrit à l'endroit de l'original avec un suffixe '.new'.

Quand vous l'utilisez, c'est une bonne idée de formater d'abord votre dictionnaire :

$ apertium-dixtools format apertium-sv-da.sv-da.dix apertium-sv-da.sv-da.dix.formatted

Vérifier si le format est correct :

$ diff apertium-sv-da.sv-da.dix apertium-sv-da.sv-da.dix.formatted | less

Ensuite faire autoconcord :

$ mv apertium-sv-da.sv-da.dix.formatted apertium-sv-da.sv-da.dix
$ apertium-dixtools autoconcord apertium-sv-da.sv-da.dix

Et vérifiez si les corrections autocondord sont correctes :

$ diff apertium-sv-da.sv-da.dix apertium-sv-da.sv-da.dix.new | less

Travailler avec des classes de mots autres que les noms[edit]

Le fonctionnement par défaut consiste à ne traiter que les entrées des noms dans le dictionnaire bilingue (-prefix n). Pour traiter fex(?) à la fois les noms et les adjectifs utilisez -prefix n,adj

Préparation d'une paire de langue pour utiliser autoconcord[edit]

L'écriture à la main de commentaires autoconcord dans les paradigmes peut prendre du temps. Si vous ne voulez pas le faire à la main, dixtools peut faire du travail pour vous.

Voici un exemple sur la manière de le faire

$ apertium-dixtools autoconcord -prepare -prefix n -replace m,f,mf,ut,nt,NUMBER:sgpl{sg+pl},NUMBER:sp apertium-sv-da.sv-da.dix

Comme la commande est très rarement utilisée vous pouvez vouloir vérifier le code source, et peut être même le modifier. Sa méthode prepareBidixAndMonodixes() dans le fichier AutoconcordBidix.java.