Hectoralos/GSOC 2019 final report

From Apertium
Revision as of 14:32, 27 August 2020 by Hectoralos (talk | contribs) (Undo revision 72792 by Hectoralos (talk))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Introducció[edit]

Aquest document descriu el treball realitzar per Hèctor Alòs en el marc del Google Summer of Code 2019. Han supervisat el projecte Marc Riera i Xavi Ivars.

Pujades (commits)[edit]

Tots els commits del projecte poden veure's en aquesta pàgina.

Objectius i pla de treball[edit]

Els objectius i el pla de treball estan descrits en la proposta que vaig fer

S’ha tractat de millorar dos traductors existents: el català-italià (primera meitat del projecte) i el català-portuguès (segona meitat). En tots dos casos, es tracta dels dos sentits de la traducció. Això fa que per al primer parell s’hagi desenvolupat el traductor de català a italià, ja que fins ara només existia el d'italià a català. En el cas del portuguès, es va demanar de generar tant portuguès europeu (que és bàsicament el que s'utilitza també a les excolònies portugueses d'Àfrica i Àsia), com brasiler, quan fins ara només es generava el primer. A més, hi ha la complicació afegida del canvi ortogràfic de 1990 que afecta sobretot, però no només, al portuguès europeu. Els sistemes actuals a Apertium contemplaven només les formes antigues. El problema, però, és que el canvi, avui dia, s’aplica només parcialment a Portugal, i gens a Angola. En conseqüència, es va decidir de generar tres variants del portuguès: l'europea posterior al canvi ortogràfic (que és la varietat «per defecte»), l'europea anterior al canvi i la brasilera posterior al canvi ortogràfic.

Desenvolupament del projecte[edit]

Les tretze setmanes del projecte s’ha dividit en set per al parell italià-català i sis per al portuguès-català. La raó de posar una setmana mes al primer parell ha estat la necessitat de crear una direcció, com qui diu, des de zero (tot i que, evidentment, s’han reutilitzat moltes coses de traductors anteriors). Donat que el meu coneixement del català és molt millor que el de les altres dues llengües, en cada meitat del projecte primer he treballat sobretot en la direcció al català i, en la segona meitat de cada part, en la direcció des del català. De tota manera, totes dues direccions estan molt interrelacionades.

En les setmanes prèvies al GSoC pròpiament dit, he baixat les traduccions a l’italià i al portuguès del Viccionari català. També, Jaume Ortolà ha tingut l’amabilitat, com en altres ocasions, d’extreure de LanguageTool els noms, adjectius i adverbis italians i portuguesos en format ltoolbox, a més d’una llista de verbs. Això ha facilitat, i molt, la inclusió de paraules en els diccionaris, especialment en el cas portuguès, en què el nombre de paraules extretes de LanguageTool ha estat enorme. Per exemple, en les traduccions del Viccionari he trobat força errors, sobretot ortogràfics i de picatge, del català a l’italià, però justament la llista de paraules de LanguageTool n’ha facilitat la supervisió.

A continuació explico el desenvolupament de les dues parts del projecte. Una visió numèrica de l’evolució del desenvolupament setmana a setmana pot veure’s aquí

Català-italià[edit]

Els problemes d’aquest parell ha vingut sobretot del costat italià, en què, fins ara, només s’havien publicat els parells italià-català i italià-sard. Tots dos han estat desenvolupats molt ràpidament, cosa que s’ha notat molt per un diccionari monolingüe italià relativament reduït i, sobretot, molts problemes en la desambiguació morfològica de l’italià. La millora d’aquesta desambiguació mitjançant Constraint Grammar ha ocupat una part considerable del treball. A més, en ser el primer parell que genera italià desenvolupat fins al nivell de poder ser estable, s’han inclòs algunes regles al post-generador italià, que no és trivial (encara en falten algunes, en particular per a les sigles). En essència, però, ja estava fet. La feina principal, que ha ocupat la meitat o més del temps, ha estat l’extensió del diccionari bilingüe.

A més d’això, en la direcció italià-català, s’han incrementat molt les regles de transferència i s’han afegit centenars de regles de selecció lèxica.

Per a la nova direcció català-italià s’han reutilitzat a bastament recursos dels parells sard-italià i occità-francès, tant en les regles de transferència com en les de selecció lèxica. És per això que hi ha sensiblement més regles de selecció lèxica del català a l’italià que en sentit invers.

apertium-anàfora[edit]

En les dues últimes setmanes del GSoC, paral·lelament al treball sobre el parell portuguès-català, he tingut l'oportunitat de testejar el nou mòdul apertium-anaphora, el qual ha estat desenvolupat alhora en el marc del GSoC. Ha estat del tot experimental, intentant utilitzar el nou mòdul per a trobar el referent del determinant possessiu català el seu. Si el mòdul indicava que el referent era singular, es triava el determinant il suo (amb la concordança de gènere que s'escaigui); en canvi, si el referent era plural, es triava il loro.

Els resultats, però, no han estat satisfactoris. És probable que, amb l'experiència que n'hem tret d'aquest primer intent, una nova configuració en millori els resultats. En particular,

  • la configuració triada donava poca prioritat com a possible antecedent als noms precedits per preposició, però hem trobat que en força casos de manca d'encert justament l'antecedent anava precedit de preposició;
  • l'antecedent a vegades era el subjecte elidit de la frase actual o l'anterior, la qual cosa fa que trobar el nom o el pronom antecedent sigui pràcticament inabordable; potser es pot provar quins resultats s'obtenen si se li diu al mòdul que l'antecedent pot ser un verb.

Per altra banda, una millora d'aquest tipus posa en evidència algunes mancances que tenim fins ara:

  • L'ús d'una eina com aquesta fa més important incorporar més i més antropònims als diccionaris, ja que són possibles antecedents. Seguint l'esperit de la distribució de tasques al llarg de la cadena de processos d'Apertium, l'eina no té en compte les paraules desconegudes com a potencials antecedents.
  • Possiblement convindrà "encapsular" les seqüències de nom i cognom. En una frase (no gaire catalana) com
 Joana Pujol mira el seu rellotge

"Joana" i "Pujol" competeixen en igualtat de condicions com a possibles antecedents. La tria de l'un o l'altre resulta atzarosa. Però només si es tria "Joana" es farà la tria de her en anglès en comptes de his.

  • Considerem la frase següent:
 Os cavalos usam uma elaborada linguagem corporal para comunicar uns com os outros, a qual os humanos podem aprender a compreender

En la traducció al català la paraula femenina linguagem esdevé el nom masculí llenguatge. Això fa que el pronom relatiu a qual hagi de canviar a el qual. Però, com veiem, refiar-nos massa del mòdul és perillós. Un problema semblant el tenim, en el català-italià (i en l'occità-francès, del qual ha heretat les regles en t2x) quan es tracta de mantenir l'acord entre subjecte i atribut. Les regles de t2x només canvien el gènere del suposat atribut si el suposat subjecte ha canviat de gènere de la llengua font a la llengua destí. En la versió actual d'apertium-anaphora no tenim accés a la morfologia de l'antecedent putatiu en la llengua font, per la qual cosa no podríem fer la comprovació que ara mateix fem en les regles de transferència estructural.

(Totes aquestes qüestions han estat, lògicament, discutides amb el desenvolupador del mòdul, Tanmai Khanna, al llarg d'un extens intercanvi de missatges electrònics.)

Dit tot això, en cas de funcionar, apertium-anaphora seria un mòdul molt interessant per millorar la tria de, per exemple, possessius i alguns relatius (per exemple de el qual/la qual/els quals/les quals en traduir el cuyo castellà o el cujo portuguès). Tanmateix, el mòdul no està pensat per a abordar el problema de tria del pronom subjecte a l'hora de traduir, per exemple, del català al francès o l'anglès.

Català-portuguès[edit]

La situació inicial d’aquest parell era molt diferent de l’anterior. Primerament, sobre el portuguès s’ha fet molta feina a Apertium, amb parells estables portuguès-castellà, portuguès-gallec i portuguès-català. Contràriament a l’italià, la desambiguació del portuguès funcionava molt bé i, per al parell català-portuguès, estaven definides unes 150 regles de transferència en una direcció i més de 300 en l'altra, cosa que ha fet que n’hagi hagut d’afegir ben poques. En conseqüència, el parell català-portuguès continua tenint la transferència estructural en un sol pas. L’ús pràctic del traductor no ha mostrat que sigui prioritari passar-lo al model de tres passos (o més) que utilitza el català-italià. I passar tantes regles d'un a tres nivells resulta laboriós: massa per a un projecte de poques setmanes, si els resultats no són palpables.

La feina en aquest parell, doncs, s’ha concentrat en els diccionaris i les regles de selecció lèxica. Del costat portuguès-català s’han reutilitzat algunes regles de selecció lèxica del parell castellà-català. En tot cas, el nombre d’aquestes regles és sensiblement inferior a l’italià, en part perquè la proximitat lingüística entre català i portuguès és més gran i, en part, perquè inicialment el parell català-portuguès tenia un diccionari bilingüe més extens, amb selecció lèxica resolta, sobretot, amb etiquetes r="RL" i r="LR" dins del diccionari bilingüe, així com algunes regles de transferència.

Quant al diccionari monolingüe portuguès, d’una banda s’han afegit desenes de milers de nous lemes i, d’una altra, s’han introduït distincions per a cadascuna de les tres variants. Hi ha més de 3500 lemes etiquetats com a específics d’una o dues variants.

El mateix s’ha fet amb el diccionari bilingüe, en què les entrades han passat de 9000 (sense comptar noms propis) a gairebé 26.000 (també, sense comptar noms propis). Unes 2300 entrades estan etiquetades com a específiques o preferibles d’una o dues de les variants.

Les noves regles de l’Acordo Ortográfico de 1990 permeten, a vegades, dobles ortografies, especialment en la variant europea. Per exemple, mentre que «sector» és l’única forma acceptada per a la variant europea anterior a l’Acordo i «setor» ho és per a la variant brasilera, totes dues formes s’accepten ara per a la variant europea. Això fa que en el diccionari monolingüe tinguem:

   <e lm="sector" v="pt pt_pre1990">                 <i>sector</i><par n="amor__n"/></e>
   <e lm="setor" v="pt br">                          <i>setor</i><par n="amor__n"/></e>

(on pt és la variant europea segons l’Acordo de 1990, pt_pre1990 la variant europea anterior i br la variant brasilera posterior a l’Acordo)

Les variants brasileres que han quedat obsoletes amb el canvi ortogràfic estan indicades com a no generables:

 <e r="LR" lm="qüestão">                           <i>qüest</i><par n="aceitaç/ão__n"/></e>

Per als canvis ortogràfics ha resultat bàsic el Portal da Língua Portuguesa de l'Instituto de Linguística Teórica e Computacional, mentre que el Vocabulário Ortográfico Comum da Língua Portuguesa ha servit de suport.

Portuguès brasiler[edit]

El treball de generació del portuguès brasiler s’ha fet, sobretot, en els plans ortogràfic i lèxic.

Entenc que l’ús principal dels traductors d’Apertium és el de traduir articles de la Viquipèdia i notícies. Per això en tots aquests traductors el tipus de textos que he treballat són justament aquests. En el cas del portuguès, he intentat cobrir les diferències més importants de la terminologia sociopolítica que apareix en les notícies d’actualitat de Portugal i el Brasil (amb diferents termes per a «alcalde», «ajuntament» i «eleccions municipals», per exemple). En canvi, he deixat de costat la introducció de la gran quantitat de canvis que implica el canvi de segona persona a tercera en traduir al portuguès brasiler. Això implica desenes de canvis en les regles de transferència, tal com es veu en el parell castellà-portuguès. Bàsicament, es tractaria de copiar aquestes diferències i anar-les provant, tenint en compte que les regles no són idèntiques en català-portuguès i castellà-portuguès a causa, sobretot, del pretèrit perfet perifràstic del català. Simplement, no apareixen gairebé mai verbs en segona persona en textos enciclopèdics o periodístics. He preferit dedicar el poc temps del projecte a qüestions que he considerat més productives, com l’ampliació dels diccionaris i la comprovació empírica de la qualitat del diccionari traduint nombroses notícies d’actualitat (sobretot del portuguès al català, tant de diaris brasilers com portuguesos).

Cal esmentar que hi ha casos en què una mateixa paraula s’ha d’interpretar de maneres diferents en un context de portuguès europeu i brasiler. Per exemple «estrelar» és «fregir (un ou)» en el primer cas i «protagonitzar (un paper)» en el segon. És possible que afegir un pas inicial en el pipeline que determinés de quina variant del portuguès estem traduint ajudi a fer millor la selecció lèxica, però no m’ha semblat necessari fins ara (ni s’ha considerat necessari res de semblant per a traduir des del català).

Algunes xifres[edit]

Parell català-italià Parell català-portuguès
Diccionari bilingüe Diccionari bilingüe

Entrades totals: 45.165
Noms propis: 21.946
Resta d’entrades: 23.219

Entrades totals: 47.754
Noms propis: 21.925
Resta d’entrades: 25.829

italià > català portuguès > català

Regles de selecció lèxica: 510 + 77 crides a macros
Regles de transferència estructural: 113 (t1x) + 14 (t2x) + 1 (t3x)
Cobertura «ingènua»: 91,2%
WER: 15,7%

Regles de selecció lèxica: 283 + 65 crides a macros
Regles de transferència estructural: 177
Cobertura «ingènua»: 91,4%
WER: 14,0%

català > italià català > portuguès

Regles de selecció lèxica: 282 + 79 crides a macros
Regles de transferència estructural: 110 (t1x) + 19 (t2x) + 1 (t3x)
Cobertura «ingènua»: 94,7%
WER: 14,2%

Regles de selecció lèxica: 316 + 60 crides a macros
Regles de transferència estructural: 380
Cobertura «ingènua»: 94,4%

Conclusions, mancances i futures direccions de treball[edit]

El projecte demostra, una vegada més, que és possible desenvolupar ràpidament un traductor automàtic de qualitat a Apertium entre llengües estretament relacionades. Alhora mostra com de més fàcil és fer-ho a partir d’una llengua «madura» com el català, en què ja es disposa a Apertium d’un extens diccionari monolingüe, d’una desambiguació morfològica molt provada i de nombroses regles de transferència i desambiguació lèxica que es poden adaptar a noves llengües del mateix grup lingüístic. Això fa que els resultats de la traducció a partir del català semblen millors que en la direcció al català, fins i tot quan en el cas del parell català-italià la direcció del català a l’italià s’ha desenvolupat en mig GSoC.

Els traductors tenen algunes mancances destacables:

  • No hi ha canvis de verb pronominal a verb no pronominal o a la inversa en aquests parells. Per exemple «desempenhar-se» es tradueix com a «reeixir-se» i «submergir-se» com a «mergullar-se» (en comptes de «mergulhar»). Convindria afegir aquestes regles en les quatre direccions.
  • En la selecció lèxica, no resulta gens evident poder triar entre traduccions diferents en el cas de verbs transitius o intransitiu. Per exemple, en el cas del verb portuguès «mergulhar», l’ús transitiu s’ha de traduir com a «submergir», però l’intransitiu com a «submergir-se».
  • En el traductor del català a l’italià, entendre si estem davant d’un ús transitiu o intransitiu del verb és important perquè en molts casos en depèn la tria del verb auxiliar italià (essere o avere).
  • El postgenerador italià actualment produeix lo PSC en comptes de il PSC. Cal repassar com s'hi tracten sigles.
  • S’hauria de treballar més el tractament de l’article partitiu italià en les dues direccions del traductor català-italià.
  • En les traduccions al portuguès brasiler no es fa el canvi de segona a tercera persona.
  • En les traduccions al català, la tria entre el pronom «el» i «ho» no és evident i genera no pocs errors.
  • El mateix passa en les traduccions a l'italià amb la tria entre el pronom «se» i «si».
  • El portuguès tendeix a utilitzar considerablement més sovint els pronoms de subjecte que el català. Ara mateix, simplement calquem la llengua d’origen.
  • Un problema típic en els traductors d’Apertium són els topònims. El més habitual és que no es reconeguin com a tals, de manera que qualsevol localitat del tipus «Sant Joan de les Fonts» es tradueix paraula a paraula. Alguns topònims com «Malgrat», «Igualada» i «Figueres» s’inclouen de seguida, però, això és només la punta de l’iceberg. Tenir una llista de municipis preparada per a carregar en fer un nou traductor del català seria molt útil. Però tenim exactament el mateix problema amb els topònims portuguesos i italians. Els resultats són a vegades bastant ridículs. Però no es tracta només d’això. Tenir una llista de topònims fa que la selecció lèxica de la preposició «a» o «en» per al català sigui molt millor.

Agraïments[edit]

Ha estat un plaer treballar molt intensivament sobre aquests traductors. Trobo que, gràcies al codi obert, posem a disposició de la gent recursos i eines que tenen múltiples utilitats.

El que fem a Apertium és una feina col·lectiva, en què tota millora és el resultat de feina de molta gent. Voldria, però, agrair particularment als meus mentors, el seu suport i, particularment a en Marc pels seus comentaris. Xavi Ivars, Tino Didriksen i Kevin Unhammer m'han solucionat diferents problemes tècnics. Estic especialment en deute amb Jaume Ortolà que, com abans ja m'havia fet per al francès, ha generat de forma quasi miraculosa enormes diccionaris monolingües d'italià i portuguès, sense els quals els resultats d'aquest projecte serien molt i molt més fluixos. També li agraeixo diferents comentaris a alguns dels meus commits a apertium-cat. Quant al portuguès, he comptat amb l'ajuda de Suso Moinhos, Fernando Pita i Roger Prieto. Amb l'italià, he comptat en tot moment amb l'ajuda de Gianfranco Fronteddu, que m'ha respost a nombrosos dubtes lingüístics i ha estat posteditant traduccions automàtiques a l'italià en diferents etapes del desenvolupament. Els seus detallats comentaris d'aquestes proves han estat de gran utilitat.