Autoconcord (français)
Contents
Faire concorder les dictionnaires bilingues avec les dictionnaires unilingues
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 ?
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 ?
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
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
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
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
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
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.